Cum să rulați mai multe comenzi de la intrarea standard în Linux


În timp ce utilizați linia de comandă, puteți transmite direct rezultatul unui program (de exemplu, un instrument care generează unele awk, pentru procesare ulterioară), folosind o conductă.

Două dintre cele mai importante utilitare de linie de comandă care pot fi utilizate cu conducte pentru a construi linii de comandă sunt:

  • xargs – citește fluxuri de date de la intrarea standard, apoi generează și execută linii de comandă.
  • tee – citește de la intrarea standard și scrie simultan în ieșirea standard și în unul sau mai multe fișiere. Este mai mult o comandă de redirecționare.

În acest articol simplu, vom descrie cum să construiți și să executați mai multe comenzi din intrarea standard folosind comenzi pipes, tee și xargs în Linux.

Cea mai simplă sintaxă pentru utilizarea unui pipe, pe care poate ați văzut-o deja în comenzile din multe dintre tutorialele noastre Linux, este următoarea. Dar puteți construi o linie de comandă mai lungă cu mai multe comenzi.

$ command1 args | command2 args 
OR
# command1 args | command2 args | command3 args ...

Mai jos este un exemplu de utilizare a unei conducte pentru a transmite rezultatul comenzii head.

$ dmesg | head

Cum să utilizați xargs pentru a rula comenzi

În acest exemplu, a doua comandă convertește ieșirea multi-line într-o singură linie folosind xargs.

$ ls -1 *.sh
$ ls -1 *.sh | xargs

Pentru a număra numărul de linii/cuvinte/caractere din fiecare fișier dintr-o listă, utilizați comenzile de mai jos.

$ 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

Comanda de mai jos găsește și șterge recursiv directorul numit All din directorul curent.

$ find . -name "All" -type d -print0 | xargs  -0 /bin/rm -rf "{}"

Comanda find cu acțiunea opțiunea -print0 permite tipărirea căii complete a directorului pe ieșirea standard, urmată de un caracter nul și marcajul -0 xargs tratează spațiul în numele fișierelor .

Puteți găsi alte exemple practice de utilizare a comanda xargs în aceste articole:

  • Cum să copiați un fișier în mai multe directoare în Linux
  • Redenumiți toate fișierele și numele directoarelor în minuscule în Linux
  • 4 moduri de a converti în loturi PNG-ul în JPG și viceversa
  • 3 moduri de a șterge toate fișierele dintr-un director, cu excepția unuia sau a câtorva fișiere cu extensii

Cum să utilizați Tee cu comenzi în Linux

Acest exemplu arată cum să trimiteți ieșirea comenzii către ieșirea standard și procesele de top care rulează prin cea mai mare utilizare a memoriei și a procesorului în Linux.

$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt
$ cat  topprocs.txt

Pentru a adăuga date într-un fișier(e) existent(e), treceți marcatorul -a.

$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt 

Puteți găsi mai multe informații pe paginile de manual tee și xargs.

$ man xargs
$ man tee

Asta e tot! Nu uitați să consultați articolul nostru special: A – Z Linux Commands – Overview with Examples.

În acest articol, am descris cum să generați linii de comandă folosind conducte; xargs și comenzi tee. Puteți pune orice întrebări sau puteți împărtăși orice gânduri prin intermediul formularului de feedback de mai jos.