GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Xargs-Befehl unter Linux

Die xargs Mit dem Dienstprogramm können Sie Befehle über die Standardeingabe erstellen und ausführen. Es wird normalerweise in Kombination mit anderen Befehlen durch Rohrleitungen verwendet.

Mit xargs , können Sie die Standardeingabe als Argument für Befehlszeilenprogramme wie mkdir bereitstellen und rm .

In diesem Tutorial behandeln wir die Grundlagen der Verwendung von xargs Befehl.

So verwenden Sie Linux xargs Befehl #

xargs liest Argumente aus der Standardeingabe, getrennt durch Leerzeichen oder Zeilenumbrüche, und führt den angegebenen Befehl unter Verwendung der Eingabe als Argumente des Befehls aus. Wenn kein Befehl angegeben wird, ist der Standardwert /bin/echo .

Die Syntax für die xargs Befehl lautet wie folgt:

xargs [OPTIONS] [COMMAND [initial-arguments]]

Das grundlegendste Beispiel für die Verwendung von xargs wäre, mehrere durch Leerzeichen getrennte Zeichenfolgen mit einer Pipe an xargs zu übergeben und führen Sie einen Befehl aus, der diese Zeichenfolgen als Argumente verwendet.

echo "file1 file2 file3" | xargs touch

Im obigen Beispiel leiten wir die Standardeingabe an xargs weiter , und die touch Der Befehl wird für jedes Argument ausgeführt, wodurch drei Dateien erstellt werden. Dies ist dasselbe, als ob Sie Folgendes ausführen würden:

touch file1 file2 file3

Wie man den Befehl anzeigt und den Benutzer auffordert #

Um den Befehl auf dem Terminal auszugeben, bevor Sie ihn ausführen, verwenden Sie den -t (--verbose ) Option:

echo  "file1 file2 file3" | xargs -t touch
touch file1 file2 file3

Wenn Sie gefragt werden möchten, ob Sie jeden Befehl ausführen möchten, bevor Sie ihn ausführen, verwenden Sie -p (--interactive ) Option:

echo  "file1 file2 file3" | xargs -p touch

Geben Sie y ein oder Y um den Befehl zu bestätigen und auszuführen:

touch file1 file2 file3 ?...y

Diese Option ist nützlich, wenn destruktive Befehle ausgeführt werden.

So begrenzen Sie die Anzahl der Argumente #

Standardmäßig wird die Anzahl der an den Befehl übergebenen Argumente durch das Limit des Systems bestimmt.

Das -n (--max-args ) Option gibt die Anzahl der Argumente an, die an den angegebenen Befehl übergeben werden sollen. xargs führt den angegebenen Befehl so oft wie nötig aus, bis alle Argumente erschöpft sind.

Im folgenden Beispiel ist die Anzahl der Argumente, die von der Standardeingabe gelesen werden, auf 1 begrenzt.

echo  "file1 file2 file3" |  xargs -n 1 -t touch

Wie Sie der ausführlichen Ausgabe unten entnehmen können, wird der touch-Befehl für jedes Argument separat ausgeführt:

touch file1
touch file2
touch file3

So führen Sie mehrere Befehle aus #

Um mehrere Befehle mit xargs auszuführen verwenden Sie das -I Möglichkeit. Es funktioniert durch die Definition eines replace-str nach dem -I Option und alle Vorkommen des replace-str werden durch das an xargs übergebene Argument ersetzt.

Die folgenden xargs Beispiel wird zwei Befehle ausführen, zuerst werden die Dateien mit touch erstellt , und dann werden die Dateien mit dem ls aufgelistet Befehl:

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file1
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file2
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file3

Eine übliche Wahl für replace-str ist % . Sie können jedoch einen anderen Platzhalter verwenden, zum Beispiel ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

So geben Sie ein Trennzeichen # an

Verwenden Sie das -d (--delimiter ) Option zum Festlegen eines benutzerdefinierten Trennzeichens, das entweder ein einzelnes Zeichen oder eine Escape-Sequenz sein kann, die mit \ beginnt .

Im folgenden Beispiel verwenden wir ; als Trennzeichen:

echo  "file1;file2;file3" | xargs -d \; -t touch
touch file1 file2 file3

So lesen Sie Elemente aus Datei #

Der Befehl xargs kann auch Elemente aus einer Datei anstelle der Standardeingabe lesen. Verwenden Sie dazu das -a (--arg-file ) Option gefolgt vom Dateinamen.

Im folgenden Beispiel sind die xargs Der Befehl liest die ips.txt Datei und pingen Sie jede IP-Adresse.

ips.txt
8.8.8.8
1.1.1.1

Wir verwenden auch den -L 1 Option, die xargs anweist eine Zeile nach der anderen zu lesen. Wenn diese Option weggelassen wird xargs leitet alle IPs an einen einzigen ping weiter Befehl.

xargs -t -L 1 -a ips.txt ping -c 1
ping -c 1 8.8.8.8 
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms

...
ping -c 1 1.1.1.1 
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

Mit xargs mit find #

xargs wird am häufigsten in Kombination mit find verwendet Befehl. Sie können find verwenden um nach bestimmten Dateien zu suchen und dann xargs zu verwenden Operationen an diesen Dateien auszuführen.

Um Probleme mit Dateinamen zu vermeiden, die Zeilenumbrüche oder andere Sonderzeichen enthalten, verwenden Sie immer den find -print0 Option, die find bewirkt to gibt den vollständigen Dateinamen gefolgt von einem Nullzeichen aus. Diese Ausgabe kann von xargs korrekt interpretiert werden mit dem -0 , (--null )-Option.

Im folgenden Beispiel find gibt die vollständigen Namen aller Dateien in /var/www/.cache aus Verzeichnis und xargs übergibt die Dateipfade an rm Befehl:

find /var/www/.cache -type f -print0 | xargs -0 rm -f

Verwenden von xargs zum Trimmen von Whitespace-Zeichen #

xargs kann auch als Werkzeug verwendet werden, um Leerzeichen von beiden Seiten einer bestimmten Zeichenfolge zu entfernen. Leiten Sie die Zeichenfolge einfach an xargs weiter Befehl, und es wird das Trimmen durchführen:

echo "  Long line " | xargs
Long line

Dies kann nützlich sein, wenn Strings in Shell-Skripten verglichen werden.

#!/bin/bash

VAR1=" Linuxize "
VAR2="Linuxize"

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

## Using xargs to trim VAR1
if [[ $(echo "$VAR1" | xargs) == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi
Strings are not equal.
Strings are equal.

Schlussfolgerung #

xargs ist ein Befehlszeilendienstprogramm unter Linux, mit dem Sie Befehle erstellen und ausführen können.

Für detailliertere Informationen zu jedem xargs Option, lesen Sie die xargs-Manpage.

Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.


Linux
  1. 11 Beispiele für Xargs-Befehle unter Linux

  2. Linux-mv-Befehl

  3. Linux-Du-Befehl

  4. Linux-IP-Befehl

  5. Linux-cd-Befehl

Linux-Typ-Befehl

Welcher Linux-Befehl

W-Befehl unter Linux

Bei Befehl unter Linux

Df-Befehl unter Linux

Beispiele für xargs-Befehle unter Linux