🐚 Cap 03: Shell Scripting Avançado, Pipes POSIX, Filtros Unix e Automação
🗺️ 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>&1para 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'