xargs(1) xargs(1)
NAME
xargs - Argumentliste(n) aufbauen und Kommando ausführen
SYNTAX
xargs [option ...] [kommando [anfangsargument ...]]
BESCHREIBUNG
xargs verbindet beim Aufruf angegebene Argumente und solche, die es
von der Standardeingabe liest, miteinander. Danach führt xargs das
beim Aufruf angegebene Kommando ein- oder mehrmals aus. Wie viele
Argumente für jeden Kommandoaufruf verwendet werden und auf welche
Weise diese Argumente kombiniert werden, können Sie durch Optionen
steuern.
Die von der Standardeingabe gelesenen Argumente müssen zusammenhän-
gende 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 Gegen-
schrägstrich \ entwertet oder in Anführungszeichen "..." oder Hochkom-
mas '...' eingeschlossen werden. Ansonsten würden sie als Trennzeichen
zwischen den Argumenten interpretiert. Auch sonst gelten die üblichen
Entwertungsmechanismen, d. h., Sonderzeichen werden dadurch entwertet,
daß sie in Anführungszeichen "..." oder Hochkommas '...' eingeschlos-
sen werden oder ihnen ein Gegenschrägstrich \ vorangestellt wird.
OPTIONEN
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
Standardeingabe 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 Anfangsar-
gumente, dann die Argumente von der Standardeingabe eingelesen,
bis ein interner Puffer voll ist. Dann wird kommando mit all die-
sen Argumenten ausgeführt. Dieser Vorgang wird so lange wieder-
holt, 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 ersetzungszeichenkette
(I - insert) kommando wird für jede von der Standardeingabe ein-
gelesene 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 Anfangsargu-
mente eingefügt.
In der Liste der Anfangsargumente können maximal fünf Argumente
jeweils ein- oder mehrmals ersetzungszeichenkette enthalten.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
xargs(1) xargs(1)
Leer- und Tabulatorzeichen zu Beginn einer Zeile werden igno-
riert. 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 geschweif-
ter Klammern {} angenommen, falls nicht explizit angegeben.
-L zeilenanzahl
(L - line) kommando wird für jede zeilenanzahl nicht-leerer Argu-
mentzeilen, die xargs von der Standardeingabe liest, ausgeführt.
Bleiben für den letzten Aufruf von kommando weniger als
zeilenanzahl Zeilen übrig, so wird kommando mit diesen verblei-
benden 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.
Dies entspricht der alten Option -l, die weiterhin unterstützt
wird. Ist zeilenanzahl bei -l nicht angegeben, wird 1 angenommen.
Bei -l wird automatisch -x gesetzt.
-n arganzahl
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 über-
steigt, so werden weniger Argumente verwendet. Wenn für den letz-
ten Aufruf von kommando weniger als arganzahl Argumente übrig-
bleiben, so werden diese verbleibenden Argumente verwendet. Wenn
auch die Option -x gesetzt ist, so dürfen jeweils arganzahl Argu-
mente die durch maxgröße festgelegte Obergrenze (siehe Option -s)
nicht überschreiten, andernfalls wird die Ausführung von xargs
beendet.
-E dateiende
xargs liest die Standardeingabe 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 inter-
pretiert.
Dies entspricht der alten Option -e, die weiterhin unterstützt
wird. Wird -e ohne dateiende angegeben, ist kein logisches Datei-
ende mehr definiert. Der Unterstrich _ hat keine Sonderbedeutung
und wird als normales Zeichen verarbeitet.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
xargs(1) xargs(1)
Weder -E noch -e angegeben:
Der Unterstrich _ wird als logisches Dateiende interpretiert.
-p (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 ?..., ange-
zeigt.
-s maxgröße
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, daß in maxgröße ein zusätzliches Zeichen für jedes Argument
und die Anzahl der Zeichen im Kommandonamen bereits enthalten
sind.
-t (t - trace) Das kommando und jede erstellte Argumentliste werden
unmittelbar bevor sie abgearbeitet werden auf die Standardfehler-
ausgabe ausgegeben.
-x Die Ausführung von xargs wird beendet, wenn die Länge einer Argu-
mentliste 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) über-
schreitet.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn kommando mit -
beginnt.
kommando
Für kommando können Sie ein beliebiges Kommando angeben. Wenn die
Ausführung von kommando den Endestatus 255 liefert oder kommando
nicht ausgeführt werden kann, wird die Ausführung von xargs been-
det. Wenn kommando ein Shell-Skript ist, sollte es explizit mit
exit einen passenden Endestatus liefern, um den zufälligen Wert
255 zu vermeiden (z. B. exit -1).
kommando nicht angegeben:
Für kommando wird echo angenommen.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
xargs(1) xargs(1)
anfangsargument
Die beim Aufruf von xargs angegebenen Anfangsargumente und die
von der Standardeingabe eingelesenen Argumente werden wie oben
beschrieben zu Argumentlisten zusammengestellt (siehe Optionen
-I, -L und -n) und kommando wird mit diesen Argumentlisten ausge-
führt.
Am Anfang einer Argumentliste stehen immer die beim Aufruf ange-
gebenen Anfangsargumente, es sei denn die Option -I (bzw. -i) ist
gesetzt.
anfangsargument nicht angegeben:
Die Argumentlisten werden nur aus den von der Standardeingabe
eingelesenen Argumenten aufgebaut.
ENDESTATUS
0 Jeder Aufruf von kommando hat den Endestatus 0 geliefert.
1-125 Die Argumente konnten nicht wie gefordert zusammengestellt wer-
den oder mind. ein Aufruf von kommando hat einen Endestatus
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 Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte.
LCCOLLATE beeinflußt die Sortierreihenfolge.
LCCTYPE bestimmt die Zeichenklassen und die Zeichenkonvertierung.
Wenn LCMESSAGES, LCCOLLATE oder LCCTYPE nicht oder als leere Zei-
chenkette definiert ist, wird der Wert von LANG als Standardwert für
die jeweils nicht gesetzte oder leere Variable herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
Hat eine der Variablen für die internationale Umgebung einen ungülti-
gen Wert, verhält sich das System so, als wäre keine Variable gesetzt.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
xargs(1) xargs(1)
BEISPIELE
Beispiel 1
Mit der folgenden Shell-Prozedur schiebe werden alle Dateien in einem
Verzeichnis, deren Namen nicht mit einem Punkt "." beginnen, in ein
anderes Verzeichnis übertragen:
$ cat schiebe
ls $1 | xargs -I {} -t mv $1/{} $2/{}
$ schiebe dir1 dir2
mv dir1/datei1 dir2/datei1
mv dir1/datei2 dir2/datei2
mv dir1/datei3 dir2/datei3
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 Verzeichnisses dir1 aus, wobei in einer
Zeile jeweils ein Dateiname steht. Diese Dateinamen werden nacheinan-
der 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 werundwann hängt die Ausgabe der in run-
den Klammern (...) zusammengefaßten Kommandos in einer Zeile an das
Ende der Datei log an:
$ cat werundwann
(logname; date; echo $0 $*) | xargs >>log
$ cat log
michael Wed Mar 27 14:21:06 MET 1991 werundwann
Beispiel 3
Die folgende Shell-Prozedur archiviere archiviert die Dateien im aktu-
ellen Verzeichnis, deren Namen nicht mit einem Punkt "." beginnen, in
einem Archiv archiv.a [siehe ar(1)]:
$ cat archiviere
ls | xargs -p -L 1 ar r archiv.a
$ archiviere
ar r archiv.a datei1 ?... y
ar: creating archiv.a
ar r archiv.a datei2 ?... n
ar r archiv.a datei3 ?... y
ar r archiv.a datei4 ?... n
$ ar t archiv.a
datei1
datei3
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
xargs(1) xargs(1)
ls gibt den Inhalt des aktuellen Verzeichnisses auf die Standardaus-
gabe 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 jedes-
mal 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 archi-
viert die aktuelle Datei in archiv.a. Danach werden weitere Dateien in
archiv.a archiviert, wenn Sie die Fragen bejahen. Zum Schluß können
Sie sich mit ar -t das Inhaltsverzeichnis von archiv.a ausgeben las-
sen.
SIEHE AUCH
echo(1).
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98