Le pipe sono un potente strumento del sistema operativo open source Linux. Le pipe su Linux vi servono infatti per poter eseguire una serie di comandi che si basano su un set di dati e che devono essere eseguiti in sequenza o per spostare i dati in modo ef­fi­cien­te da un comando all’altro. Il vantaggio: i processi complessi vengono sem­pli­fi­ca­ti poiché i singoli comandi diventano a tutti gli effetti un unico comando. Scoprite come fun­zio­na­no le pipe di Linux nel dettaglio e perché questo comando risulta così utile.

Registra il tuo dominio
  • Domain Connect gratuito per una con­fi­gu­ra­zio­ne facile del DNS
  • Cer­ti­fi­ca­to SSL Wildcard gratuito
  • Pro­te­zio­ne privacy inclusa

Che cosa sono le pipe di Linux?

Il termine pipe deriva dalla parola inglese “pipeline” che tra i vari si­gni­fi­ca­ti ha anche quello di “tubatura”. In ambito in­for­ma­ti­co una pipe è un flusso di dati eseguito tra due processi, sia che siano stret­ta­men­te correlati sia che non abbiano un’origine comune. Ciò significa che il risultato prodotto da un programma serve come base di partenza per un altro programma. Questo vi permette tra le altre cose di sud­di­vi­de­re i problemi di grandi di­men­sio­ni in sot­to­pro­ble­mi più piccoli e avere così migliore vi­si­bi­li­tà.

In Linux esistono due diversi tipi di pipe, le pipe senza nome o “Unnamed pipes” e le pipe con nome “Named pipes”.

Mentre le pipe senza nome o pipe anonime vengono uti­liz­za­te soltanto tra due processi stret­ta­men­te correlati, le pipe con nome o FIFO (ovvero basate sul principio del “First In – First Out”) rendono possibile la co­mu­ni­ca­zio­ne tra due processi non collegati tra loro e che possono anche trovarsi su computer diversi all’interno della stessa rete. Con­tra­ria­men­te alle pipe senza nome, le pipe con nome con­sen­to­no una co­mu­ni­ca­zio­ne bi­di­re­zio­na­le e non soltanto uni­di­re­zio­na­le (un processo scrive, mentre l’altro legge).

N.B.
La con­nes­sio­ne logica dei comandi non rap­pre­sen­ta nulla di insolito in ambito in­for­ma­ti­co. Ad esempio, con il comando In di Linux è possibile creare un col­le­ga­men­to a un file o una cartella in modo estre­ma­men­te semplice. Scoprite quali sono i comandi Linux più im­por­tan­ti che dovete as­so­lu­ta­men­te conoscere.

La sintassi delle pipe Linux e alcuni esempi di utilizzo

Per poter uti­liz­za­re le pipe in Linux nel modo corretto è utile capire come prima cosa la sintassi. Qui di seguito vediamo in­nan­zi­tut­to la struttura del comando pipe per poi passare a degli esempi utili a capire come questo vada riportato sul terminale o nella barra dei comandi.

N.B.
La nostra guida fa ri­fe­ri­men­to a Ubuntu, in­stal­la­zio­ne Linux molto comune, ot­te­ni­bi­le gra­tui­ta­men­te e re­go­lar­men­te ag­gior­na­ta.
Comando-1 | Comando-2 | …| Comando-N

Come vedete qui sopra, la sintassi della pipe senza nome è estre­ma­men­te semplice. È composta dal simbolo “|”, compreso tra due comandi. Nell’esempio qui sotto la pipe è valida soltanto tem­po­ra­nea­men­te.

$ cat contents.txt |grep file
0 Aug  9 13:55  file1
0 Aug  9 13:55  file2
0 Aug  9 13:55  file3
0 Aug  9 13:55  file4
0 Aug  9 13:55  file5
$ cat contents.txt |grep "file"|awk '{print $8}'
file1
file2
file3
file4
file5
$ cat contents.txt |wc -l
8
$

Il file contents.txt di cui sopra contiene una lista di tutti i file all’interno di una de­ter­mi­na­ta cartella, più esat­ta­men­te ls -al. Per prima cosa i nomi dei file vengono con­sul­ta­ti da contents.txt at­tra­ver­so il piping usando la parola chiave “file”, così che il risultato del comando cat possa servire come base di partenza per il comando grep. Dopodiché eseguiamo il comando awk tramite piping che mostra l’ottava colonna dei risultati filtrati del comando grep. Possiamo anche contare il numero delle righe contenute in contents.txt con il comando wc -l.

Consiglio

Con il comando grep può essere ef­fet­tua­ta una ricerca delle stringhe nei file di log e di codice. Se volete cercare un file Linux in modo semplice, af­fi­da­te­vi a questo comando.

Mentre una pipe Linux senza nome vale solo per un processo, una pipe Linux con nome serve a rendere il comando valido fino allo spe­gni­men­to del sistema o a quando il comando viene eliminato. La sintassi corretta è la seguente:

mkfifo <pipe-name>

oppure

mknod p <pipe-name>

Im­ma­gi­na­te­vi di avere un processo che viene eseguito in un terminale e vi fornisce un risultato; ora voi volete riu­ti­liz­za­re quest’ultimo inol­tran­do­lo a un secondo terminale. In questo caso una pipe con nome è di grande aiuto. Per riportare un output standard di un qualsiasi comando all’interno di un altro processo uti­liz­za­te il simbolo “>”. Per riportare un input standard di un qualsiasi comando all’interno di un altro processo uti­liz­za­te il simbolo “<”. Nell’esempio seguente ri­no­mi­na­te la pipe nel primo terminale.

$ mkfifo pipe-con-nome
$ ls > pipe-con-nome

Dunque, digitate il seguente codice nel secondo terminale per vedere il risultato finale.

$ cat < pipe-con-nome

La prossima volta che usate dei comandi nel terminale di Linux e volete spostare i dati da un comando all’altro potete farlo in maniera più facile e veloce ser­ven­do­vi di una pipe con o senza nome.

Consiglio
Usate il sistema operativo Linux e state cercando un pacchetto di web hosting on­ni­com­pren­si­vo, con il quale scrivere il codice di pro­gram­ma­zio­ne per intero o che metta a vostra di­spo­si­zio­ne un editor per siti web intuitivo? L’hosting Linux di IONOS vi offre delle pre­sta­zio­ni scalabili, una pro­te­zio­ne DDoS, geo­ri­don­dan­za e molte altre fun­zio­na­li­tà.
Vai al menu prin­ci­pa­le