15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
28.10.2024
3 +1

Wie man den Befehl `xargs` in Linux verwendet: Ein vollständiger Leitfaden

Der xargs Befehl ist eines der leistungsstärksten und vielseitigsten Dienstprogramme in Unix/Linux-Systemen. Er erstellt und führt Befehle aus, indem er Argumente aus der Standardeingabe liest und so effektiv die Lücke zwischen Befehlen, die Ausgaben erzeugen, und Befehlen, die Argumente verarbeiten, schließt. Ob Sie Tausende von Dateien verwalten, sich wiederholende Shell-Aufgaben automatisieren oder komplexe Befehlspipelines erstellen – die Beherrschung von xargs wird Ihre Effizienz am Terminal erheblich verbessern.

In diesem umfassenden Leitfaden erläutern wir, wie xargs intern funktioniert, gehen praktische Beispiele aus der Praxis durch, erklären alle wesentlichen Optionen und zeigen Ihnen, wie Sie häufige Fehler vermeiden.

Was ist der xargs Befehl und wie funktioniert er?

Im Kern liest xargs Elemente aus der Standardeingabe (stdin) – typischerweise durch Leerzeichen oder Zeilenumbrüche getrennt – und übergibt sie als Argumente an einen angegebenen Befehl. Dies ist entscheidend, da viele Unix-Befehle keine weitergeleitete Eingabe direkt als Argumente akzeptieren; sie erwarten Argumente in der Befehlszeile. xargs löst dieses Problem auf elegante Weise.

Die grundlegende Syntax lautet:

command | xargs [options] another_command

Um beispielsweise alle .txt Dateien im aktuellen Verzeichnis zu finden und zu löschen:

find . -name "*.txt" | xargs rm

Hier erzeugt find eine Liste von .txt Dateinamen und schreibt sie in stdout. xargs liest diese Liste und übergibt die Dateinamen als Argumente an rm, das sie dann löscht – alles in einem einzigen, effizienten Vorgang.

> Warum nicht einfach rm $(find . -name "*.txt") verwenden? Die Befehlssubstitution kann fehlschlagen oder sich unerwartet verhalten, wenn die Argumentliste extrem lang ist oder wenn Dateinamen Sonderzeichen enthalten. xargs behandelt beide Szenarien sicherer und effizienter.

Grundlegende Verwendung von xargs

Bevor wir uns mit fortgeschrittenen Beispielen befassen, wollen wir ein klares Verständnis des grundlegenden Aufrufmusters etablieren.

Übergabe einer einfachen Argumentliste

echo "file1.txt file2.txt file3.txt" | xargs touch

Dieser Befehl erstellt drei Dateien – file1.txt, file2.txt und file3.txt – indem alle drei Namen als Argumente an touch übergeben werden. Ohne xargs müssten Sie entweder jeden Dateinamen manuell eingeben oder eine Schleife schreiben.

Überprüfen, was xargs ausführen wird

Bevor Sie einen potenziell destruktiven Befehl ausführen, verwenden Sie das -t Flag, um den konstruierten Befehl vor der Ausführung in stderr auszugeben:

echo "file1.txt file2.txt" | xargs -t rm

Ausgabe:

rm file1.txt file2.txt

Dies ist für das Debuggen von Pipelines unschätzbar wertvoll, bevor man sich zur Ausführung entschließt.

Praktische Beispiele zur Verwendung von xargs

1. Löschen von Dateien, die mit find gefunden wurden

Eine der häufigsten und leistungsstärksten Verwendungen von xargs ist die Kombination mit find zum Löschen von Dateien, die bestimmten Kriterien entsprechen:

find /var/log -name "*.log" -mtime +30 | xargs rm

Dies findet alle .log Dateien in /var/log, die älter als 30 Tage sind, und löscht sie. Diese Art der automatisierten Bereinigung ist für die Serverwartung unerlässlich – etwas, mit dem Administratoren, die VPS Hosting oder Dedizierte Server betreiben, regelmäßig konfrontiert werden, um die Festplattennutzung unter Kontrolle zu halten.

2. Begrenzung der Anzahl von Argumenten pro Ausführung mit -n

Standardmäßig übergibt xargs so viele Argumente wie möglich in einem einzigen Aufruf an den Befehl. Die Option -n ermöglicht es Ihnen, genau zu steuern, wie viele Argumente pro Ausführung übergeben werden:

echo "one two three four five six" | xargs -n 2 echo

Ausgabe:

one two
three four
five six

Dies ist besonders nützlich, wenn ein Befehl eine Begrenzung der Anzahl akzeptierbarer Argumente hat oder wenn Sie Elemente in kontrollierten Stapeln verarbeiten möchten.

3. Umgang mit Dateinamen mit Leerzeichen und Sonderzeichen mithilfe von -0

Dies ist eine der wichtigsten Sicherheitspraktiken bei der Verwendung von xargs. Dateinamen, die Leerzeichen, Zeilenumbrüche oder andere Sonderzeichen enthalten, werden naive Pipelines zum Scheitern bringen. Die Lösung besteht darin, find mit -print0 (das Dateinamen durch Null-Bytes statt Zeilenumbrüche trennt) und xargs mit -0 zu verwenden:

find . -name "*.txt" -print0 | xargs -0 rm

Das Null-Byte (

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen