Kako izvajati ukaze iz standardnega vnosa z uporabo Tee in Xargs v Linuxu


Med uporabo ukazne vrstice lahko neposredno posredujete rezultate enega programa (na primer orodje, ki ustvari nekaj awk, za nadaljnjo obdelavo) z uporabo cevovoda.

Dve najpomembnejši pripomočki ukazne vrstice, ki jih je mogoče uporabiti s cevovodi za izgradnjo ukaznih vrstic, so:

  • xargs - bere tokove podatkov iz standardnega vnosa, nato ustvarja in izvaja ukazne vrstice.
  • tee - bere iz standardnega vhoda in hkrati zapisuje v standardni izhod in eno ali več datotek. To je bolj ukaz za preusmeritev.

V tem preprostem članku bomo opisali, kako sestaviti in izvesti več ukazov iz standardnega vhoda z uporabo ukazov pipe, tee in xargs v Linuxu.

Najpreprostejša skladnja za uporabo pipe, ki ste jo morda že videli v ukazih v številnih vadnicah za Linux, je naslednja. Lahko pa zgradite daljšo ukazno vrstico z več ukazi.

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

Spodaj je primer uporabe cevovoda za prenos izhoda ukaza head.

$ dmesg | head

Kako uporabljati xargs za izvajanje ukazov

V tem primeru drugi ukaz pretvori izhod več vrstic v eno vrstico z uporabo xargs.

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

Če želite šteti število vrstic/besed/znakov v vsaki datoteki na seznamu, uporabite spodnje ukaze.

$ 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

Spodnji ukaz najde in rekurzivno izbriše imenik All v trenutnem imeniku.

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

Ukaz find z možnostjo -print0 omogoča tiskanje celotne poti imenika na standardni izhod, ki mu sledi ničelni znak in zastavica -0 xargs obravnava prostor v imenih datotek.

Druge praktične primere uporabe ukazov xargs najdete v teh člankih:

  1. Kako kopirati datoteko v več imenikov v Linuxu
  2. Preimenuj vse datoteke in imena imenikov v male črke v Linuxu
  3. 4 načini za paketno pretvorbo PNG v JPG in obratno
  4. 3 načini za brisanje vseh datotek v imeniku, razen ene ali nekaj datotek z razširitvami

Kako uporabljati Tee z ukazi v Linuxu

Ta primer prikazuje, kako poslati izhod ukazov na standardni izhod in shraniti v datoteko; spodnji ukaz vam omogoča ogled najbolj izvajanih procesov glede na največjo porabo pomnilnika in procesorja v Linuxu.

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

Če želite dodati podatke v obstoječe datoteke, podajte zastavico -a .

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

Več informacij najdete na straneh za tee in xargs.

$ man xargs
$ man tee

To je vse! Ne pozabite si ogledati našega posebnega članka: A - Z ukazi Linuxa - pregled s primeri.

V tem članku smo opisali, kako ustvariti ukazne vrstice z uporabo cevovodov; ukaze xargs in tee. Na spodnjem obrazcu za povratne informacije lahko postavite kakršno koli vprašanje ali delite svoje mnenje.