GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa sono le pipe in Linux? Come funziona il reindirizzamento dei tubi?

Potresti aver usato una sintassi come cmd0 | cmd1 | cmd2 nel tuo terminale troppe volte.

Probabilmente sai anche che è il reindirizzamento della pipe che viene utilizzato per reindirizzare l'output di un comando come input per il comando successivo.

Ma sai cosa c'è sotto? Come funziona effettivamente il reindirizzamento delle pipe?

Non preoccuparti perché oggi demistificarò le pipe Unix in modo che la prossima volta che andrai ad un appuntamento con quelle fantasiose barre verticali, saprai esattamente cosa sta succedendo.

Nota:ho usato il termine Unix in alcuni punti perché il concetto di pipe (come tante altre cose in Linux) ha origine da Unix.

Pipe in Linux:l'idea generale

Ecco cosa vedrai ovunque riguardo a "cosa sono le pipe Unix?":

  • Le pipe Unix sono un meccanismo IPC (Inter Process Communication), che inoltra l'output di un programma all'input di un altro programma.

Ora, questa è la spiegazione generale che danno tutti. Voglio andare più a fondo. Riformuliamo la riga precedente in modo più tecnico togliendo le astrazioni:

  • Le pipe Unix sono un meccanismo IPC (Inter Process Communication) che accetta lo stdout di un programma e lo inoltra a stdin di un altro programma tramite un buffer.

Molto meglio. Togliere l'astrazione l'ha resa molto più pulita e precisa. Puoi guardare il diagramma seguente per capire come funziona il tubo:

Uno degli esempi più semplici del comando pipe è passare alcuni output di comando al comando grep per cercare una stringa specifica.

Ad esempio, puoi cercare file il cui nome contiene txt come questo:

Ricorda:Pipe reindirizza stdout a stdin ma non come argomento di comando

Una cosa molto importante da capire è che pipe trasferisce lo stdout di un comando a stdin di un altro ma non come argomento di comando. Te lo spiego con un esempio.

Se usi cat comando senza argomenti, per impostazione predefinita leggerà da stdin . Ecco un esempio:

$ cat
Subscribe to Linux Handbook for more articles like this
^D
Subscribe to Linux Handbook for more articles like this

Qui ho usato cat senza passare alcun file, quindi il valore predefinito è stdin . Successivamente ho scritto una riga e quindi ho usato Ctrl+d per fargli sapere che ho finito di scrivere (Ctrl+d implica EOF o End Of File). Una volta che ho finito di scrivere, cat leggere da stdin , e ha scritto proprio quella riga a stdout .

Consideriamo ora il seguente comando:

echo hey | cat

Il secondo comando NON è equivalente a cat hey . Qui, lo stdout , "hey", viene portato in un buffer e trasferito a stdin di cat . Poiché non c'erano argomenti della riga di comando, cat ha impostato per impostazione predefinita stdin per la lettura, e c'era già qualcosa nello stdin, quindi il comando cat lo ha preso e stampato su stdout .

In effetti, ho creato un file chiamato hey e ci ho inserito del contenuto. Puoi vedere chiaramente la differenza nell'immagine qui sotto:

Tipi di pipe in Linux

Esistono due tipi di pipe in Linux:

  • Pipe senza nome, dette anche pipe anonime
  • Pipe denominate

Leggi la storia completa

Il resto dell'articolo è disponibile solo per i membri LHB. Puoi iscriverti ora GRATUITAMENTE per leggere il resto di questo articolo insieme all'accesso a tutti i post riservati ai membri. Ti iscrivi anche alla nostra newsletter quindicinale Linux.

IscrivitiHai già un account?Accedi
Linux
  1. Che cos'è un comando Chown in Linux e come usarlo

  2. Pipe e reindirizzamento in Linux - Spiegazione!

  3. Cosa significa - in questo comando Linux?

  4. Come posso vedere quali sono i miei comandi Linux più usati?

  5. Cosa significa il simbolo della pipe Linux | fare?

Come trovare quali dispositivi sono collegati alla rete in Linux

Cosa sono i porti? Come controllare le porte aperte di Linux?

ExplainShell:scopri cosa fa ogni parte di un comando Linux

Cosa significa Cat Command in Linux?

Che cos'è il comando sorgente in Linux e come funziona?

Che cos'è il comando Grep in Linux? Perché viene utilizzato e come funziona?