Comandi Linux

Comando pipe Linux

Comando pipe Linux
Questo comando "pipe" è prontamente disponibile su piattaforme UNIX/Linux. Questo comando reindirizza l'output del comando precedente al comando successivo. Ci sono letteralmente TONNELLATE di situazioni in cui questo metodo offre un valore serio.Prima di approfondire, c'è qualcosa da sapere something. Ogni singolo programma nel sistema UNIX/Linux ha 3 flussi di dati incorporati.

Quando lavoreremo con trucchi "pipe", "pipe" prenderà lo STDOUT di un comando e lo passerà allo STDIN del comando successivo.

Diamo un'occhiata ad alcuni dei modi più comuni in cui puoi incorporare il comando "pipe" nel tuo utilizzo quotidiano.

Comando pipe

Utilizzo di base

È meglio approfondire il metodo di lavoro della “pipa” con un esempio dal vivo, giusto? Iniziamo. Il seguente comando dirà a "pacman", il gestore di pacchetti predefinito per Arch e tutte le distro basate su Arch, di stampare tutti i pacchetti installati sul sistema.

pacman -Qqe

È una lista davvero LUNGA di pacchetti. Che ne dici di raccogliere solo pochi componenti?? Potremmo usare "grep". Ma come? Un modo sarebbe scaricare l'output in un file temporaneo, "grep" l'output desiderato ed eliminare il file. Questa serie di compiti, da sola, può essere trasformata in uno script. Ma scriviamo solo per cose molto grandi. Per questo compito, facciamo appello al potere del "tubo"!

pacman -Qqe | grep

Fantastico, non è vero?? Il “|” sign è la chiamata al comando “pipe”. Prende lo STDOUT dalla sezione sinistra e lo alimenta nello STDIN della sezione destra.

Nell'esempio sopra, il comando "pipe" ha effettivamente passato l'output alla fine della parte "grep"p. Ecco come si svolge.

pacman -Qqe > ~/Desktop/pacman_package.TXT
grep python ~/Desktop/pacman_package.TXT

Tubazioni multiple

Fondamentalmente, non c'è niente di speciale con l'uso avanzato del comando "pipe". Sta a te come usarlo.

Ad esempio, iniziamo impilando più tubazioni.

pacman -Qqe | grep p | grep t | grep py

L'output del comando pacman viene filtrato sempre di più da "grep" attraverso una serie di tubazioni.

A volte, quando lavoriamo con il contenuto di un file, può essere molto, molto grande. Trovare il posto giusto della nostra voce desiderata può essere difficile. Cerchiamo tutte le voci che includono le cifre 1 e 2.

dimostrazione del gatto.txt | grep -n 1 | grep -n 2

Manipolare l'elenco di file e directory

Cosa fare quando hai a che fare con una directory con TONNELLATE di file al suo interno? È piuttosto fastidioso scorrere l'intero elenco. Certo, perché non renderlo più sopportabile con la pipa?? In questo esempio, controlliamo l'elenco di tutti i file nella cartella "/usr/bin".

ls -l | Di più

Qui, "ls" stampa tutti i file e le loro informazioni. Quindi, "pipe" lo passa a "more" per lavorare con quello. Se non lo sapevi, "more" è uno strumento che trasforma i testi in una schermata alla volta. Tuttavia, è un vecchio strumento e secondo la documentazione ufficiale, "meno" è più consigliato.

ls -l /usr/bin | Di meno

Ordinamento dell'output

C'è uno strumento integrato "ordina" che prenderà l'input di testo e li ordinerà. Questo strumento è un vero gioiello se stai lavorando con qualcosa di veramente disordinato. Ad esempio, ho questo file pieno di stringhe casuali.

dimostrazione del gatto.TXT

Basta reindirizzarlo per "ordinare".

dimostrazione del gatto.txt | ordinare

Va meglio!

Stampa di corrispondenze di un particolare modello

ls -l | trova ./ -type f -name "*.txt" -exec grep 00110011 \;

Questo è un comando piuttosto contorto, giusto? All'inizio, "ls" visualizza l'elenco di tutti i file nella directory. Lo strumento "trova" prende l'output, cerca ".txt” e richiama “grep” per cercare “00110011”. Questo comando controllerà ogni singolo file di testo nella directory con l'estensione TXT e cercherà le corrispondenze.

Stampa il contenuto del file di un particolare intervallo

Quando lavori con un file di grandi dimensioni, è comune avere la necessità di controllare il contenuto di un certo intervallo. Possiamo farlo con una combinazione intelligente di "gatto", "testa", "coda" e, naturalmente, "pipa". Lo strumento "testa" emette la prima parte di un contenuto e "coda" emette l'ultima parte.

gatto | testa -6

gatto | coda -6

Valori unici

Quando si lavora con output duplicati, può essere piuttosto fastidioso. A volte, l'input duplicato può causare seri problemi. In questo esempio, lanciamo "uniq" su un flusso di testo e salviamolo in un file separato.

Ad esempio, ecco un file di testo contenente un lungo elenco di numeri lunghi 2 cifre. Ci sono sicuramente contenuti duplicati qui, giusto??

gatto duplicato.txt | ordinare

Ora eseguiamo il processo di filtraggio.

gatto duplicato.txt | ordina | unico > unico.TXT

Dai un'occhiata all'output.

pipistrello unico.TXT

Sembra migliore!

Tubi di errore

Questo è un metodo di tubazioni interessante. Questo metodo viene utilizzato per reindirizzare lo STDERR a STDOUT e procedere con la tubazione. Questo è indicato dal simbolo "|&" (senza le virgolette). Ad esempio, creiamo un errore e inviamo l'output a qualche altro strumento. In questo esempio, ho appena digitato un comando casuale e ho passato l'errore a "grep".

adsfds |& grep n

Pensieri finali

Sebbene la stessa "pipa" sia di natura piuttosto semplicistica, il modo in cui funziona offre un modo molto versatile di utilizzare il metodo in infiniti modi. Se ti piacciono gli script Bash, allora è molto più utile. A volte, puoi semplicemente fare cose pazze a titolo definitivo! Ulteriori informazioni sugli script Bash.

Come utilizzare AutoKey per automatizzare i giochi Linux
AutoKey è un'utilità di automazione desktop per Linux e X11, programmata in Python 3, GTK e Qt. Utilizzando la sua funzionalità di scripting e MACRO, ...
Come mostrare il contatore FPS nei giochi Linux
I giochi Linux hanno avuto una grande spinta quando Valve ha annunciato il supporto Linux per il client Steam e i loro giochi nel 2012. Da allora, mol...
Come scaricare e giocare a Sid Meier's Civilization VI su Linux
Introduzione al gioco Civilization 6 è una versione moderna del concetto classico introdotto nella serie dei giochi Age of Empires. L'idea era abbasta...