logo

Tubazioni in Unix o Linux

Una pipe è una forma di reindirizzamento (trasferimento dell'output standard a un'altra destinazione) utilizzata in Linux e altri sistemi operativi simili a Unix per inviare l'output di un comando/programma/processo a un altro comando/programma/processo per un'ulteriore elaborazione . I sistemi Unix/Linux consentono di connettere lo stdout di un comando allo stdin di un altro comando. Puoi farlo utilizzando il carattere pipe '|' .

La pipe viene utilizzata per combinare due o più comandi e, in questo caso, l'output di un comando funge da input per un altro comando, e l'output di questo comando può fungere da input per il comando successivo e così via. Può anche essere visualizzato come una connessione temporanea tra due o più comandi/programmi/processi. I programmi della riga di comando che eseguono l'ulteriore elaborazione vengono definiti filtri.



Questa connessione diretta tra comandi/programmi/processi consente loro di operare simultaneamente e consente il trasferimento continuo dei dati tra loro invece di doverli passare attraverso file di testo temporanei o attraverso lo schermo di visualizzazione.
I tubi sono unidirezionali, cioè i dati fluiscono da sinistra a destra attraverso la pipeline.

Sintassi:

command_1 | command_2 | command_3 | .... | command_N>

Esempio di Piping in Unix o Linux

1. Elenca tutti i file e le directory e forniscili come input al comando `grep` utilizzando piping in Linux

ls | grep file.txt>

ls | file grep.txt



Per prima cosa utilizziamo `ls` per elencare tutti i file e le directory nella directory corrente, quindi passiamo il suo output al comando `grep` e cerchiamo il nome del file `file.txt`. L'output del comando ls viene inviato all'input del comando grep e il risultato è un elenco di file che corrispondono al termine di ricerca.

elenco immutabile

2. Elenca tutti i file e le directory e forniscili come input per i comandi `more` utilizzando il piping in Linux.

$ ls -l | more>

$ ls -l | Di più

Il comando more accetta l'output di $ ls -l come input. L'effetto netto di questo comando è che l'output di ls -l viene visualizzato uno schermo alla volta. La pipe funge da contenitore che prende l'output di ls -l e lo fornisce a more come input. Questo comando non utilizza un disco per connettere l'output standard di ls -l allo standard input di more perché pipe è implementato nella memoria principale.
In termini di operatori di reindirizzamento I/O, il comando precedente è equivalente alla seguente sequenza di comandi.



$ ls -l ->temp more -> temp (o more temp) [contenuto di temp] rm temp>
temp

ls -l -> temp

L'output dei due comandi precedenti è lo stesso.

3. Ordina un elenco di file in base alla dimensione utilizzando il piping in Linux

ls -l sort -k 5>
ls -l sort -k 5

Questo comando elenca tutti i file nella directory corrente e quindi utilizza il comando 'sort' per ordinare l'elenco in base alla quinta colonna, che rappresenta la dimensione del file.

4. Utilizzare i comandi sort e uniq per ordinare un file e stampare valori univoci utilizzando il piping in Linux

$ sort record.txt | uniq>

Questo ordinerà il file specificato e stamperà solo i valori univoci.

ordina record.txt | unico

5. Utilizzare testa e coda per stampare le linee in un intervallo particolare in un file.

$ cat sample2.txt | head -7 | tail -5>

Questo comando seleziona le prime 7 righe attraverso il comando (head -7) e queste verranno inserite nel comando (tail -5) che stamperà infine le ultime 5 righe da quelle 7 righe.

gatto campione2.txt | testa -7 | coda -5

6. Utilizzare ls e find per elencare e stampare tutte le righe che corrispondono a un modello particolare nei file corrispondenti.

$ ls -l | find ./ -type f -name '*.txt' -exec grep 'program' {} ;>

Questo comando seleziona i file con .TXT estensione nella directory specificata e cerca modelli come programma nell'esempio sopra e stampa quelli che contengono programma.

ls -l | find ./ -type f -name *.txt -exec grep program {} ;

7. Utilizzare i comandi cat, grep, tee e wc per leggere la voce specifica dall'utente e archiviarla in un file e stampare il conteggio delle righe.

$ cat result.txt | grep 'Rajat Dua' | tee file2.txt | wc -l>

Questo comando seleziona Rajat Dua e memorizzali nel file2.txt e stampa il numero totale di righe corrispondenti Rajat Dua

risultato gatto.txt | grep Rajat Dua | teefile2.txt | wc -l

8.Come posso reindirizzare l'output di un comando trasmesso su un file in Unix o Linux?

Possiamo utilizzare l'operatore di reindirizzamento `>` per reindirizzare l'output di un comando trasmesso.

Per esempio:

Se ho un nome file 'file.txt' e desidero reindirizzarlo a un nome file 'geeks.txt'.

 ls | grep 'file'>geeks.txt>
geeks.txt

ls | grep 'file'> geeks.txt

Conclusione

Il piping è una potente funzionalità dei sistemi operativi Unix e Linux che ci aiuta a collegare diversi comandi insieme per eseguire attività complesse in modo rapido ed efficiente. In questo articolo abbiamo imparato come reindirizzare l'output di un comando all'input di un altro comando. Nel complesso, possiamo dire che utilizzando le tubazioni possiamo risparmiare tempo, migliorare la produttività e ridurre l'utilizzo dello spazio su disco.