Ü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