(construct argument lists and involve utility)
xargs verbindet beim Aufruf angegebene Argumente und solche, die es von der Standard-Eingabe liest, miteinander. Danach führt xargs das beim Aufruf angegebene Kommando ein- oder mehrmals aus. Wie viele Argumente für jeden Kommando-Aufruf verwendet werden und auf welche Weise diese Argumente kombiniert werden, können Sie durch Optionen steuern.
Die von der Standard-Eingabe gelesenen Argumente müssen zusammenhängende Zeichenketten sein, die von einem oder mehreren Leer-, Tabulator- oder einem Neue-Zeile-Zeichen abgeschlossen werden. Leere Zeilen werden gelöscht. Wenn Leer- oder Tabulatorzeichen Bestandteil eines Arguments sein sollen, müssen sie entweder durch einen Gegenschrägstrich \ entwertet oder in Anführungszeichen "..." oder Hochkommas '...' eingeschlossen werden. Ansonsten würden sie als Trennzeichen zwischen den Argumenten interpretiert. Auch sonst gelten die üblichen Entwertungsmechanismen, d.h., Sonderzeichen werden dadurch entwertet, dass sie in Anführungszeichen "..." oder Hochkommas '...' eingeschlossen werden oder ihnen ein Gegenschrägstrich \ vorangestellt wird.
Syntax
xargs[ option]...[ kommando[ anfangs_argument]...] |
Mit den Optionen -I (bzw. -i) , -L (bzw. -l) und -n legen Sie fest, wie die beim Aufruf von xargs angegebenen Anfangsargumente und die von der Standard-Eingabe eingelesenen Argumente für einen Aufruf des Kommandos kommando verwendet werden. Keine der Optionen -I (bzw. -i) , -L (bzw. -l) oder -n angegeben: Zunächst werden die beim Aufruf von xargs angegebenen Anfangsargumente, dann die Argumente von der Standard-Eingabe eingelesen, bis ein interner Puffer voll ist. Dann wird kommando mit all diesen Argumenten ausgeführt. Dieser Vorgang wird so lange wiederholt, bis alle Argumente abgearbeitet sind. Kombinationen der Optionen -I (bzw. -i) , -L (bzw. -l) oder -n: Wenn sich Optionen gegenseitig aufheben, etwa -l und -n, so gilt die zuletzt angegebene Option.
(I - insert) kommando wird für jede von der Standard-Eingabe eingelesene Zeile ausgeführt. Dabei wird jede Zeile als ein Argument interpretiert und für jedes Vorkommen von ersetzungszeichenkette in die Liste der beim Aufruf von xargs angegebenen Anfangsargumente eingefügt. In der Liste der Anfangsargumente können maximal fünf Argumente jeweils ein- oder mehrmals ersetzungszeichenkette enthalten. Leer- und Tabulatorzeichen zu Beginn einer Zeile werden ignoriert. Die erstellten Argumente dürfen aus maximal 255 Zeichen bestehen. Bei -I wird automatisch -x gesetzt. Dies entspricht der alten Option -i, die weiterhin unterstützt wird. Für ersetzungszeichenkette wird bei -i ein Paar geschweifter Klammern {} angenommen, falls nicht explizit angegeben.
(L - line) kommando wird für jede zeilenanzahl nicht-leerer Argumentzeilen, die xargs von der Standard-Eingabe liest, ausgeführt. Bleiben für den letzten Aufruf von kommando weniger als zeilenanzahl Zeilen übrig, so wird kommando mit diesen verbleibenden Zeilen ausgeführt. Eine Zeile gilt beim ersten Auftreten eines Neue-Zeile-Zeichens als abgeschlossen, es sei denn, das letzte Zeichen in der Zeile ist ein Leer- oder Tabulatorzeichen. In diesem Fall wird die Zeile in der nächsten nicht leeren Zeile fortgesetzt. Bei -L wird automatisch -x gesetzt. Dies entspricht der alten Option -l, die weiterhin unterstützt wird. Ist zeilenanzahl bei -l nicht angegeben, wird 1 angenommen.
kommando wird unter Verwendung möglichst vieler von der Standard-Eingabe eingelesener Argumente ausgeführt, maximal jedoch mit arganzahl Argumenten. Wenn die Gesamtgröße der Argumentliste die durch maxgröße (siehe Option -s) festgelegte Obergrenze übersteigt, so werden weniger Argumente verwendet. Wenn für den letzten Aufruf von kommando weniger als arganzahl Argumente übrigbleiben, so werden diese verbleibenden Argumente verwendet. Wenn auch die Option -x gesetzt ist, so dürfen jeweils arganzahl Argumente die durch maxgröße festgelegte Obergrenze (siehe Option -s) nicht überschreiten, andernfalls wird die Ausführung von xargs beendet.
xargs liest die Standard-Eingabe entweder bis zum Erreichen des tatsächlichen Dateiendes oder bis es das angegebene logische Dateiende dateiende erkennt. Für dateiende geben Sie eine Zeichenkette an. Diese Zeichenkette wird bei der Ausführung von xargs als logisches Dateiende interpretiert. Dies entspricht der alten Option -e, die weiterhin unterstützt wird. Wird -e ohne dateiende angegeben, ist kein logisches Dateiende mehr definiert. Der Unterstrich _ hat keine Sonderbedeutung und wird als normales Zeichen verarbeitet. Weder -E noch -e angegeben:
(p - prompt) Bei jedem Aufruf von kommando werden Sie gefragt, ob dieser Aufruf ausgeführt werden soll oder nicht. Dazu wird der trace-Modus (Option -t) eingeschaltet, und der Aufruf von kommando wird, gefolgt von der Eingabeaufforderung ?..., angezeigt.
Die maximale Anzahl von Zeichen in einer Argumentliste wird auf maxgröße gesetzt (eine Argumentliste ist eine Kombination von Argumenten, die nach den durch die Optionen -I (bzw. -i) , -L (bzw. -l) oder -n festgelegten Regeln erzeugt wurde). Zu beachten ist, dass in maxgröße ein zusätzliches Zeichen für jedes Argument und die Anzahl der Zeichen im Kommandonamen bereits enthalten sind.
(t - trace) Das kommando und jede erstellte Argumentliste werden unmittelbar bevor sie abgearbeitet werden auf die Standard-Fehlerausgabe ausgegeben.
Die Ausführung von xargs wird beendet, wenn die Länge einer Argumentliste die angegebene Obergrenze maxgröße (siehe Option -s) übersteigen würde. Die Option -x ist standardmäßig gesetzt, wenn die Optionen -I (bzw. -i) oder -l gesetzt sind. Wenn keine der Optionen -I (bzw. -i) , -L (bzw. -l) oder -n gesetzt ist, dann wird die Ausführung von xargs beendet, wenn die Gesamtlänge aller Argumente maxgröße (siehe Option -s) überschreitet.
Für kommando können Sie ein beliebiges Kommando angeben. Wenn die Ausführung von kommando den Ende-Status 255 liefert oder kommando nicht ausgeführt werden kann, wird die Ausführung von xargs beendet. Wenn kommando ein Shell-Skript ist, sollte es explizit mit exit einen passenden Ende-Status liefern, um den zufälligen Wert 255 zu vermeiden (z.B. exit -1). kommando nicht angegeben:
Die beim Aufruf von xargs angegebenen Anfangsargumente und die von der Standard-Eingabe eingelesenen Argumente werden wie oben beschrieben zu Argumentlisten zusammengestellt (siehe Optionen -I, -L und -n) und kommando wird mit diesen Argumentlisten ausgeführt. Am Anfang einer Argumentliste stehen immer die beim Aufruf angegebenen Anfangsargumente, es sei denn die Option -I (bzw. -i) ist gesetzt. anfangs_argument nicht angegeben: |
Endestatus
0 | Jeder Aufruf von kommando hat den Ende-Status 0 geliefert. |
1-125 | Die Argumente konnten nicht wie gefordert zusammengestellt werden oder mindestens ein Aufruf von kommando hat einen Ende-Status ungleich 0 geliefert oder ein anderer Fehler ist aufgetreten. |
126 | Das angegebene kommando existiert, kann aber nicht aufgerufen werden. |
127 | Das angegebene kommando ist nicht auffindbar. |
Internationale Umgebung
Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos xargs: LANG Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden. LC_ALL Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen. LC_COLLATE Legt die internationale Umgebung für das Verhalten von Bereichen, Äquivalenzklassen und Zeicheneinheiten in erweiterten regulären Ausdrücken für ja/nein-Abfragen fest. LC_CTYPE Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten) sowie das Verhalten von Zeichenklassen in erweiterten regulären Ausdrücken bei ja/nein-Abfragen. LC_MESSAGES Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden. NLSPATH Legt den Pfad der Meldungsdateien für LC_MESSAGES fest. PATH Legt den bei der Kommandosuche verwendeten Suchpfad fest. |
Beispiel 1
Mit der folgenden Shell-Prozedur schiebe werden alle Dateien in einem Dateiverzeichnis, deren Namen nicht mit einem Punkt . beginnen, in ein anderes Dateiverzeichnis übertragen:
Für die beiden Stellungsparameter $1 und $2 werden die beim Aufruf von schiebe angegebenen Argumente dir1 und dir2 eingesetzt. Das Kommando ls $1 gibt den Inhalt des Dateiverzeichnisses dir1 aus, wobei in einer Zeile jeweils ein Dateiname steht. Diese Dateinamen werden nacheinander für {} eingesetzt (Option -I {}). Vor jedem Aufruf des Kommandos mv wird das Kommando und die Argumentliste ausgegeben (Option -t). |
Beispiel 2
Die folgende Shell-Prozedur wer_und_wann hängt die Ausgabe der in runden Klammern (...) zusammengefassten Kommandos in einer Zeile an das Ende der Datei log an:
|
Beispiel 3
Die folgende Shell-Prozedur archiviere archiviert die Dateien im aktuellen Dateiverzeichnis, deren Namen nicht mit einem Punkt . beginnen, in einem Archiv archiv.a (siehe ar):
ls gibt den Inhalt des aktuellen Dateiverzeichnisses auf die Standard-Ausgabe aus, wobei in jeder Zeile jeweils ein Dateiname steht. xargs ruft dann ar mit den Argumenten r, archiv.a und jeweils einem Dateinamen, den ls liefert auf. Weil die Option -p gesetzt ist, werden Sie jedesmal gefragt, ob der entsprechende ar-Aufruf ausgeführt werden soll oder nicht. Wenn Sie diese Frage das erste Mal bejahen, legt ar das Archiv archiv.a an und gibt eine entsprechende Meldung aus und archiviert die aktuelle Datei in archiv.a. Danach werden weitere Dateien in archiv.a archiviert, wenn Sie die Fragen bejahen. Zum Schluss können Sie sich mit ar t das Inhaltsverzeichnis von archiv.a ausgeben lassen. |
Siehe auch
echo |