GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare pipe e pipe con nome in Linux (con esempi)

Uno degli operatori di shell più potenti in Linux è la pipe. In questo articolo vedremo come funzionano le pipe regolari e con nome, come usarle e come differiscono l'una dall'altra.

Le pipe sono una delle funzionalità della riga di comando più preziose dei sistemi operativi simili a Linux e Unix. I tubi sono utilizzati in una varietà di applicazioni. Se guardi qualsiasi articolo della riga di comando di Linux, noterai che le pipe appaiono frequentemente.

Il simbolo della barra verticale | denota una pipa. A causa della pipe, puoi prendere l'output da un comando e inviarlo a un altro comando come input.

Di conseguenza, l'output di un comando può essere utilizzato come input per un altro e l'output di quel comando può essere utilizzato come input per il comando successivo e così via.

Quindi non sei limitato a un singolo comando convogliato. Puoi impilarli tutte le volte che vuoi.

In altre parole, una pipe è una forma di reindirizzamento utilizzata in Linux per inviare l'output di un programma a un altro programma per un'ulteriore elaborazione. Le pipe ti consentono di eseguire operazioni che la shell non supporta immediatamente.

La sintassi per il comando pipe o pipe senza nome è | carattere tra due comandi qualsiasi:

command1 | command2 | ... | commandN

Come funziona una pipe in Linux

Per vedere come funziona la pipe, diamo un'occhiata agli esempi seguenti.

Abbiamo una directory piena di molti tipi diversi di file. Quindi vogliamo sapere quanti file di un particolare tipo ci sono in questa directory.

Quindi possiamo ottenere facilmente un elenco di file usando ls comando:

ls -l

Useremo grep per separare i tipi di file che stiamo cercando. Ad esempio, cerchiamo file con la parola txt nel loro nome o come estensione di file.

Useremo il carattere speciale della shell | per dirigere ls ' output su grep .

ls | grep txt

Come puoi vedere dall'immagine sopra, l'output di ls il comando non è stato inviato alla finestra del terminale.

Pertanto il risultato non viene visualizzato sullo schermo. Viene invece reindirizzato all'input di grep comando. L'output che vediamo sopra proviene da grep , l'ultimo comando di questa catena.

Ora, iniziamo ad estendere la nostra catena. Possiamo contare i file txt aggiungendo il wc comando alla catena. Useremo il -l opzione (numero di righe) con wc .

ls | grep txt | wc -l

Nell'esempio sopra, grep non è più l'ultimo comando della catena, quindi non ne vediamo l'output. Invece, l'output di grep viene inserito nel wc comando.

Il risultato che vediamo nella finestra del terminale proviene da wc . Segnala due file, txt nella directory.

Cos'è una named pipe in Linux?

Come suggerisce il nome stesso, si tratta di pipe con nomi. Una delle differenze principali tra pipe normali e&named pipe è che le named pipe sono presenti nel file system . Cioè, vengono visualizzati come file.

La named pipe in Linux è un metodo per passare informazioni da un processo di computer a un altro utilizzando una pipe a cui viene assegnato un nome specifico. Le pipe con nome sono anche conosciute come FIFO, che sta per First In, First Out .

Puoi creare una named pipe usando mkfifo comando. Ad esempio:

mkfifo mypipe

Puoi sapere se un file è una named pipe tramite il p bit nella sezione dei permessi dei file.

ls -l mypipe
prw-r--r--  1 root     root         0 Mar 20 12:58 mypipe

Le named pipe sono file nel file system stesso. A differenza di una pipe standard, si accede a una named pipe come parte del filesystem, proprio come qualsiasi altro tipo di file.

Il contenuto della named pipe risiede in memoria anziché essere scritto su disco. Quindi viene superato solo quando entrambe le estremità del tubo sono state aperte. E puoi scrivere su una pipe più volte prima che venga aperta all'altra estremità e letta.

L'utilizzo di named pipe consente di stabilire un processo in cui un processo scrive su una pipe e un altro legge da una pipe senza preoccuparsi troppo di cercare di cronometrare o orchestrare attentamente la loro interazione.

Per vedere come funzionano le pipe con nome, diamo un'occhiata agli esempi seguenti. Per prima cosa creiamo la nostra pipe denominata:

mkfifo mypipe

Ora consumiamo i messaggi con questa pipe.

tail -f mypipe

Apri un'altra finestra di terminale, scrivi un messaggio a questa pipe:

echo "hi" >> mypipe

Ora nella prima finestra puoi vedere il "ciao" stampato:

tail -f pipe1
hi

Poiché è una pipe e il messaggio è stato consumato, se controlliamo la dimensione del file, puoi vedere che è ancora 0:

ls -l mypipe
prw-r--r-- 1 root root 0 Mar 20 14:11 mypipe

Poiché una named pipe è solo un file Linux, possiamo usare il comando rm per rimuoverne uno. Pertanto, per rimuovere la pipe che abbiamo creato negli esempi precedenti, eseguiremo:

rm mypipe

Quando utilizzare pipe regolari o con nome

L'uso di una normale pipe invece di una named pipe in Linux dipende dalle caratteristiche che stiamo cercando. Alcuni possono essere la persistenza, la comunicazione bidirezionale, il nome di un file, la creazione di un filtro e la limitazione delle autorizzazioni di accesso.

Ad esempio, se vogliamo filtrare più volte l'output di un comando, l'utilizzo di una pipe anonima sembra l'opzione più appropriata.

D'altra parte, se abbiamo bisogno di un nome file e non vogliamo memorizzare i dati su disco, quello che stiamo cercando è una named pipe.

In conclusione, la prossima volta che lavorerai con i comandi sul terminale Linux e ti ritroverai a spostare i dati tra i comandi, si spera che una pipe renda il processo semplice e veloce.

Conclusione

Questo articolo ti ha mostrato la versatilità delle pipe quando vengono utilizzate nei comandi Linux. Tuttavia, è relativamente semplice, ma può risolvere un'ampia gamma di query complicate.

Inoltre, questo strumento da riga di comando è semplice e funziona con piattaforme UNIX e Linux.

Per ulteriori informazioni su pipe comando in Linux, consulta la sua pagina del manuale.


Linux
  1. Come utilizzare il comando Hexdump di Linux con esempi pratici

  2. Come utilizzare il comando Sed in Linux con esempi

  3. Comando SCP in Linux:come usarlo, con esempi

  4. Come utilizzare il comando Rmmod su Linux con esempi

  5. Come utilizzare il comando Dig in Linux con esempi

Comando alias Linux:come usarlo con esempi

Come utilizzare il comando gunzip di Linux con esempi

Come utilizzare il comando Linux rm con esempi

Come installare e utilizzare il comando Ack in Linux con esempi

Come installare e utilizzare il comando fd in Linux

Come utilizzare il comando Sleep in Linux:spiegato con esempi