Durante l'utilizzo della riga di comando, è possibile passare direttamente l'output di un programma (ad esempio uno strumento che genera alcune informazioni di sistema o statistiche) come input per un altro programma (come filtri di testo o strumenti di ricerca di modelli come grep, sed o awk, per ulteriori elaborazioni), utilizzando una pipeline.
Leggi anche :Scopri le nozioni di base su come funziona il reindirizzamento I/O (Input/Output) di Linux
Due delle più importanti utilità della riga di comando che possono essere utilizzate con le pipeline per creare righe di comando sono:
xargs
– legge flussi di dati dallo standard input, quindi genera ed esegue righe di comando.tee
– legge dallo standard input e scrive simultaneamente sullo standard output e uno o più file. È più un comando di reindirizzamento.
In questo semplice articolo, descriveremo come creare ed eseguire più comandi dall'input standard utilizzando pipe , tee e xargs comandi in Linux.
La sintassi più semplice per usare una pipe , che potresti aver già visto nei comandi in molti dei nostri tutorial su Linux, è il seguente. Ma puoi creare una riga di comando più lunga con diversi comandi.
$ command1 args | command2 args OR # command1 args | command2 args | command3 args ...
Di seguito è riportato un esempio di utilizzo di una pipeline per passare l'output del comando dmesg al comando head.
$ dmesg | head
Come utilizzare xargs per eseguire comandi
In questo esempio, il secondo comando converte l'output su più righe in una riga singola usando xargs.
$ ls -1 *.sh $ ls -1 *.sh | xargs
Per contare il numero di righe/parole/caratteri in ciascun file in un elenco, utilizza i comandi seguenti.
$ ls *.sh | xargs wc -l #count number of lines in each file $ ls *.sh | xargs wc -w #count number of words in each file $ ls *.sh | xargs wc -c #count number of characters in each file $ ls *.sh | xargs wc #count lines, words and characters in each file
Il comando seguente trova ed elimina ricorsivamente la directory denominata All
nella directory corrente.
$ find . -name "All" -type d -print0 | xargs -0 /bin/rm -rf "{}"
Il comando trova con l'opzione -print0
action abilita la stampa dell'intero percorso della directory sull'output standard, seguito da un carattere null e -0 xargs
flag si occupa dello spazio nei nomi dei file.
Puoi trovare altri pratici comandi xargs esempi di utilizzo in questi articoli:
- Come copiare un file in più directory in Linux
- Rinomina tutti i file e i nomi delle directory in minuscolo in Linux
- 4 modi per convertire in batch i tuoi PNG in JPG e viceversa
- 3 modi per eliminare tutti i file in una directory tranne uno o pochi file con estensioni
Come usare Tee con i comandi in Linux
Questo esempio mostra come inviare l'output del comando allo standard output e salvarlo in un file; il comando seguente ti consente di visualizzare i processi più in esecuzione in base al massimo utilizzo di memoria e CPU in Linux.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt $ cat topprocs.txt
Per aggiungere dati in uno o più file esistenti, passa il -a
bandiera.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt
Puoi trovare maggiori informazioni in tee e xargs pagine man.
$ man xargs $ man tee
È tutto! Non dimenticare di dare un'occhiata al nostro articolo speciale:A – Z Comandi Linux – Panoramica con esempi.
In questo articolo abbiamo descritto come generare righe di comando utilizzando le pipeline; xargs e comandi tee. Puoi porre domande o condividere pensieri tramite il modulo di feedback qui sotto.