So leiten Sie eine Befehlsausgabe an einen anderen Befehl unter Linux weiter
Während Sie die Befehlszeile verwenden, können Sie die Ausgabe eines Programms (z. B. ein Tool, das Systeminformationen oder Statistiken generiert) mithilfe einer Pipeline direkt als Eingabe für ein anderes Programm (z. B. Textfilter- oder Mustersuchtools wie grep, sed oder awk zur weiteren Verarbeitung) übergeben.
Zwei der wichtigsten Befehlszeilenprogramme, die mit Pipelines zum Erstellen von Befehlszeilen verwendet werden können, sind:
- xargs – liest Datenströme aus Standardeingaben, generiert dann Befehlszeilen und führt sie aus.
- TEE – liest von der Standardeingabe und schreibt gleichzeitig in die Standardausgabe und eine oder mehrere Dateien. Es handelt sich eher um einen Umleitungsbefehl.
Senden der Befehlsausgabe an einen anderen Befehl unter Linux
In diesem einfachen Artikel beschreiben wir, wie Sie mehrere Befehle aus der Standardeingabe mit den Befehlen pipes, tee und xargs unter Linux erstellen und ausführen.
Die einfachste Syntax für die Verwendung einer Pipe, die Sie vielleicht bereits in Befehlen in vielen unserer Linux-Tutorials gesehen haben, lautet wie folgt. Sie können jedoch mit mehreren Linux-Befehlen eine längere Befehlszeile erstellen.
$ command1 args | command2 args
OR
command1 args | command2 args | command3 args ...
Im Folgenden finden Sie ein Beispiel für die Verwendung einer Pipeline, um die Ausgabe des Befehls dmesg an den Befehl head zu übergeben.
$ dmesg | head
xargs – Befehlsausgabe an einen anderen Befehl übergeben
In diesem Beispiel wird die Ausgabe des Befehls ls an einen anderen Befehl namens xargs übergeben, der mehrere Ausgabezeilen zu einer Zeile verkettet, wie gezeigt.
$ ls -1 *.sh
ls -1 *.sh | xargs
Um die Anzahl der Zeilen/Wörter/Zeichen in jeder Datei in einer Liste zu zählen, verwenden Sie die folgenden Befehle.
$ 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
Der folgende Befehl sucht und löscht rekursiv das Verzeichnis All im aktuellen Verzeichnis.
$ find . -name "All" -type d -print0 | xargs -0 /bin/rm -rf "{}"
Der Befehl find mit der Aktion -print0 ermöglicht das Drucken des vollständigen Verzeichnispfads in der Standardausgabe, gefolgt von einem Nullzeichen und dem Flag -0 xargs, das sich mit Leerzeichen in Dateinamen befasst, und einem Befehl rm -rf zum Löschen eines Verzeichnisses.
Weitere praktische Beispiele für die Verwendung von xargs-Befehlen finden Sie in diesen Artikeln:
Tee – Befehlsausgabe an einen anderen Befehl senden und in Datei speichern
In diesem Beispiel wird gezeigt, wie die Befehlsausgabe an die Standardausgabe gesendet und in einer Datei gespeichert wird. Mit dem folgenden Befehl können Sie die am häufigsten ausgeführten Prozesse nach höchster Speicher- und CPU-Auslastung unter Linux anzeigen.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt
cat topprocs.txt
Um Daten in einer oder mehreren vorhandenen Dateien anzufügen, übergeben Sie das Flag -a.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt
Weitere Informationen finden Sie auf den Manpages tee und xargs.
$ man xargs
man tee
Das ist alles! Vergessen Sie nicht, unseren Sonderartikel zu lesen: A – Z Linux-Befehle – Übersicht mit Beispielen.
In diesem Artikel haben wir beschrieben, wie Befehlszeilen mithilfe von Pipelines generiert werden. xargs und tee-Befehle. Sie können Fragen stellen oder Gedanken über das Feedback-Formular unten teilen.



