Wéi lafen Kommandoen aus Standard Input Mat Tee an Xargs am Linux


Wärend der Kommandozeil benotzt, kënnt Dir direkt d'Ausgab vun engem Programm passéieren (zum Beispill e Tool dat e puer awk generéiert, fir weider Veraarbechtung), mat enger Pipeline.

Zwee vun de wichtegste Kommandozeilen Utilities déi mat Pipelines benotzt kënne fir Kommandozeilen ze bauen sinn:

  • xargs - liest Streame vun Daten aus Standardinput, generéiert dann Kommandozeilen an ausféiert.
  • Tee - liest vum Standardinput a schreift gläichzäiteg op Standardoutput an eng oder vill Dateien. Et ass méi e Viruleedungskommando.

An dësem einfachen Artikel wäerte mir beschreiwen wéi Dir verschidde Befehle vu Standardinput bauen an ausféieren mat Päifen, Tee an Xargs Kommandoen am Linux.

Déi einfachst Syntax fir e Päif ze benotzen, déi Dir scho vläicht a Kommandoen a ville vu Linux Tutorials gesinn hutt, ass wéi follegt. Awer Dir kënnt eng méi laang Kommandozeil mat verschiddene Kommandoen bauen.

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

Drënner ass e Beispill fir eng Pipeline ze benotzen fir den Output vum Head Kommando ze passéieren.

$ dmesg | head

Wéi benotzen ech xargs fir Kommandoen ze lafen

An dësem Beispill konvertéiert den zweete Kommando muti-Linn-Output an eng eenzeg Linn mat xargs.

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

Fir d'Zuel vun Zeilen/Wierder/Zeechen an all Fichier an enger Lëscht ze zielen, benotzt d'Befehle hei ënnen.

$ 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

De Kommando hei drënner fënnt a rekursiv läscht den Verzeechnes mam Numm All am aktuellen Verzeechnes.

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

De Find-Kommando mat der Optioun -print0-Aktioun erméiglecht d'Dréckerei vum ganze Verzeechneswee op der Standardausgang, gefollegt vun engem Null-Zeechen an -0 xargs-Fändel handelt mat Raum an Dateinumm.

Dir kënnt aner praktesch xargs Kommando Benotzung Beispiller an dësen Artikelen fannen:

  1. Wéi kopéiert een e Fichier op Multiple Verzeechnes a Linux
  2. All Dateien a Verzeechnesnimm ëmbenennen op kleng Buschtawen am Linux
  3. 4 Weeër fir Är PNG op JPG a Vice-Versa ze konvertéieren
  4. 3 Weeër fir all Dateien an engem Verzeechnes ze läschen ausser een oder e puer Dateie mat Extensiounen

Wéi benotzt Tee mat Kommandoen am Linux

Dëst Beispill weist wéi Dir Kommandoausgang op Standardausgang schéckt an op eng Datei späichert; de Kommando hei drënner erlaabt Iech Top Lafen Prozesser duerch héchste Gedächtnis an CPU Benotzung am Linux ze gesinn.

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

Fir Daten an eng existent Datei(en) unzefänken, gitt de -a Fändel.

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

Dir kënnt méi Informatiounen an Tee an xargs Mann Säiten fannen.

$ man xargs
$ man tee

Dat ass alles! Vergiesst net eise speziellen Artikel ze kucken: A - Z Linux Kommandoen - Iwwersiicht mat Beispiller.

An dësem Artikel hu mir beschriwwen wéi Dir Kommandozeilen mat Pipelines generéiert; xargs an Tee Kommandoen. Dir kënnt all Froen stellen oder all Gedanken iwwer de Feedbackformular hei drënner deelen.