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

10 Xargs-Befehlsbeispiele in Linux / UNIX

Der xargs-Befehl ist äußerst nützlich, wenn wir ihn mit anderen Befehlen kombinieren.

Dieses Tutorial erklärt die Verwendung des xargs-Befehls anhand einiger einfacher Beispiele.

Dieses Beispiel wird Ihnen helfen, die Grundlagen der Funktionsweise des xargs-Befehls zu verstehen. Aber sobald Sie diese Konzepte verstanden haben, können Sie Ihre eigenen cleveren xargs-Beispiele entwickeln, um verschiedene Kommandozeilenprobleme zu lösen.

Syntax von xargs (aus der Manpage):

xargs [-0prtx] [-E eof-str] [-e[eof-str]] [–eof[=eof-str]] [–null] [-d delimiter] [–delimiter delimiter] [-I replace- str] [-i[replace-str]] [–replace[=replace-str]] [-l[max-lines]] [-L max-lines] [–max-lines[=max-lines]] [ -n max-args] [–max-args=max-args] [-s max-chars] [–max-chars=max-chars] [-P max-procs] [–max-procs=max-procs] [–interactive] [–verbose] [–exit] [–no-run-if-empty] [–arg-file=file] [–show-limits] [–version] [–help] [command [initial-arguments ]]

1. Einfaches Xargs-Beispiel

Der Befehl xargs erwartet (standardmäßig) die Eingabe von stdin und führt den Befehl /bin/echo über die Eingabe aus. Folgendes passiert, wenn Sie xargs ohne Argumente ausführen oder wenn Sie es ohne Kombination mit anderen Befehlen ausführen.

Wenn Sie xargs ohne Argument eingeben, werden Sie aufgefordert, die Eingabe über stdin:

einzugeben
$ xargs
Hi,
Welcome to TGS.

Nachdem Sie etwas eingegeben haben, drücken Sie Strg+D, wodurch die Zeichenfolge wie unten gezeigt auf stdout zurückgesendet wird.

$ xargs
Hi,
Welcome to TGS.Hi, Welcome to TGS.

2. Geben Sie das Trennzeichen mit der Option -d an

Trennzeichen können angewendet werden, sodass jedes Zeichen in der Eingabe wörtlich genommen wird, indem die Option -d in xargs verwendet wird.

Im vorherigen Beispiel enthielt die Eingabe zwar ein \n (Zeilenumbruch) nach „Hi“, aber die Echoausgabe enthielt keinen Zeilenumbruch „\n“ . Die Ausgabe im vorherigen Beispiel wurde also in einer einzigen Zeile zusammengefasst.

Wenn Sie im folgenden Beispiel -d\n verwenden, wird es das Zeilenumbruchtrennzeichen in der Ausgabe beibehalten und die Ausgabe genau so anzeigen, wie sie eingegeben wurde.

$ xargs -d\n
Hi,
Welcome to TGS.

Nachdem Sie das obige eingegeben haben, drücken Sie Strg + D, wodurch die Zeichenfolge wie unten gezeigt auf stdout an Sie zurückgesendet wird. Aber diesmal wird der Zeilenumbruch beibehalten.

$ xargs -d\n
Hi,
Welcome to TGS.Hi, 
Welcome to TGS.

3. Ausgabe pro Zeile mit Option -n begrenzen

Standardmäßig, wie bereits erklärt, zeigt xargs alles an, was zu seiner Standardeingabe kommt, wie unten gezeigt.

$ echo a b c d e f| xargs
a b c d e f

Die Ausgabe des xargs-Befehls kann jedoch mit der Option -n in mehrere Zeilen aufgeteilt werden.

Im folgenden Beispiel haben wir -n 3 verwendet, wodurch nur 3 Elemente pro Zeile in der xargs-Ausgabe angezeigt werden.

$ echo a b c d e f| xargs -n 3
a b c
d e f

Auf die gleiche Weise können Sie die Ausgabe auch mit 2 Elementen pro Zeile aufteilen, wie unten gezeigt, indem Sie -n 2 verwenden.

$ echo a b c d e f| xargs -n 2
a b
c d
e f

4. Benutzer vor Ausführung mit Option -p auffordern

Mit der Option -p können Sie dem Benutzer die Ausführung des xargs-Befehls bestätigen.

Wenn wir das vorherige Beispiel betrachten und jede Ausführung des Befehls /bin/echo durch den Benutzer bestätigen möchten, verwenden Sie die Option -p zusammen mit der Option -n, wie unten gezeigt.

$ echo a b c d e f| xargs -p -n 3
/bin/echo a b c ?...y
/bin/echo d e f ?...a b c
y
d e f

In der folgenden Ausgabe habe ich „n“ zu allen Echoausgaben gesagt. xargs hat also nichts ausgeführt.

$ echo a b c d e f| xargs -p -n 3
/bin/echo a b c ?...n
/bin/echo d e f ?...n
/bin/echo ?...n

Hinweis:Dies ist hilfreich, wenn Sie xargs mit störenden Befehlen wie rm kombinieren. In diesen Fällen möchten Sie vielleicht sehen, was xargs macht.

5. Vermeiden Sie den Standardwert /bin/echo für leere Eingaben mit der Option -r

Wenn es eine leere Eingabe gibt (d. h. dem xargs-Befehl wurde keine Eingabe gegeben), wird ein /bin/echo-Befehl ausgeführt, der eine neue Zeile wie unten gezeigt anzeigt.

$ xargs -p

Drücken Sie Strg-D, nachdem Sie „xargs -p“ eingegeben haben, was anzeigt, dass ein /bin/echo wie unten gezeigt ausgeführt wurde.

$ xargs -p
                      /bin/echo ?...y

$

6. Drucken Sie den Befehl zusammen mit der Ausgabe mit der Option -t

Geben Sie im folgenden Beispiel „abcd“ als Eingabe für den Befehl xargs -t ein.

$ xargs -t
abcd

Drücken Sie Strg-d, um den obigen Befehl xargs -t abzuschließen, der den Befehl anzeigt, den xargs wirklich ausführt, bevor die Ausgabe angezeigt wird. In diesem Fall lautet der von xargs ausgeführte Befehl „/bin/echo abcd“, der hier angezeigt wird.

$ xargs -t
abcd
/bin/echo abcd
abcd

7. Kombiniere Xargs mit dem Find-Befehl

Dies ist eine der wichtigsten Verwendungen des xargs-Befehls. Wenn Sie bestimmte Dateitypen finden und bestimmte Aktionen ausführen müssen (am beliebtesten ist die Löschaktion).

Der xargs-Befehl ist sehr effektiv, wenn wir ihn mit anderen Befehlen kombinieren.

Im folgenden Beispiel haben wir die Ausgabe des find-Befehls genommen und als Eingabe an den xargs-Befehl übergeben. Aber anstatt den Standardbefehl /bin/echo auszuführen, weisen wir den Befehl xargs an, den Befehl rm -rm auf der Eingabe auszuführen.

In diesem Beispiel sind also alle Dateien mit der Erweiterung *.c die Ausgabe des Befehls find, die als Eingabe für den Befehl xargs angegeben wird, der wiederum den Befehl „rm -rf“ für alle *.c-Dateien ausführt .

$ ls
one.c  one.h  two.c  two.h

$ find . -name "*.c" | xargs rm -rf

$ ls
one.h  two.h

8. Dateien mit Leerzeichen im Dateinamen löschen

Wir sehen also, dass die Datei „The Geek Stuff.c“ trotz Ausführen des Befehls rm für die .c-Dateien in diesem Verzeichnis nicht gelöscht wurde. Dies liegt daran, dass diese Datei Leerzeichen in ihrem Namen enthält.

Wie im folgenden Beispiel gezeigt, wurden alle Dateien mit der Erweiterung *.c bis auf eine gelöscht. Das heißt, die Datei mit Leerzeichen im Dateinamen (z. B. „The Geek Stuff.c“) wurde nicht durch den Befehl rm gelöscht.

$ touch "The Geek Stuff.c"

$ ls
one.c  one.h  two.c  two.h The Geek Stuff.c

$ find . -name "*.c" | xargs rm -rf

$ ls
one.h  two.h  The Geek Stuff.c

Verwenden Sie in dieser Situation die Option -print0 mit dem Befehl find und die Option -0 mit dem Befehl xargs, um Dateien zu löschen, einschließlich derer, die Leerzeichen in den Dateinamen haben, wie unten gezeigt.

$ ls
one.c  one.h  two.c  two.h The Geek Stuff.c

$ find . -name "*.c" -print0 | xargs -0 rm -rf

$ ls
one.h  two.h

9. Zeigen Sie Systemlimits auf xargs mit der Option –show-limits

an

Sehen Sie sich das folgende Beispiel an:
Das folgende Beispiel zeigt alle vom Betriebssystem festgelegten Grenzen, die sich auf die Funktionsweise des xargs-Befehls auswirken.

$ xargs --show-limits
Your environment variables take up 1203 bytes
POSIX upper limit on argument length (this system): 2093901
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2092698
Size of command buffer we are actually using: 131072

Execution of xargs will continue now, and it will try to read its input and 
run commands; if this is not what you wanted to happen, please type the 
end-of-file keystroke.

Warning: /bin/echo will be run at least once.  If you do not want that to happen, 
then press the interrupt keystroke

10. Kombiniere Xargs mit dem Grep-Befehl

Der xargs-Befehl kann mit dem grep-Befehl kombiniert werden, um bestimmte Dateien aus den Suchergebnissen des find-Befehls herauszufiltern.

Im folgenden Beispiel stellte der Befehl find alle .c-Dateien als Eingabe für xargs bereit.

Der xargs-Befehl führt den grep-Befehl aus, um alle Dateien (unter den vom find-Befehl bereitgestellten Dateien) zu finden, die eine Zeichenfolge „stdlib.h“ enthielten.

$ find . -name '*.c' | xargs grep 'stdlib.h'
./tgsthreads.c:#include
./valgrind.c:#include
./direntry.c:#include
./xvirus.c:#include
./temp.c:#include
...
...
...

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

  2. UNIX / Linux:10 Netstat-Befehlsbeispiele

  3. sa-Befehlsbeispiele in Linux

  4. ac-Befehlsbeispiele in Linux

  5. df-Befehlsbeispiele in Linux

wc Linux-Befehl mit Beispielen

10 Beispiele für iftop-Befehle unter Linux

Xargs-Befehl unter Linux

Beispiele für xargs-Befehle unter Linux

id-Befehlsbeispiele in Linux

xargs-Befehlsbeispiele in Linux