English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
xargs (vollständiger englischer Name: eXtended ARGuments) ist ein Filter für das Übermitteln von Parametern an Befehle und auch ein Werkzeug zur Kombination mehrerer Befehle.
xargs kann Pipe (|) oder Standard-Eingabe (stdin) Daten in Befehlszeilenparameter umwandeln und auch Daten aus der Ausgabe einer Datei lesen.
xargs kann auch Einz Zeilen oder Mehrzeilen-Texteingaben in andere Formate umwandeln, z.B. Mehrzeilen in Einzzeilen und Einzzeilen in Mehrzeilen.
xargs verwendet standardmäßig den Befehl echo, was bedeutet, dass die Eingaben, die an xargs über Pipe (|) weitergeleitet werden, Zeilenumbrüche und Leerzeichen enthalten, die jedoch durch xargs in Leerzeichen umgewandelt werden.
xargs ist ein mächtiger Befehl, der die Ausgabe eines Befehls erfassen und an einen anderen Befehl weiterleiten kann.
Der Grund, warum dieser Befehl verwendet werden kann, liegt darin, dass viele Befehle das Pipe (|) zur Übermittlung von Parametern nicht unterstützen, und es im täglichen Arbeitsablauf notwendig ist, daher gibt es den Befehl xargs, z.B.:
find /sbin -perm +700 |ls -l # Dieser Befehl ist falsch find /sbin -perm +700 |xargs ls -l # Das ist der richtige Weg
xargs wird in der Regel mit Pipe (|) verwendet.
Befehlsformat:
somecommand |xargs -item Befehl
Parameter:
-a Datei, die aus einer Datei gelesen wird, als stdin
-e Flag, beachte, dass es manchmal auch sein könnte-E, das Flag muss ein durch Leerzeichen getrenntes Zeichen sein, und wenn xargs das Zeichen 'flag' erkennt, wird der Vorgang abgebrochen.
-p Bei jeder Ausführung eines Arguments wird einmal nach dem Benutzer gefragt.
-n num Fügt eine Anzahl hinter num, um anzuzeigen, wie viele Argumente der Befehl bei der Ausführung einmal verwendet, Standard ist die Verwendung aller.
-t bedeutet, dass der Befehl zuerst gedruckt und dann ausgeführt wird.
-i oder-Ich, das hängt davon ab, welche Linux-Unterstützung vorhanden ist, gibt die Namen der Elemente von xargs, normalerweise wird jede Zeile nach und nach einem {} zugewiesen, kann {} verwendet werden.
-r no-run-if-empty Wenn xargs keine Eingabe hat, wird xargs beendet und nicht mehr ausgeführt.
-s num Maximale Anzahl der Zeichen in der Zeile des Befehls, bezieht sich auf die maximale Anzahl der Zeichen der Zeile des Befehls, der nach xargs folgt.
-L num Liest num Zeilen von stdin einmal und gibt sie an den command-Befehl weiter.
-l Gleich -L.
-d delim Trennzeichen, der Standard-Trennzeichen von xargs ist die Eingabezeile, das Trennzeichen für die Argumente ist ein Leerzeichen, hier wird das Trennzeichen von xargs geändert.
-x exit bedeutet, hauptsächlich um-s verwendet ...
-P Ändert die maximale Anzahl der Prozesse, Standard ist1Wird 0, bedeutet das "so viele wie möglich", diesen Fall habe ich nicht erwartet, sollte man im Alltag nicht oft benötigen, oder?
xargs wird als Ersatz-Werkzeug verwendet, liest Eingabedaten, formatiert sie neu und gibt sie aus.
Definieren Sie eine Testdatei mit mehrzeiligen Textdaten:
# cat test.txt a b c d e f g h i j k l m n o p q r s t u v w x y z
Mehrzeiliger Eingabe und Zeilenausgabe:
# cat test.txt | xargs a b c d e f g h i j k l m n o p q r s t u v w x y z
-Verwendung der n-Option für mehrzeilige Ausgabe:
# cat test.txt | xargs -n3 a b c d e f g h i j k l m n o p q r s t u v w x y z
-Die d-Option kann einen eigenen Trennzeichen angeben:
# echo "nameXnameXnameXname" | xargs -dX name name name name
Kombination -Verwendung der n-Option:
# echo "nameXnameXnameXname" | xargs -dX -n2 name name name name
Lesen von stdin, überträgt formatierte Parameter an den Befehl
Angenommen, ein Befehl ist sk.sh und eine Datei arg.txt, die die Parameter speichert:
#!/bin/bash # Inhalt des sk.sh-Befehls, druckt alle Parameter aus. echo $*
Inhalt der Datei arg.txt:
# cat arg.txt aaa bbb ccc
eine Option von xargs -Ich,verwende -I Gibt einen Ersetzungssatz {} an, der bei der Erweiterung von xargs ersetzt wird, wenn -I In Kombination mit xargs verwendet, wird jeder Parameterbefehl einmal ausgeführt:
# cat arg.txt | xargs -I {} ./sk.sh -p {} -l -p aaa -l -p bbb -l -p ccc -l
Kopiere alle Bilddateien nach /data/Im Verzeichnis images:
ls *.jpg | xargs -n1 -I {} cp {} /data/images
xargs in Kombination mit find verwenden
Wenn du zu viele Dateien mit rm löschen möchtest, kannst du eine Fehlermeldung erhalten:/bin/rm Argument list too long. Verwende xargs, um dieses Problem zu vermeiden:
find . -type f -name "*.log" -print0 | xargs -0 rm -f
xargs -0 Setze \0 als Trennzeichen.
Zähle die Anzahl der Zeilen aller php-Dateien in einem Quelldateiverzeichnis:
find . -type f -name "*.php" -print0 | xargs -0 wc -l
Suche alle jpg-Dateien und komprimiere sie:
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
xargs andere Anwendungen
Wenn du eine Datei hast, die viele URLs enthält, die du herunterladen möchtest, kannst du xargs verwenden, um alle Links herunterzuladen:
# cat url-list.txt | xargs wget -c