Während Sie die Befehlszeile verwenden, können Sie die Ausgabe eines Programms (z. B. eines Tools, das einige Systeminformationen oder Statistiken generiert) direkt als Eingabe für ein anderes Programm (z. B. Textfilter- oder Mustersuchtools wie grep, sed oder awk) übergeben. zur weiteren Verarbeitung), unter Verwendung einer Pipeline.
Lesen Sie auch :Lernen Sie die Grundlagen der Funktionsweise der E/A-Umleitung (Eingabe/Ausgabe) unter Linux kennen
Zwei der wichtigsten Befehlszeilenprogramme, die mit Pipelines zum Erstellen von Befehlszeilen verwendet werden können, sind:
xargs
– liest Datenströme von der Standardeingabe, 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 ist eher ein Umleitungsbefehl.
In diesem einfachen Artikel beschreiben wir, wie Sie mehrere Befehle aus der Standardeingabe mithilfe von Pipes erstellen und ausführen , T-Stück und xargs Befehle unter Linux.
Die einfachste Syntax zur Verwendung einer Pipe , die Sie vielleicht schon in vielen unserer Linux-Tutorials in Befehlen gesehen haben, lautet wie folgt. Aber Sie können eine längere Befehlszeile mit mehreren Befehlen aufbauen.
$ command1 args | command2 args OR # command1 args | command2 args | command3 args ...
Unten sehen Sie ein Beispiel für die Verwendung einer Pipeline, um die Ausgabe des Befehls dmesg an den Befehl head zu übergeben.
$ dmesg | head
So verwenden Sie xargs zum Ausführen von Befehlen
In diesem Beispiel konvertiert der zweite Befehl eine mehrzeilige Ausgabe in eine einzeilige Ausgabe mit xargs.
$ ls -1 *.sh $ ls -1 *.sh | xargs
Verwenden Sie die folgenden Befehle, um die Anzahl der Zeilen/Wörter/Zeichen in jeder Datei in einer Liste zu zählen.
$ 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 findet und löscht rekursiv das Verzeichnis mit dem Namen All
im aktuellen Verzeichnis.
$ find . -name "All" -type d -print0 | xargs -0 /bin/rm -rf "{}"
Der find-Befehl mit der Option -print0
Aktion ermöglicht die Ausgabe des vollständigen Verzeichnispfads auf der Standardausgabe, gefolgt von einem Nullzeichen und -0 xargs
Flag befasst sich mit Leerzeichen in Dateinamen.
Sie können andere praktische xargs-Befehle finden Anwendungsbeispiele in diesen Artikeln:
- Wie man unter Linux eine Datei in mehrere Verzeichnisse kopiert
- Alle Dateien und Verzeichnisnamen unter Linux in Kleinbuchstaben umbenennen
- 4 Möglichkeiten zur Batch-Konvertierung von PNG in JPG und umgekehrt
- 3 Möglichkeiten zum Löschen aller Dateien in einem Verzeichnis außer einer oder wenigen Dateien mit Erweiterungen
Verwendung von Tee mit Befehlen unter Linux
Dieses Beispiel zeigt, 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 der höchsten Speicher- und CPU-Auslastung in Linux anzeigen.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt $ cat topprocs.txt
Um Daten in eine oder mehrere vorhandene Dateien einzufügen, übergeben Sie -a
Flagge.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt
Weitere Informationen finden Sie im te und xargs Handbuchseiten.
$ man xargs $ man tee
Das ist alles! Vergessen Sie nicht, unseren speziellen Artikel zu lesen:A – Z Linux-Befehle – Übersicht mit Beispielen.
In diesem Artikel haben wir beschrieben, wie Sie Befehlszeilen mithilfe von Pipelines generieren. xargs- und tee-Befehle. Über das Feedback-Formular unten können Sie Fragen stellen oder Gedanken mitteilen.