Le pipe di Linux spiegate in modo semplice

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 efficiente da un comando all’altro. Il vantaggio: i processi complessi vengono semplificati poiché i singoli comandi diventano a tutti gli effetti un unico comando. Scoprite come funzionano le pipe di Linux nel dettaglio e perché questo comando risulta così utile.

Registrazione dominio

Più di un semplice nome.

Registra il tuo dominio con IONOS e approfitta di tutte le nostre funzionalità.

E-Mail
SSL Wildcard
Supporto 24/7

Che cosa sono le pipe di Linux?

Il termine pipe deriva dalla parola inglese “pipeline” che tra i vari significati ha anche quello di “tubatura”. In ambito informatico una pipe è un flusso di dati eseguito tra due processi, sia che siano strettamente 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 suddividere i problemi di grandi dimensioni in sottoproblemi più piccoli e avere così migliore visibilità.

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 utilizzate soltanto tra due processi strettamente correlati, le pipe con nome o FIFO (ovvero basate sul principio del “First In – First Out”) rendono possibile la comunicazione tra due processi non collegati tra loro e che possono anche trovarsi su computer diversi all’interno della stessa rete. Contrariamente alle pipe senza nome, le pipe con nome consentono una comunicazione bidirezionale e non soltanto unidirezionale (un processo scrive, mentre l’altro legge).

N.B.

La connessione logica dei comandi non rappresenta nulla di insolito in ambito informatico. Ad esempio, con il comando In di Linux è possibile creare un collegamento a un file o una cartella in modo estremamente semplice. Scoprite quali sono i comandi Linux più importanti che dovete assolutamente conoscere.

La sintassi delle pipe Linux e alcuni esempi di utilizzo

Per poter utilizzare le pipe in Linux nel modo corretto è utile capire come prima cosa la sintassi. Qui di seguito vediamo innanzitutto 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 riferimento a Ubuntu, installazione Linux molto comune, ottenibile gratuitamente e regolarmente aggiornata.

Comando-1 | Comando-2 | …| Comando-N

Come vedete qui sopra, la sintassi della pipe senza nome è estremamente semplice. È composta dal simbolo “|”, compreso tra due comandi. Nell’esempio qui sotto la pipe è valida soltanto temporaneamente.

$ 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 determinata cartella, più esattamente ls -al. Per prima cosa i nomi dei file vengono consultati da contents.txt attraverso 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 effettuata una ricerca delle stringhe nei file di log e di codice. Se volete cercare un file Linux in modo semplice, affidatevi 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 spegnimento del sistema o a quando il comando viene eliminato. La sintassi corretta è la seguente:

mkfifo <pipe-name>

oppure

mknod p <pipe-name>

Immaginatevi di avere un processo che viene eseguito in un terminale e vi fornisce un risultato; ora voi volete riutilizzare quest’ultimo inoltrandolo 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 utilizzate il simbolo “>”. Per riportare un input standard di un qualsiasi comando all’interno di un altro processo utilizzate il simbolo “<”. Nell’esempio seguente rinominate 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 servendovi di una pipe con o senza nome.

Consiglio

Usate il sistema operativo Linux e state cercando un pacchetto di web hosting onnicomprensivo, con il quale scrivere il codice di programmazione per intero o che metta a vostra disposizione un editor per siti web intuitivo? L’hosting Linux di IONOS vi offre delle prestazioni scalabili, una protezione DDoS, georidondanza e molte altre funzionalità.