Xargs: Unterschied zwischen den Versionen
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 16: | Zeile 16: | ||
== Installation == | == Installation == | ||
''xargs'' ist Teil des Pakets [[findutils]] | |||
== Aufruf == | == Aufruf == | ||
<syntaxhighlight lang="bash" highlight="1" line> | <syntaxhighlight lang="bash" highlight="1" line> | ||
Zeile 95: | Zeile 94: | ||
[[Kategorie:Linux/Befehl]] | [[Kategorie:Linux/Befehl]] | ||
[[Kategorie:findutils]] | |||
</noinclude> | </noinclude> |
Aktuelle Version vom 23. Dezember 2024, 16:15 Uhr
xargs - Befehlszeilen von der Standardeingabe erstellen und ausführen
Beschreibung
xargs erwartet als Parameter ein Kommando, welches dann auf Dateien einer Liste angewandt wird, die von der Standardeingabe gelesen werden.
- Unter Linux/UNIX kann man fast alle Befehle auf einzelne Datei oder auch auf eine ganze Liste von Dateien anwenden.
- Wenn dies nicht möglich sein sollte oder sich eine Dateiliste nicht mit Wildcards erstellen lässt, kann man das Kommando xargs verwenden.
- Wenn viele Dateien (manchmal über den Verzeichnisbaum verteilt) gleichartig behandeln werden sollen, ob die Dateien nun gelöscht, der Eigentümer oder die Zugriffsrechte geändert werden soll, ist find(1) eine gute Lösung
find / -user toelpel -exec rm \{\} \;
Sollen viele Dateien bearbeiten werden wird für jede Datei ein eigene Befehl abgesetzt.
- Findet find(1) nun 2000 Dateien des Users toelpel, werden (hintereinander) 2000 Prozesse gestartet, die jeweils eine Datei löschen.
- Das verlangsamt den Vorgang und erzeugt unnötig Last.
- rm(1) kann mehrere Dateien auf einmal löschen, ein einzelnes rm(1)-Kommando mit 2000 Argumenten wäre sinnvoller.
Installation
xargs ist Teil des Pakets findutils
Aufruf
xargs [options] [command [initial-arguments]]
xargs wird mit folgender Syntax in einem Terminal aufgerufen.
- Kommando1 | xargs [Optionen] Kommando2
- Hierbei wird das "Kommando2" mit den Argumenten aufgerufen, die das "Kommando1" auf die Standardausgabe gibt.
xargs(1) hat die Funktion Kommandozeilen aus Standard-Input zu erstellen und auszuführen.
find / -user toelpel -print | xargs rm
find(1) listet alle Dateien des Users toelpel auf und reicht sie über die Pipe an xargs weiter. xargs(1) nimmt die Liste von der Standardeingabe und bastelt daraus und aus dem rm(1), was ihm als Argument übergeben wurde, ein rm(1)-Kommando mit 2000 Argumenten.
- Ergebnis: 3 Prozesse anstelle von 2001 Prozessen in der ersten Variante, um 2000 Dateien zu löschen.
Optionen
Unix | GNU | Parameter | Beschreibung |
---|---|---|---|
-a | --arg-file= | [Datei] | Liest die Argumente aus einer Datei anstatt von der Standardeingabe |
-0 | --null | Argumente werden aufgrund des NULL-Zeichens getrennt anstatt des Leerzeichen
| |
-d | --delimiter= | [Trennzeichen] | Argumente werden aufgrund des Trennzeichens getrennt anstatt des Leerzeichens
|
--help | Hilfe anzeigen | ||
-i | Standardmäßig wird "{}" als Ersatz-Zeichenkette verwendet, wie bei der Aktion -exec des Befehls find
| ||
-p | --interactive | Fragt vor jeder Ausführung, ob fortgefahren werden soll | |
-r | --no-run-if-empty | Führt "Kommando2" nicht aus, wenn die Standardeingabe keine Nicht-Leerzeichen enthält | |
-n | --max-args | Führt "Kommando2" auf jeweils eine bestimmt Anzahl von übergebenen Argumenten aus | |
-P | --max-procs | Führt "Kommando2" mehrfach aus
| |
-t | --verbose | Gibt mehr Informationen darüber, was gemacht wird |
Parameter
Umgebungsvariablen
Exit-Status
Konfiguration
Dateien
Anhang
Siehe auch
Dokumentation
Man-Page
- xargs(1)