Com executar ordres des de l'entrada estàndard mitjançant Tee i Xargs a Linux
Mentre utilitzeu la línia d'ordres, podeu passar directament la sortida d'un programa (per exemple, una eina que genera algun awk, per a un processament posterior), mitjançant una canalització.
Dues de les utilitats de línia d'ordres més importants que es poden utilitzar amb canalitzacions per crear línies d'ordres són:
xargs
: llegeix fluxos de dades de l'entrada estàndard, després genera i executa línies d'ordres.tee
: llegeix des de l'entrada estàndard i escriu simultàniament a la sortida estàndard i un o molts fitxers. És més aviat una ordre de redirecció.
En aquest article senzill, descriurem com crear i executar diverses ordres des d'una entrada estàndard mitjançant ordres pipes, tee i xargs a Linux.
La sintaxi més senzilla per utilitzar una canonada, que potser ja heu vist a les ordres de molts tutorials de Linux, és la següent. Però podeu crear una línia d'ordres més llarga amb diverses ordres.
$ command1 args | command2 args OR # command1 args | command2 args | command3 args ...
A continuació es mostra un exemple d'ús d'un pipeline per passar la sortida de l'ordre head.
$ dmesg | head
Com utilitzar xargs per executar ordres
En aquest exemple, la segona ordre converteix la sortida de diverses línies en una sola línia mitjançant xargs.
$ ls -1 *.sh $ ls -1 *.sh | xargs
Per comptar el nombre de línies/paraules/caràcters de cada fitxer d'una llista, utilitzeu les ordres següents.
$ 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
L'ordre següent cerca i suprimeix recursivament el directori anomenat All
al directori actual.
$ find . -name "All" -type d -print0 | xargs -0 /bin/rm -rf "{}"
L'ordre find amb l'acció de l'opció -print0
permet imprimir la ruta completa del directori a la sortida estàndard, seguida d'un caràcter nul i el senyalador -0 xargs
s'ocupa de l'espai als noms de fitxer.
Podeu trobar altres exemples pràctics d'ús d'ordres xargs en aquests articles:
- Com copiar un fitxer a diversos directoris a Linux
- Canvia el nom de tots els fitxers i els noms de directoris en minúscules a Linux
- 4 maneres de convertir per lots el vostre PNG a JPG i viceversa
- 3 maneres d'eliminar tots els fitxers d'un directori excepte un o pocs fitxers amb extensions
Com utilitzar Tee amb ordres a Linux
Aquest exemple mostra com enviar la sortida d'ordres a la sortida estàndard i desar-la en un fitxer; l'ordre següent us permet veure els processos en execució més alts segons l'ús més elevat de memòria i CPU a Linux.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt $ cat topprocs.txt
Per afegir dades a un fitxer existent, passeu el senyalador -a
.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt
Podeu trobar més informació a les pàgines de manual de tee i xargs.
$ man xargs $ man tee
Això és tot! No us oblideu de consultar el nostre article especial: Comandes de Linux A - Z - Visió general amb exemples.
En aquest article, vam descriure com generar línies d'ordres mitjançant pipelines; ordres xargs i tee. Podeu fer qualsevol pregunta o compartir qualsevol reflexió mitjançant el formulari de comentaris que trobareu a continuació.