Beispiele für die Verwendung des Befehls xargs unter Linux
Der Linux-Befehl xargs ermöglicht es einem Benutzer, Befehlszeilen von der Standardeingabe aus auszuführen. Wenn das verwirrend klingt, ist es vielleicht einfacher, sich ein einfaches Beispiel anzusehen. Der folgende Befehl verwendet xargs, um alle Dateien zu caten, die mit dem Befehl ls aufgelistet werden.
ls
1.txt 2.txt 3.txt
ls | xargs cat
this is file1
this is file2
this is file3
Im obigen Befehl haben wir die Ausgabe des Befehls ls an xargs weitergeleitet und den Befehl cat verwendet, um den Inhalt in jeder der drei Dateien aufzulisten. Die meisten Verwendungen von xargs beinhalten die Weiterleitung von einem anderen Befehl zu ihm und die Verwendung dieser Option, um nacheinander einen anderen Befehl auszuführen. Wenn Sie mit zusätzlichen grundlegenden Beispielen beginnen möchten, lesen Sie unsere Anleitungen zu xargs für Anfänger oder Multithread-xargs-Beispiele.
In diesem Leitfaden gehen wir verschiedene Befehlszeilenbeispiele des Befehls xargs durch, damit Sie lernen können, wie Sie ihn auf einem Linux-System effektiv verwenden können. Folgen Sie uns, während wir die Grundlagen und komplizierteren Aspekte des Befehls xargs durchgehen.
In diesem Tutorial lernen Sie:
- So verwenden Sie den Befehl xargs unter Linux, anhand von Beispielen
Verschiedene Beispiele für xargs-Befehle unter Linux
Beispiele für xargs-Befehle
Folgen Sie den folgenden Beispielen, um zu sehen, wie Sie xargs in verschiedenen Szenarien unter Linux verwenden.
Kehren wir zu unserem ursprünglichen Beispiel zurück, um genau zu erklären, was passiert, wenn wir den Befehl xargs ausführen. Im Moment haben wir drei Textdateien, und das Ziel ist es, den Inhalt aller drei mit dem Befehl
catanzuzeigen. Da dies die einzigen drei Dateien in unserem aktuellen Verzeichnis sind, können wir den Befehllsverwenden, um die Dateinamen abzurufen, und diese Namen dann mitxargsancatübergeben.ls | xargs cat this is file1 this is file2 this is file3Was hier wirklich passiert, entspricht dem folgenden Befehl:
cat 1.txt 2.txt 3.txtUm den Befehl zu sehen, den xargs ausführt, können Sie die Option
-tverwenden. Dadurch wird der Befehl weiterhin ausgeführt, aber es gibt uns die Möglichkeit, zu sehen, wie der endgültige Befehl tatsächlich formatiert wurde.ls | xargs -t cat cat 1.txt 2.txt 3.txt this is file1 this is file2 this is file3Wir können auch die Option
-pverwenden, die uns vor dem Ausführen des Befehls um Bestätigung bittet. Dies ist praktisch, wenn Sie z.B. den Befehlrmmit xargs ausführen, da Sie sonst nicht versehentlich Dateien löschen möchten. Sie können entwedery(ja) eingeben, um die Ausführung des Befehls zu bestätigen, odern(nein), um ihn abzubrechen.ls | xargs -p rm rm 1.txt 2.txt 3.txt ?...yIn unserem vorherigen Beispiel führt xargs
cat 1.txt 2.txt 3.txtaus. Mit anderen Worten, es wird nur ein einziger Befehl ausgeführt und alle Dateinamen werden angehängt. Wir können xargs dazu bringen, jedencat-Befehlseparat auszuführen, indem wir die Option-n(max. Argumente) verwenden. Hier ist ein Beispiel, in dem wir auch die Option-teingefügt haben, damit wir sehen können, wie dieser Befehlcatdrei verschiedene Male ausführt, anstatt nur ein einziges Mal.ls | xargs -t -n 1 cat cat 1.txt this is file1 cat 2.txt this is file2 cat 3.txt this is file3Die Option
-n 1teilt xargs in diesem Fall mit, dass es immer nur einen Dateinamen auf einmal verwenden kann (maximal). Hier sehen Sie, wie es sich unterscheiden würde, wenn wir stattdessen-n 2verwenden würden.ls | xargs -t -n 2 cat cat 1.txt 2.txt this is file1 this is file2 cat 3.txt this is file3xargs kann auch mehrere Befehle ausführen, wenn Sie die Option
-Iverwenden. Sie müssen eine "replace string" angeben, die mit dieser Option verwendet werden soll. Eine sehr gebräuchliche Verwendung ist ein Prozentzeichen, das wir unten verwenden. Für ein einfaches Beispiel führt der folgende Befehltouchund danncatfür unsere drei Dateien aus, deren Namen vonlsan xargs übergeben werden.ls | xargs -t -I % sh -c '{ touch %; cat %; }' sh -c '{ touch 1.txt; cat 1.txt; }' this is file1 sh -c '{ touch 2.txt; cat 2.txt; }' this is file2 sh -c '{ touch 3.txt; cat 3.txt; }' this is file3Eine weitere praktische Anwendung von xargs ist die Fähigkeit, Eingaben von Dateien zu akzeptieren. Dies geschieht mit der Option
-a. Nehmen Sie zum Beispiel den folgenden Befehl, bei dem wir eine Liste von Dateinamen an xargs übergeben und diese Dateien danncaten.xargs -t -a files.txt cat cat 1.txt 2.txt 3.txt this is file1 this is file2 this is file3Wie Sie sich wahrscheinlich vorstellen können, sieht der Inhalt
file.txtwie folgt aus:1.txt 2.txt 3.txtEine der häufigsten Anwendungen für xargs ist, wenn es mit dem Befehl
findkombiniert wird.findenthält bereits die Option-exec,so dass es in der Lage ist, Befehle für alle gefundenen Dateien auszuführen, aber xargs ist viel effizienter. In Ihrem find-Befehl sollten Sie die Option-print0hinzufügen, damit nach jedem Dateinamen ein zusätzliches Nullzeichen ausgegeben wird. Sie müssen auch eine entsprechendeOption -0in den Befehlxargseinfügen. Hier ist ein Beispiel, in dem wir nach .txt Dateien suchen undcatauf jeder Datei ausführen. Auch hier werden wir die Option-tanhängen, um zu sehen, dass der Befehl xargs ausgeführt wird.find . -name "*.txt" -print0 | xargs -t -0 cat cat ./3.txt ./2.txt ./1.txt this is file3 this is file2 this is file1
Diese Beispiele sollten ausreichen, um Ihnen zu helfen, den Befehl xargs optimal zu nutzen. Es gibt eine Menge, was Sie mit dem Befehl machen können, und unzählige verschiedene Szenarien, in denen er sich als nützlich erweisen kann. Wenn Sie mehr erfahren möchten, empfehlen wir Ihnen, auf der Man-Seite weitere Anwendungsbeispiele zu finden.
man xargs
Abschließende Gedanken
In dieser Anleitung haben wir anhand verschiedener Beispiele unter Linux gesehen, wie Sie den Befehl xargs verwenden. Wir kombinierten es mit mehreren anderen Befehlen und lernten auch, wie man es verwendet, um den Inhalt einer Datei zu lesen. Der Befehl xargs hat unendlich viele verschiedene Anwendungen und erweist sich als eines der vielseitigsten Werkzeuge auf der Linux-Befehlszeile.
