GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire comandi dall'input standard utilizzando Tee e Xargs in Linux

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:

  1. Come copiare un file in più directory in Linux
  2. Rinomina tutti i file e i nomi delle directory in minuscolo in Linux
  3. 4 modi per convertire in batch i tuoi PNG in JPG e viceversa
  4. 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.


Linux
  1. 10 usi sorprendenti e misteriosi di (!) Simbolo o operatore nei comandi Linux

  2. Come salvare i comandi Linux e usarli su richiesta

  3. Comandi Linux:job, bg e fg

  4. Linux:come eseguire un bootloader da Linux?

  5. Come controllare il sistema operativo e la versione utilizzando un comando Linux

Come correggere errori e refusi nei precedenti comandi della console in Linux

Come eseguire app Linux su Windows 10 e 11 utilizzando WSL

Come eseguire periodicamente un comando in Linux usando Watch

Come eseguire più comandi Linux in un unico comando

Come clonare e ripristinare la partizione Linux usando il comando dd

Come eseguire più comandi Linux contemporaneamente nel terminale Linux