Cosa sono le pipe nel terminale Linux
Come collegare l'output di un comando con l'input di un altro senza file intermedi.
Una pipe (|) collega l'output di un comando
direttamente con l'input di un altro — senza salvare nulla in un file
intermedio.
Esempio semplice
ls -l | grep ".txt"
ls -l elenca i file; invece di mostrarli tutti a
schermo, quell'elenco viene "incanalato" verso grep, che
filtra solo le righe contenenti ".txt". Il risultato finale è solo
ciò che ti interessa, non tutto il passaggio intermedio.
Concatenare più pipe
cat file.log | grep "errore" | wc -l
Mostra il contenuto di un file, filtra solo le righe con "errore", e conta quante ce ne sono in totale — tre passaggi concatenati in una sola riga, senza file temporanei.
Consiglio: pensa a ogni pipe come a un nastro trasportatore tra due macchine — ciò che esce dall'una entra direttamente nella successiva, senza dover passare per un vassoio intermedio (un file salvato).
Differenza con la redirezione (>)
La pipe (|) collega un comando con UN ALTRO comando.
La redirezione (>) salva l'output di un comando in un
FILE. Sono concetti collegati ma distinti — facile confonderli
all'inizio.
Domande frequenti
Posso concatenare più di due comandi con le pipe?
Sì, non c'è un limite pratico — puoi concatenare tutti i comandi che ti servono, ognuno che elabora l'output del precedente.
Una pipe è lo stesso che salvare l'output in un file?
No, sono concetti distinti. La pipe (|) collega un comando con un altro direttamente; la redirezione (>) salva l'output in un file sul disco.