Skip to content

Latest commit

 

History

History
50 lines (35 loc) · 3.01 KB

File metadata and controls

50 lines (35 loc) · 3.01 KB

🔗 Pipe

O conceito de "pipe" (tubulação) no Bash e em outros shells Unix-like é uma das funcionalidades mais poderosas e úteis para encadear comandos e scripts, permitindo a construção de operações complexas a partir de comandos simples. Um pipe passa a saída (stdout) de um comando como entrada (stdin) para outro, formando uma cadeia de processamento de dados sequencial que é tanto eficiente quanto flexível.

🔗 Funcionamento Básico dos Pipes

A operação de pipe é representada pelo caractere |. Quando você usa esse operador entre dois comandos, o shell redireciona a saída do primeiro comando diretamente para a entrada do segundo. Isso permite combinar as funcionalidades de diversos programas de forma elegante e eficiente.

💡 Exemplos práticos de uso

🔍 Filtrando e processando texto

Uma das utilizações mais comuns de pipes é na manipulação de texto com grep, sort, awk e sed. Por exemplo:

cat arquivo.txt | grep "erro" | sort | uniq -c

🔹 Neste exemplo:

  • 📁 cat arquivo.txt lê o conteúdo do arquivo.
  • 📜 grep "erro" filtra linhas que contêm a palavra "erro".
  • 🔍 sort ordena as linhas filtradas.
  • 📌 uniq -c conta e remove linhas duplicadas, deixando uma linha para cada ocorrência única com a contagem de ocorrências.

🔹 Monitoramento de Logs

Pipes são extremamente úteis para monitorar arquivos de log em tempo real:

tail -f log.txt | grep "WARNING"

Aqui, tail -f lê as últimas linhas do arquivo de log syslog e continua lendo novas linhas à medida que são adicionadas ao arquivo, enquanto grep "WARNING" filtra essas linhas para mostrar apenas eventos relacionados a avisos.

🔹 Vantagens dos Pipes

▫️ ▫️ Modularidade:

Cada comando em um pipeline faz sua tarefa específica e passa seus dados para o próximo comando. Isso adere ao princípio Unix de "fazer uma coisa e fazê-la bem", permitindo que você combine ferramentas simples de maneiras poderosas.

▫️ ▫️ Eficiência:

Ao usar pipes, os dados são processados em fluxo (streaming), o que significa que não é necessário armazenar grandes quantidades de dados intermediários em disco ou em memória.

▫️ ▫️ Flexibilidade:

Pipes permitem a construção de cadeias de comandos que podem realizar tarefas complexas de processamento de dados com poucas linhas de código.

🔹 Considerações ao Usar Pipes

▫️ ▫️ Falhas no Pipeline:

Se um comando em um pipeline falha, isso pode afetar toda a cadeia. Veja fluxos/robustez.md (set -o pipefail).

▫️ ▫️ Custos de Performance:

Embora eficientes, pipes podem ser custosos em termos de performance se não forem bem estruturados, especialmente se cada passo do pipeline processar grandes volumes de dados.

Aprofundar: texto/manipulacao.md · Exercícios: exercicios.md · PLANO-EXERCICIOS.md

🔙 Voltar ao índice