🗺️ A Filosofia Unix e o Encadeamento de Streams com Pipes

flowchart LR
    SRC["Arquivo de Logs / Entrada (stdin)"]
    --> |"Pipe '|'"| GREP["grep 'ERROR'\n(Filtragem)"]
    GREP --> |"Pipe '|'"| SED["sed 's/.*user=/user_/'\n(Transformação)"]
    SED --> |"Pipe '|'"| AWK["awk '{print $1, $3}'\n(Processamento Colunar)"]
    AWK --> |"Pipe '|'"| SORT["sort | uniq -c | sort -nr\n(Agregação e Frequência)"]
    SORT --> |"Redirecionamento '>'"| OUT["Relatório Final (stdout) ⚡"]

    style SRC fill:#ede7f6,stroke:#512da8,stroke-width:2px
    style GREP fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
    style SED fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
    style AWK fill:#fff9c4,stroke:#fbc02d,stroke-width:1.5px
    style SORT fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
    style OUT fill:#00897b,stroke:#004d40,stroke-width:2px,color:#ffffff

📖 Fundamentos e Aplicação

A Filosofia Unix (estabelecida por Ken Thompson e Doug McIlroy) preconiza: “Escreva programas que façam apenas uma coisa e a façam bem. Escreva programas que trabalhem juntos através de streams de texto universais”.

1. Streams Padrão e Redirecionamentos POSIX

  • stdin (0): Entrada padrão (<, <<EOF).
  • stdout (1): Saída padrão (>, >>).
  • stderr (2): Saída de erros (2>, 2>&1 para redirecionar erros para stdout).

2. O Arsenal de Ferramentas de Linha de Comando:

  • grep / ripgrep (rg): Busca por padrões regex ultrarrápida.
  • sed: Editor de fluxo para substituição e manipulação de texto não interativa.
  • awk: Linguagem completa de processamento de texto estruturado em colunas e geração de relatórios.
  • fzf: Localizador difuso interativo (Fuzzy Finder) para navegação veloz.
  • xargs: Converte linhas de texto em argumentos de linha de comando paralelizáveis (xargs -P 4).

3. Shell Scripting Profissional com set -euo pipefail

Scripts robustos em Bash devem sempre iniciar com o modo estrito para evitar execuções perigosas em caso de falha de comando intermediário:

#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'