In Linux, la pipe
comando ti consente di inviare l'output di un comando a un altro. Le tubazioni, come suggerisce il termine, possono reindirizzare l'output standard, l'input o l'errore di un processo a un altro per un'ulteriore elaborazione.
La sintassi per la pipe
o unnamed pipe
il comando è il |
carattere tra due comandi qualsiasi:
Command-1 | Command-2 | …| Command-N
Qui non è possibile accedere alla pipe tramite un'altra sessione; viene creato temporaneamente per accogliere l'esecuzione di Command-1
e reindirizzare lo standard output. Viene eliminato dopo l'esecuzione riuscita.
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Nell'esempio sopra, contents.txt
contiene un elenco di tutti i file in una particolare directory, in particolare l'output di ls -al
comando. Prima grep
i nomi dei file con la parola chiave "file" da contents.txt
tramite piping (come mostrato), quindi l'output del cat
il comando viene fornito come input per grep
comando. Successivamente, aggiungiamo le tubazioni per eseguire awk
comando, che mostra la colonna 9 dall'output filtrato da grep
comando. Possiamo anche contare il numero di righe in contents.txt
usando il wc -l
comando.
Una named pipe può durare fino a quando il sistema è attivo e funzionante o fino a quando non viene eliminata. È un file speciale che segue il meccanismo FIFO (first in, first out). Può essere utilizzato proprio come un normale file; cioè, puoi scriverci, leggere da esso e aprirlo o chiuderlo. Per creare una named pipe, il comando è:
mkfifo <pipe-name>
Questo crea un file pipe con nome che può essere utilizzato anche su più sessioni di shell.
Un altro modo per creare una pipe denominata FIFO consiste nell'usare questo comando:
mknod p <pipe-name>
Per reindirizzare un output standard di qualsiasi comando a un altro processo, utilizzare il >
simbolo. Per reindirizzare un input standard di qualsiasi comando, usa il <
simbolo.
Come mostrato sopra, l'output di ls -al
il comando viene reindirizzato a contents.txt
e inserito nel file. Allo stesso modo, l'input per tail
il comando è fornito come contents.txt
tramite il <
simbolo.
Qui abbiamo creato una named pipe, my-named-pipe
e reindirizzato l'output di ls -al
comando nella pipe denominata. Possiamo aprire una nuova sessione di shell e cat
il contenuto della named pipe, che mostra l'output di ls -al
comando, come precedentemente fornito. Si noti che la dimensione della pipe denominata è zero e ha una designazione di "p".
Quindi, la prossima volta che lavorerai con i comandi sul terminale Linux e ti ritrovi a spostare i dati tra i comandi, si spera che una pipe renda il processo semplice e veloce.