O que são os pipes no terminal Linux
Como ligar a saída de um comando à entrada de outro sem ficheiros intermédios.
Um pipe (|) liga a saída de um comando diretamente à
entrada de outro — sem guardar nada num ficheiro intermédio.
Exemplo simples
ls -l | grep ".txt"
ls -l lista os ficheiros; em vez de os mostrar todos
no ecrã, essa lista é "canalizada" para o grep, que
filtra só as linhas que contenham ".txt". O resultado final é só o que
lhe interessa, não tudo o intermédio.
Encadear vários pipes
cat ficheiro.log | grep "erro" | wc -l
Mostra o conteúdo de um ficheiro, filtra só as linhas com "erro", e conta quantas há no total — três passos encadeados numa única linha, sem ficheiros temporários.
Dica: pense em cada pipe como uma correia transportadora entre duas máquinas — o que sai de uma entra diretamente na seguinte, sem ter de passar por um tabuleiro intermédio (um ficheiro guardado).
Diferença em relação ao redirecionamento (>)
O pipe (|) liga um comando com OUTRO comando. O
redirecionamento (>) guarda a saída de um comando num
FICHEIRO. São conceitos relacionados mas distintos — fácil de
confundir ao início.
Perguntas frequentes
Posso encadear mais de dois comandos com pipes?
Sim, não há um limite prático — pode encadear tantos comandos quantos precisar, cada um a processar a saída do anterior.
Um pipe é o mesmo que guardar a saída num ficheiro?
Não, são conceitos distintos. O pipe (|) liga um comando com outro diretamente; o redirecionamento (>) guarda a saída num ficheiro no disco.