Verwendung des Linux-Befehls xargs

Verwendung des Linux-Befehls xargs

1. Funktion:

xargs kann die durch Leerzeichen oder Zeilenumbrüche getrennten Daten in stdin in durch Leerzeichen getrennte Argumente umwandeln und an andere Befehle übergeben. Da Leerzeichen als Trennzeichen verwendet werden, kann es sein, dass xargs Dateien oder Substantive mit anderen Bedeutungen falsch einschätzt, wenn diese Leerzeichen enthalten. Einfach ausgedrückt ist xargs ein Filter, der Parameter an andere Befehle übergibt und eine der wichtigen Komponenten zum Erstellen einzeiliger Befehle ist.

Der Grund für die Verwendung von xargs liegt darin, dass viele Befehle die Verwendung von Pipes | zur Übergabe von Parametern nicht unterstützen, zum Beispiel:

find /sbin -perm +700 |ls -l //Dieser Befehl ist falsch, da die Standardeingabe nicht als Parameter für ls verwendet werden kann find /sbin -perm +700 |xargs ls -l //Das ist richtig

2. Befehlsformat

xargs [Optionen] [Befehl]

3. Beschreibung der Option:

-0: Wenn die Eingabe-Standardeingabe Sonderzeichen wie Backquote `, Backslash \, Leerzeichen usw. enthält, kann xargs sie auf normale Zeichen zurücksetzen. Die Standardoption für xargs.
-e <flag>,-E <flag>,--eof=<eof-str>: eof bedeutet Ende der Dateiendung. Flag kann eine Zeichenfolge oder mehrere durch Leerzeichen getrennte Zeichenfolgen sein. Wenn xargs dieses Flag analysiert, funktioniert es nicht mehr. Siehe Beispiel 2.
-p: Den Benutzer jedes Mal fragen, wenn ein Argument ausgeführt wird.
-n <num>: Gibt die Anzahl der Argumente an, die bei der Ausführung des Befehls verwendet werden (angegeben durch num). Standardmäßig werden alle Parameter verwendet.
-t: Zuerst den Befehl drucken und dann ausführen.
-a <Datei>: Aus Datei als sdtin lesen.
-i[replace-str]: Weist xargs an, {} anstelle der von der Standardeingabe gelesenen Parameter zu verwenden. Sie können die Ersatzzeichenfolge replace-str angeben. Wenn nicht angegeben, ist der Standardwert {}. Es wird empfohlen, -I zu verwenden, da dies dem POSIX-Standard entspricht.
-I [replace-str]: Weist jeden von xargs ausgegebenen Parameter dem nachfolgenden Befehl separat zu. Der Parameter muss durch die angegebene Ersetzungszeichenfolge replace-str ersetzt werden. Das heißt, replace-str kann nicht als Standard verwendet werden und muss explizit angegeben werden. Symbole wie {} $ @ können verwendet werden. Seine Hauptfunktion besteht darin, die Parameterposition anzupassen, wenn nach dem xargs-Befehl mehrere Parameter vorhanden sind. Beispiel: find . -name "*.txt"|xargs -I {} cp {} /tmp/{}.bak.
-r: oder --no-run-if-empty, wenn die Eingabe von xargs leer ist, wird xargs gestoppt und es besteht keine Notwendigkeit, nachfolgende Befehle auszuführen. -r ist die Standardoption von xargs.
-s <num>: Die maximale Anzahl von Zeichen in der Befehlszeile, die sich auf die maximale Anzahl von Zeichen in der Befehlszeile nach xargs bezieht, einschließlich Befehlen, Leerzeichen und Zeilenumbrüchen. Jeder Parameter wird separat an den auf xargs folgenden Befehl übergeben. Siehe Beispiel 4.
-L <Zeilennummer>: Legt die maximale Anzahl von Zeilen in der Standardeingabe als Parameter für jede Ausführung des Befehls fest. Siehe Beispiel 5.
-d <delim>, --delimiter=<delim>: xargs verwendet standardmäßig Zeilenumbrüche und Leerzeichen als Trennzeichen, wenn die Standardeingabe verarbeitet wird. Das Trennzeichen für Ausgabeargumente ist ein Leerzeichen. Ändern Sie hier das Trennzeichen, wenn xargs die Standardeingabe verarbeitet.
-x: bedeutet eXit, was hauptsächlich mit -s verwendet wird. Wenn die Anzahl der Zeichen in der Befehlszeile größer ist als der durch -s angegebene Wert, wird xargs beendet.
-P: Ändert die maximale Anzahl von Prozessen. Der Standardwert ist 1. Wenn er 0 ist, bedeutet dies, dass so viele Prozesse wie möglich vorhanden sind. Diese Option wird selten genutzt und ihre Verwendung ist derzeit unklar.

4. Anwendungsbeispiele

(1) Setzen Sie die Sonderzeichen der Shell auf normale Zeichen zurück.

[b3335@MIC ~]$ echo '`0123`4 56789'|xargs -t echo
echo `0123`4 56789 
`0123`4 56789

Wenn Sie die folgenden Operationen direkt ausführen, erhalten Sie eine Fehlermeldung, dass der Befehl 01234 nicht gefunden werden kann, da die Backquotes 01234 als Befehl in der Shell ausführen würden, 01234 aber kein Befehl ist. -t bedeutet, den Befehl zuerst auszudrucken und dann auszuführen.

[b3335@MIC ~]$ echo `01234` 56789
-bash: 01234: Befehl nicht gefunden
56789

(2) Setzen Sie das Endzeichen beim Lesen von Parametern durch xargs so, dass es mit einem Komma endet. Hierbei ist zu beachten, dass es sich bei der Endmarkierung um ein eigenes, also durch Leerzeichen bzw. Zeilenumbrüche abgetrenntes Feld handeln muss.

[b3335@MIC ~]$ echo 01234 , 56789|xargs -E ","
01234

(3) Wenn Sie Befehle wie rm und mv verwenden, um mehrere Dateien gleichzeitig zu bearbeiten, wird möglicherweise die Fehlermeldung „Argumentliste zu lang“ angezeigt. In diesem Fall können Sie xargs verwenden, um das Problem zu lösen. xargs separiert den String der Standardeingabe und übergibt ihn separat als Parameter an den nachfolgenden Befehl. Fügen Sie beispielsweise das Suffix zu allen Dateien im aktuellen Verzeichnis hinzu.

ls | xargs -t -i mv {} {}.bak

#Wählen Sie Dateien aus, die die Bedingungen erfüllen ls|grep -E "201701|201702|201703|201704|201705|201706|201707|201708|201709|201710" |xargs -i mv {} {}.bak

(4) Legen Sie die maximale Anzahl von Zeichen in der Befehlszeile fest. Standardmäßig werden die Parameter zur Ausführung einzeln an den Befehl übergeben.

[b3335@MIC-Test]$ echo "01234 56789"|xargs -t -s 11
Echo 01234 
01234
Echo 56789 
56789

(5) Legen Sie die Anzahl der Zeilen in der Standardeingabe fest, die jedes Mal als Befehlsparameter verwendet werden sollen. Standardmäßig werden alle Zeilen der Standardeingabe zu einer Zeile zusammengeführt und auf einmal zur Ausführung an den Befehl übergeben.

[b3335@MIC-Test]$ echo -e "01234\n56789\n01234" | xargs -t -L 2 echo 
echo 01234 56789 
01234 56789
Echo 01234 
01234

(6) Geben Sie den Dateiinhalt durch Leerzeichen getrennt in der gleichen Zeile aus.

//Liste den Inhalt der Datei cat test.txt auf
abcd
Abonnieren

//Mehrere Eingabezeilen und eine Ausgabezeile: 
Katze test.txt | xargs
abcdefghijklmno

(7) In Kombination mit ps, grep, awk und kill wird der angegebene Prozess zwangsweise beendet

ps -ef|grep spp|awk '{printf "%s ",$2}'|xargs kill -9

Befehlserklärung:
ps -ef|grep spp wird verwendet, um den Prozess zu finden, der spp enthält, awk '{printf "%s ",$2,FNR} druckt die Zielprozess-ID und xargs kill -9 übergibt die Zielprozess-ID als Parameter an kill -9, um den Prozess zu beenden.

Oben finden Sie detaillierte Informationen zur Verwendung des Linux-Befehls xargs. Weitere Informationen zum Linux-Befehl xargs finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Linux-Grundlagen: Eine Einführung in den Befehl xargs
  • Detaillierte Erklärung des xargs-Befehls unter Linux und des Unterschieds zwischen xargs und Pipeline
  • Eine detaillierte Einführung in den Linux-Befehl xargs
  • Detaillierte Erklärung der Verwendung des Befehls xargs beim Erlernen von Linux-Shell-Skripten
  • Detailliertes Tutorial zur Verwendung des Befehls xargs unter Linux

<<:  Äußerst detaillierte Freigabe der MySQL-Nutzungsspezifikation

>>:  Detaillierte Erläuterung des JavaScript-Betriebsmechanismus und eine kurze Diskussion über Event Loop

Artikel empfehlen

Installieren Sie MySQL (einschließlich utf8) mit Docker unter Windows/Mac

Inhaltsverzeichnis 1. Docker-Installation auf dem...

Zusammenfassung verschiedener Übermittlungsmethoden für HTML-Formulare

Die gebräuchlichste, am häufigsten verwendete und ...

Zusammenfassung der @-Verwendung in CSS (mit Beispielen und Erklärungen)

Eine At-Regel ist eine Deklaration, die Anweisung...

Anwendungsbeispiele für den Mysql Inner Join (unbedingt lesen)

Grammatikregeln SELECT Spaltenname(n) FROM Tabell...

Details zum Schreiben von React in einem Vue-Projekt

Wir können jsx/tsx-Dateien direkt erstellen Die P...

Beispiel für eine automatische Importmethode für das Vue3.0-Routing

1. Voraussetzungen Wir verwenden zum Importieren ...

mysql: [FEHLER] unbekannte Option '--skip-grant-tables'

MySQL-Datenbank meldet FEHLER 1045 (28000): Zugri...

So entschlüsseln Sie Linux-Versionsinformationen

Das Anzeigen und Interpretieren von Informationen...

So richten Sie domänenübergreifenden Zugriff in IIS web.config ein

Anforderung: Die Seite muss ein Bild anzeigen, ab...