So verwenden Sie den Befehl xargs
Der Befehl xargs ist ein leistungsfähiges Dienstprogramm in Unix/Linux-Systemen, mit dem Befehle über die Standardeingabe erstellt und ausgeführt werden können. Es nimmt Eingaben von einem Befehl oder einer Datei entgegen und gibt sie als Argumente an einen anderen Befehl weiter. Dies ist besonders nützlich, wenn Sie eine große Anzahl von Dateien, Argumenten oder Daten verarbeiten müssen, die von anderen Befehlen verarbeitet werden sollen.
In diesem Artikel erfahren Sie, wie xargs funktioniert, welche praktischen Anwendungsfälle es gibt und wie Sie es in verschiedenen Szenarien einsetzen können.
Grundlegende Verwendung von xargs
Der Befehl xargs liest Elemente von der Standardeingabe (stdin), normalerweise durch Leerzeichen oder Zeilenumbrüche getrennt, und übergibt sie als Argumente an den angegebenen Befehl. Die grundlegendste Verwendung von xargs sieht folgendermaßen aus:
Wenn Sie zum Beispiel alle .txt-Dateien in einem Verzeichnis mit find und rm löschen wollen, können Sie folgendes verwenden:
Hier erzeugt find eine Liste von .txt-Dateien, und xargs übergibt diese Liste als Argumente an den Befehl rm, der die Dateien löscht.
Praktische Beispiele für die Verwendung von xargs
1. Übergabe von Argumenten an einen Befehl
Die häufigste Verwendung von xargs ist die Übergabe einer langen Liste von Argumenten an einen Befehl. Zum Beispiel können Sie mit touch mehrere Dateien erstellen:
Dieser Befehl erstellt drei Dateien: file1.txt, file2.txt und file3.txt.
2. Löschen von Dateien, die mit find gefunden wurden
Eine leistungsfähige Kombination aus find und xargs ermöglicht es Ihnen, Dateien anhand bestimmter Kriterien zu löschen. Zum Beispiel, um alle .log-Dateien in einem Verzeichnis zu finden und zu löschen:
Dies findet alle .log-Dateien und löscht sie anschließend. Ohne xargs müssten Sie diesen Vorgang manuell durchführen oder kompliziertere Konstrukte verwenden.
3. Begrenzung der Anzahl von Argumenten
Standardmäßig übergibt xargs so viele Argumente wie möglich in einem Durchgang an den Befehl. Sie können jedoch die Anzahl der übergebenen Argumente mit der Option -n begrenzen. Zum Beispiel:
Ausgabe:
Damit wird echo auf zwei Argumente pro Befehlsausführung beschränkt, wodurch die Eingabe in kleinere Teile zerlegt wird.
4. Bestätigung der Befehlsausführung
Wenn Sie einen Befehl interaktiv ausführen möchten, indem Sie vor der Ausführung des Befehls für jedes Argument eine Bestätigung verlangen, verwenden Sie die Option -p:
Dadurch wird vor dem Löschen jeder Datei eine Bestätigung verlangt.
5. Umgang mit Dateien mit Sonderzeichen
Manchmal können Dateinamen oder Daten Leerzeichen oder Sonderzeichen enthalten. In solchen Fällen ist es besser, find mit der Option -print0 und xargs mit der Option -0 zu verwenden, um sicherzustellen, dass die Eingabe korrekt verarbeitet wird:
Damit wird sichergestellt, dass Dateinamen mit Leerzeichen oder Sonderzeichen korrekt an den Befehl rm übergeben werden.
6. Verwendung von xargs mit grep
Sie können xargs mit grep kombinieren, um nach einem Muster in mehreren Dateien zu suchen. Zum Beispiel:
Dieser Befehl findet alle
.txt-Dateien
7. Kombinieren mehrerer Befehle mit xargs
Sie können xargs verwenden, um mehrere Befehle auszuführen. Wenn Sie zum Beispiel eine Reihe von Dateien auflisten und gleichzeitig löschen wollen:
Hier gibt tee die Liste der .tmp-Dateien auf dem Terminal aus (über /dev/tty), und xargs übergibt diese Liste dann zum Löschen an den Befehl rm.
Allgemeine Optionen mit xargs
- –n : Begrenzt die Anzahl der Argumente, die pro Ausführung an den Befehl übergeben werden. Zum Beispiel würde xargs -n 2 zwei Argumente auf einmal übergeben.
- –0: Wird verwendet, um Eingaben mit Nullen zu behandeln, typischerweise von find mit -print0. Nützlich für die Behandlung von Dateinamen mit Leerzeichen oder Sonderzeichen.
- –I {}: Ersetzt alle Vorkommen von {} durch Argumente aus stdin. Dies ist nützlich, wenn Sie Argumente an einer bestimmten Stelle des Befehls platzieren wollen, nicht nur am Ende.
- –p: Fordert den Benutzer vor dem Ausführen des Befehls zur Bestätigung auf.
- –t: Gibt den Befehl vor der Ausführung auf dem Terminal aus, was für die Fehlersuche nützlich ist.
Warum xargs verwenden?
- Effizienz: Beim Umgang mit einer großen Anzahl von Dateien oder Eingaben hilft xargs, den Overhead bei der Ausführung mehrerer Befehle zu reduzieren, indem Argumente gruppiert werden.
- Flexibilität: xargs bietet Flexibilität, indem es Ihnen ermöglicht, Befehle in einer Pipeline zu kombinieren und Daten nahtlos zwischen ihnen zu übergeben.
- Automatisierung: Beim Schreiben von Shell-Skripten ist xargs unerlässlich für die Automatisierung von Aufgaben, die die Verarbeitung vieler Eingaben erfordern. Es macht die Verwaltung von Dateilisten, Argumentlisten und Datenströmen einfach und effizient.
Schlussfolgerung
Der Befehl xargs ist ein leistungsfähiges Werkzeug, das die Art und Weise, wie Sie mit anderen Befehlen in Unix/Linux-Systemen interagieren, verbessert. Ganz gleich, ob Sie mit der Dateiverwaltung, der Verarbeitung von Datenströmen oder der Ausführung sich wiederholender Aufgaben zu tun haben, xargs rationalisiert den Prozess. Wenn Sie lernen, seine Optionen zu nutzen und es mit anderen Befehlen wie find, grep oder rm zu kombinieren, können Sie Ihre Produktivität im Terminal erheblich steigern.
Wenn Sie xargs noch nicht verwendet haben, ist jetzt der perfekte Zeitpunkt, es auszuprobieren und zu sehen, wie es Ihre Befehlszeilenoperationen vereinfachen kann.