Startseite > Umgebung & Hilfsprogramme > xargs

xargs: Befehle aus der Standardeingabe erstellen und ausführen

Der Befehl xargs liest Elemente aus der Standardeingabe (stdin) und verwendet sie, um Argumentlisten für andere Befehle zu erstellen und auszuführen. Dies ist äußerst nützlich für die Automatisierung komplexer Aufgaben, wie z. B. die Umwandlung mehrerer Zeilen von Eingaben, die über eine Pipe (|) übergeben werden, in Argumente für einen einzelnen Befehl oder die Begrenzung der Anzahl der gleichzeitig verarbeitbaren Argumente.

Übersicht

xargs liest Daten aus der Standardeingabe, interpretiert sie als durch Leerzeichen oder Zeilenumbrüche getrennte Argumente und übergibt sie dann als Argumente an den angegebenen Befehl zur Ausführung. Dies ist besonders nützlich in Kombination mit dem find-Befehl, wo es eine starke Synergie für die Stapelverarbeitung von Dateilisten bietet.

Hauptfunktionen

  • Umwandlung von Standardeingabedaten in Befehlsargumente
  • Begrenzung der Anzahl von Argumenten bei der Befehlsausführung
  • Unterstützung für parallele Verarbeitung
  • Sichere Handhabung von Dateinamen mit Sonderzeichen

Wichtige Optionen

Die wichtigsten Optionen des xargs-Befehls werden verwendet, um die Eingabeverarbeitung, die Befehlsausführung und das Ausgabeformat zu steuern.

Eingabeverarbeitung

Ausführungssteuerung

Erzeugter Befehl:

Kombinieren Sie die Befehle.

Beschreibung:

`xargs` Führen Sie den Befehl aus.

Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.

Anwendungsbeispiele

xargs kann in verschiedenen Szenarien flexibel eingesetzt werden. Hier sind einige gängige Anwendungsbeispiele.

Grundlegende Verwendung: Mehrere Dateien löschen

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

Löscht die über die Standardeingabe empfangenen Dateinamen, indem sie als Argumente an den rm-Befehl übergeben werden.

Sicheres Löschen von Dateien mit find

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

Löscht Dateien sicher, auch wenn Dateinamen Leerzeichen oder Sonderzeichen enthalten, indem find -print0 und xargs -0 verwendet werden.

Befehl für jede Datei ausführen (Platzhalter-String)

find . -name "*.log" | xargs -I {} mv {} {}.old

Ändert die Erweiterung von gefundenen .log-Dateien in .old, indem der mv-Befehl für jede Datei ausgeführt wird.

SSH-Verbindungen zu mehreren Hosts parallel aufbauen

cat hostnames.txt | xargs -P 5 -I {} ssh {} "uptime"

Versucht, gleichzeitig 5 SSH-Verbindungen zu jedem Host in der Datei hostnames.txt herzustellen, um die Uptime zu überprüfen.

Bestätigungsaufforderung vor der Ausführung

ls *.tmp | xargs -p rm

Fragt vor dem Löschen aller .tmp-Dateien im aktuellen Verzeichnis nach Bestätigung für jede Datei.

Tipps & Hinweise

Tipps und zu beachtende Punkte für die effektive Nutzung von xargs.

Sichere Handhabung von Dateinamen

Da Dateinamen Leerzeichen, Tabs, Zeilenumbrüche oder Anführungszeichen enthalten können, verwenden Sie bei der Kombination mit dem find-Befehl unbedingt die Kombination `find ... -print0 | xargs -0 ...`. Dies verhindert solche Probleme, indem Elemente durch Null-Bytes getrennt werden.

  • Verwenden Sie immer `find -print0` zusammen mit `xargs -0`
  • Da standardmäßig durch Leerzeichen getrennt wird, kann es bei Dateinamen mit Leerzeichen zu Problemen kommen

Vorsicht bei der Ausführung gefährlicher Befehle

Seien Sie äußerst vorsichtig, wenn Sie xargs mit Befehlen wie rm, mv, chown usw. verwenden, die Systemänderungen vornehmen. Es ist ratsam, die Option `-p` zu verwenden, um vor jeder Ausführung eine Bestätigung zu erhalten, oder die Option `-t`, um die auszuführenden Befehle im Voraus zu überprüfen.

  • Bestätigung vor der Ausführung mit der Option `-p` (prompt)
  • Überprüfung der auszuführenden Befehle mit der Option `-t` (trace)
  • Testen Sie zuerst mit `echo` usw., um sicherzustellen, dass es wie erwartet funktioniert

xargs vs. for-Schleife

Für einfache Aufgaben kann die for-Schleife der Shell intuitiver sein, aber wenn Sie eine sehr große Anzahl von Dateien/Elementen verarbeiten müssen, parallele Verarbeitung benötigen oder die maximale Befehlszeilenlänge überschreiten, ist xargs eine effizientere und leistungsfähigere Alternative.

  • Verarbeitung großer Dateimengen: `xargs` ist speichereffizienter
  • Parallele Verarbeitung: `xargs -P`
  • Maximale Befehlszeilenlänge: `xargs` teilt automatisch auf

Gleiche Kategorie Befehle