{"id":7620,"date":"2021-07-20T13:08:22","date_gmt":"2021-07-20T13:08:22","guid":{"rendered":"https:\/\/profi-tutorials.de\/linux\/?p=7620"},"modified":"2021-07-20T13:08:23","modified_gmt":"2021-07-20T13:08:23","slug":"befehl-xargs","status":"publish","type":"post","link":"https:\/\/profi-tutorials.de\/linux\/administration\/befehl-xargs\/","title":{"rendered":"Der Befehl xargs"},"content":{"rendered":"<p>In diesem Beitrag lernen Sie den Befehl xargs kennen, welcher verwendet wird, um Befehle mit Argumenten auszuf&uuml;hren, welche vom Standard-Input gelesen werden. Viele Befehle lassen sich unter Linux- \/ UNIX standardm&auml;&szlig;ig sowohl auf einzelnen Dateien, als auch auf Listen von Dateien anwenden &ndash; ist dies nicht m&ouml;glich, kann der Befehl xargs eingesetzt werden. Ein weiterer Anwendungsfall f&uuml;r xargs ist zudem die Parallelisierung mehrerer Befehle, zum Beispiel rsync, um eine bessere Ausnutzung der Ressourcen des Systems zu erm&ouml;glichen.<\/p>\n<p>Zu Beginn wird die allgemeine <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Syntax&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;&#8203;Im  Allgemeinen wird unter Syntax ein Regel&#8203;system verstanden, welches zur  Kombination elementarer Zeichen zu zusammengesetzten &#8203;Zeichen in (...)&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/syntax\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Syntax<\/a> des Befehls xargs gezeigt. Anschlie&szlig;end folgen die wichtigsten Optionen des Befehls mitsamt einiger Beispiele.<\/p>\n<h2 id=\"t-1625562976721\">Allgemeine Syntax<\/h2>\n<p><strong>xargs <\/strong>wird neben verschiedenen verf&uuml;gbaren Optionen ein Befehl &uuml;bergeben, welcher dann mit den eingelesenen Argumenten ausgef&uuml;hrt wird. Der Befehl kann dabei ganz normal mitsamt beliebiger initialer Argumente angegeben werden &ndash; <strong>xargs <\/strong>wird die aus dem Standard-Input <strong>stdin <\/strong>eingelesenen Argumente dann standardm&auml;&szlig;ig jeweils am Ende des Befehls anf&uuml;gen. Die allgemeine Syntax lautet somit folgenderma&szlig;en:<\/p>\n<pre>xargs [Optionen] [Befehl [Initiale Argumente]]<\/pre>\n<h5>Beispiel: xargs ohne Optionen<\/h5>\n<h6 style=\"\"><span style=\"font-weight: normal;\">In diesem Beispiel wird der Befehl <\/span>xargs <span style=\"font-weight: normal;\">ohne jegliche Optionen eingesetzt, um die mit dem <\/span>find<span style=\"font-weight: normal;\">-Befehl gefundenen Dateien im aktuellen Arbeitsverzeichnis (und Unterverzeichnissen) alle an den Befehl <\/span>ls <span style=\"font-weight: normal;\">zu &uuml;bergeben. Dieser sortiert die Dateien mithilfe der <\/span>Option -S<span style=\"font-weight: normal;\"> nach ihrer Gr&ouml;&szlig;e und gibt sie schlie&szlig;lich an den Befehl <\/span>head <span style=\"font-weight: normal;\">weiter, welcher nur die ersten 5 Zeilen ausgibt.<\/span><\/h6>\n<h6>Eingabe:<\/h6>\n<p>find .\/ -type f | xargs ls -lhS | head -5<\/p>\n<h6>Ausgabe:<\/h6>\n<p>Die gr&ouml;&szlig;ten f&uuml;nf im Arbeitsverzeichnis sowie den entsprechenden Unterverzeichnissen vorhandenen Dateien werden ausgegeben.<\/p>\n<p><span><img decoding=\"async\" alt=\"befehl-xargs-beispiel-1\" data-id=\"7714\" width=\"548\" data-init-width=\"1500\" height=\"64\" data-init-height=\"175\" title=\"befehl-xargs-beispiel-1\" loading=\"lazy\" src=\"https:\/\/profi-tutorials.de\/linux\/wp-content\/uploads\/sites\/3\/2021\/07\/befehl-xargs-beispiel-1.png\" data-width=\"548\" data-height=\"64\"\/><\/span><\/p>\n<h2 id=\"t-1625562976722\">Wichtige Optionen<\/h2>\n<p>In diesem Abschnitt werden die wichtigsten Optionen des Befehls <strong>xargs <\/strong>vorgestellt. Einige Beispiele zeigen dabei auch die praktische Anwendung der jeweiligen Optionen.<\/p>\n<h3 id=\"t-1625562976723\">-a &ndash; Einlesen aus Datei<\/h3>\n<p>Anstelle des Standard-Input <strong>stdin <\/strong>kann auch eine Datei zum Einlesen von Argumenten verwendet werden. Hierzu wird die <strong>Option -a<\/strong> verwendet und die entsprechende Datei als Parameter angegeben:<\/p>\n<pre>xargs -a [Datei] [Befehl [Initiale Argumente]]<\/pre>\n<p>Bei Verwendung dieser Option verbleibt der Standard-Input-Stream <strong>stdin <\/strong>unver&auml;ndert, wenn Befehle ausgef&uuml;hrt werden. Andernfalls wird <strong>stdin <\/strong>von <strong>\/dev\/null<\/strong> umgeleitet.<\/p>\n<h5>Beispiel: Einlesen aus Datei<\/h5>\n<h6 style=\"\"><span style=\"font-weight: normal;\">Hier sollen die Argumente von <\/span>xargs <span style=\"font-weight: normal;\">aus einer Datei eingelesen werden. Jede Zeile der Eingabedatei stellt in diesem Fall eine Datei dar, welche auch hier wieder mit <\/span>ls <span style=\"font-weight: normal;\">ausgegeben werden soll.<\/span><\/h6>\n<h6>Inhalt \/home\/hellberg\/linux-grundlagen.txt:<\/h6>\n<p>\/home\/hellberg\/profi-tutorials\/linux\/grundlagen\/befehl-sudo.txt<\/p>\n<p>\/home\/hellberg\/profi-tutorials\/linux\/netzwerke\/befehl-scp.txt<\/p>\n<p>\/home\/hellberg\/profi-tutorials\/linux\/administration\/befehl-top.txt<\/p>\n<h6>Eingabe:<\/h6>\n<p>xargs -a \/home\/hellberg\/linux-grundlagen.txt ls -lh<\/p>\n<h6>Nach Ausf&uuml;hrung:<\/h6>\n<p><span><img decoding=\"async\" alt=\"befehl-xargs-beispiel-2\" data-id=\"7715\" width=\"548\" data-init-width=\"1550\" height=\"50\" data-init-height=\"142\" title=\"befehl-xargs-beispiel-2\" loading=\"lazy\" src=\"https:\/\/profi-tutorials.de\/linux\/wp-content\/uploads\/sites\/3\/2021\/07\/befehl-xargs-beispiel-2.png\" data-width=\"548\" data-height=\"50\"\/><\/span><\/p>\n<h3 id=\"t-1625562976724\">-0 &ndash; NULL-Zeichen als Delimiter<\/h3>\n<p>Die eingelesenen Argumente werden aufgrund des <strong>NULL-Zeichens<\/strong> anstelle von Leerzeichen getrennt. Au&szlig;erdem werden jegliche Anf&uuml;hrungszeichen sowie R&uuml;ckschr&auml;gstrich-Maskierungen nicht als Sonderzeichen interpretiert &ndash; alle Zeichen werden damit w&ouml;rtlich genommen. Die End-of-File-Zeichenkette (EOF) wird deaktiviert und wie jedes andere Argument interpretiert.<\/p>\n<pre>xargs -0 [Befehl [Initiale Argumente]]<\/pre>\n<h3 id=\"t-1625562976725\">-d &ndash; Delimiter spezifizieren<\/h3>\n<p>Mit dieser Option kann ein Zeichen spezifiziert werden, welches anstelle des standardm&auml;&szlig;igen Leerzeichens \/ Zeilenumbruchs als <a class=\"glossaryLink cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Delimiter&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Ein Delimiter oder Trennzeichen wird verwendet, um Text oder andere Datenstr&ouml;me in Elemente aufzuteilen.&lt;\/div&gt;&lt;div class=cmtt_synonyms_wrapper&gt;&lt;div class=cmtt_synonyms_title&gt;Synonyms: &lt;\/div&gt;&lt;div class=cmtt_synonyms&gt;Trennzeichen&lt;\/div&gt;&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/delimiter\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Delimiter<\/a> verwendet werden soll. Genau wie auch bei der <strong>Option -0<\/strong> werden alle Zeichen w&ouml;rtlich genommen und die End-of-File-Zeichenkette deaktiviert.<\/p>\n<pre>xargs -d [Zeichen] [Befehl [Initiale Argumente]]<\/pre>\n<p>Angegeben werden kann ein einzelnes Zeichen, ein Escape-Zeichen im C-Stil (etwa <strong>&ldquo;n&rdquo;<\/strong>) oder ein oktaler oder hexadezimaler Escape-Code. Multibyte-Zeichen werden nicht unterst&uuml;tzt.<\/p>\n<h5>Beispiel: Delimiter spezifizieren<\/h5>\n<h6 style=\"\"><span style=\"font-weight: normal;\">Dieses Beispiel zeigt, wie mit der <\/span>Option -d<span style=\"font-weight: normal;\"> ein Delimiter zur Trennung einzelner Argumente spezifiziert wird. In diesem Fall wird der Delimiter <\/span>&ldquo;;&rdquo;<span style=\"font-weight: normal;\"> gew&auml;hlt, um eine durch Semikola getrennte Liste von Home-Verzeichnissen Zeile f&uuml;r Zeile mit <\/span>echo <span style=\"font-weight: normal;\">in die Ausgabe zu schreiben. Zus&auml;tzlich wird hier die <\/span>Option -n<span style=\"font-weight: normal;\"> verwendet, um die Anzahl Argumente pro Kommandozeile bzw. <\/span>echo<span style=\"font-weight: normal;\">-Befehl auf eines zu beschr&auml;nken.<\/span><\/h6>\n<h6>Eingabe:<\/h6>\n<p>printf &ldquo;\/home\/hellberg;\/home\/admina;\/home\/bibo&rdquo; | xargs -n 1 -d &ldquo;;&rdquo; echo<\/p>\n<h6>Ausgabe:<\/h6>\n<p>Die drei in den Standard-Input von <strong>xargs <\/strong>gegebenen Home-Verzeichnisse werden nun zeilenweise ausgegeben.<\/p>\n<p>\/home\/hellberg<\/p>\n<p>\/home\/admina<\/p>\n<p>\/home\/bibo<\/p>\n<h3 id=\"t-1625562976726\">-E &ndash; EOF-Marker spezifizieren<\/h3>\n<p>Der End-of-File-Marker (EOF) wird mit dieser Option auf die angegebene <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;String&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Ein String ist in der Informatik eine Zeichenkette - stellt also eine endliche Folge von Zeichen aus einem bestimmten Zeichensatz,(...)&lt;\/div&gt;&lt;div class=cmtt_synonyms_wrapper&gt;&lt;div class=cmtt_synonyms_title&gt;Synonyms: &lt;\/div&gt;&lt;div class=cmtt_synonyms&gt;Zeichenkette&lt;\/div&gt;&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/string\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Zeichenkette<\/a> gesetzt. Tritt der spezifizierte EOF-Marker als Eingabezeile auf, so wird die verbleibende Eingabe ignoriert.<\/p>\n<pre>xargs -E [Zeichenkette] [Befehl [Initiale Argumente]]<\/pre>\n<p>Wird keine Zeichenkette angegeben, so gibt es keinen logischen EOF-Marker &ndash; dies ist die Standardeinstellung seit GNU <strong>xargs <\/strong>der Version 4.2.9. Wird neben <strong>-E<\/strong> auch die <strong>Option -d<\/strong> oder <strong>-0<\/strong> verwendet, so wird die hier angegebene Zeichenkette nicht gesondert behandelt, sodass stets die gesamte Eingabe gelesen wird.<\/p>\n<h5>Beispiel: EOF-Marker spezifizieren<\/h5>\n<h6 style=\"\"><span style=\"font-weight: normal;\">Mithilfe der <\/span>Option -E<span style=\"font-weight: normal;\"> wird hier die Zeichenkette <\/span>&ldquo;ENDE&rdquo;<span style=\"font-weight: normal;\"> als EOF-Marker spezifiziert. Die Argumente f&uuml;r <\/span>xargs <span style=\"font-weight: normal;\">werden aus dem Standard-Input eingelesen und stammen aus der Ausgabe des Befehls <\/span>cat<span style=\"font-weight: normal;\">, welcher auf der Datei <\/span>&ldquo;hellberg.txt&rdquo;<span style=\"font-weight: normal;\"> ausgef&uuml;hrt wird. Mit <\/span>echo <span style=\"font-weight: normal;\">werden die eingelesenen Argumente dann ausgegeben.<\/span><\/h6>\n<h6>Inhalt hellberg.txt:<\/h6>\n<p>hellberg<\/p>\n<p>admina<\/p>\n<p>bibo<\/p>\n<p>ENDE<\/p>\n<p>hedv<\/p>\n<h6>Eingabe:<\/h6>\n<p>cat hellberg.txt | xargs -E &ldquo;ENDE&rdquo; echo<\/p>\n<h6>Nach Ausf&uuml;hrung:<\/h6>\n<p>Es werden nun ausschlie&szlig;lich die ersten drei Zeilen der Eingabe hintereinander, auf einer Zeile ausgegeben. Das <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Wort&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Ein Wort ist in der Informatik eine endliche Folge &uuml;ber einem Alphabet.&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/wort\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Wort<\/a> <strong>&ldquo;hedv&rdquo;<\/strong>, welches erst hinter dem EOF-Marker <strong>&ldquo;ENDE&rdquo;<\/strong> auftritt, wird von <strong>xargs <\/strong>ignoriert.<\/p>\n<p>hellberg admina bibo<\/p>\n<h3 id=\"t-1625562976727\">-I &ndash; Platzhalter ersetzen<\/h3>\n<p>Die <strong>Option -I<\/strong> wird verwendet, um eine Platzhalter-Zeichenkette festzulegen, welche in den initialen Argumenten des <strong>xargs&rsquo;<\/strong> &uuml;bergebenen Befehls durch die vom Standard-Input gelesenen Argumente ersetzt wird. Die Option impliziert zudem die <strong>Optionen -x<\/strong> und <strong>&ldquo;-l 1&rdquo;<\/strong>.<\/p>\n<pre>xargs -I [Zeichenkette] [Befehl [Initiale Argumente]]<\/pre>\n<p>Leerzeichen, welche nicht in Anf&uuml;hrungszeichen eingefasst sind, werden nicht zur Trennung der Argumente verwendet &ndash; stattdessen wird die Eingabe ausschlie&szlig;lich an Zeilenumbr&uuml;chen getrennt.<\/p>\n<h5>Beispiel: Platzhalter ersetzen<\/h5>\n<p style=\"\">Mit der <strong>Option -I<\/strong> wird in diesem Beispiel ein <a class=\"glossaryLink cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Wildcard&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Eine Wildcard, auch Joker genannt, ist in der Informatik ein Platzhalter f&uuml;r andere Zeichen bzw. Zeichenketten.&lt;\/div&gt;&lt;div class=cmtt_synonyms_wrapper&gt;&lt;div class=cmtt_synonyms_title&gt;Synonyms: &lt;\/div&gt;&lt;div class=cmtt_synonyms&gt;Platzhalter, Joker&lt;\/div&gt;&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/wildcard\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Platzhalter<\/a> zur Ersetzung in den initialen Argumenten des <strong>xargs&rsquo;<\/strong> &uuml;bergebenen Befehls spezifiziert. Der hier verwendete <strong>find<\/strong>-Befehl sucht alle Dateien im Verzeichnis <strong>profi-tutorials\/<\/strong> des aktuellen Arbeitsverzeichnisses sowie seinen Unterverzeichnissen &ndash; diese werden an <strong>xargs <\/strong>&uuml;bergeben und dort mit dem Befehl <strong>cp <\/strong>in ein Verzeichnis <strong>\/daten\/sicherung\/<\/strong> kopiert.<\/p>\n<p style=\"\">Die <strong>Option -n<\/strong> f&uuml;r <strong>xargs <\/strong>wird zus&auml;tzlich verwendet, um pro <strong>cp<\/strong>-Befehl jeweils nur ein eingelesenes Argument einzusetzen.<\/p>\n<h6>Eingabe:<\/h6>\n<p>find profi-tutorials\/ -type f | xargs -n 1 -I {} cp {} \/daten\/sicherung\/<\/p>\n<h6>Ausgabe:<\/h6>\n<p>Direkt im Verzeichnis <strong>\/daten\/sicherung\/<\/strong> befinden sich nun Kopien aller Dateien, welche sich auch in <strong>profi-tutorials\/<\/strong> sowie Unterverzeichnissen befinden.<\/p>\n<h3 id=\"t-1625562976728\">-L &ndash; Maximale Zeilen<\/h3>\n<p>Das mit dieser Option festgelegte Limit bestimmt, wie viele nichtleere Eingabezeilen maximal pro Kommandozeile verwendet werden. Die <strong>Option -x<\/strong> wird impliziert.<\/p>\n<pre>xargs -L [Anzahl] [Befehl [Initiale Argumente]]<\/pre>\n<h3 id=\"t-1625562976729\">-n &ndash; Maximale Argumente<\/h3>\n<p>Hiermit wird die maximale Anzahl Argumente festgelegt, die pro Kommandozeile verwendet werden. Wird die durch die <strong>Option -s<\/strong> festgelegte maximale Kommandozeilenl&auml;nge &uuml;berschritten, so verwendet <strong>xargs <\/strong>automatisch weniger als die angegebene Anzahl Argumente &ndash; au&szlig;er die <strong>Option -x<\/strong> wurde angegeben, welche <strong>xargs <\/strong>dann beenden l&auml;sst.<\/p>\n<pre>xargs -n [Anzahl] [Befehl [Initiale Argumente]]<\/pre>\n<h5>Beispiel: Maximale Argumente<\/h5>\n<h6 style=\"\"><span style=\"font-weight: normal;\">Mithilfe der <\/span>Option -n<span style=\"font-weight: normal;\"> wird die verwendete Anzahl Argumente pro Kommandozeile in diesem Beispiel auf eines begrenzt. Die Ausgabe des Befehls <\/span>ls <span style=\"font-weight: normal;\">erfolgt standardm&auml;&szlig;ig auf einer Zeile &ndash; hier soll mit <\/span>xargs <span style=\"font-weight: normal;\">und dem Befehl <\/span>echo<span style=\"font-weight: normal;\">, welcher jeweils ein Argument erh&auml;lt, ein Eintrag pro Zeile ausgegeben werden.<\/span><\/h6>\n<h6>Eingabe:<\/h6>\n<p>ls | xargs -n 1 echo<\/p>\n<h6>Ausgabe:<\/h6>\n<p>befehle-systemkontrolle.txt<\/p>\n<p>befehl-hdparm.txt<\/p>\n<p>befehl-top.txt<\/p>\n<p>hardware-informationen-auslesen.txt<\/p>\n<h3 id=\"t-1625562976730\">-p &ndash; Interaktive Ausf&uuml;hrung<\/h3>\n<p>Unter Verwendung dieser Option wird eine Eingabeaufforderung vor jeder Befehlsausf&uuml;hrung gestartet, welche den Benutzer abfragt, ob die jeweilige Befehlszeile ausgef&uuml;hrt werden soll. Der Befehl wird nur dann ausgef&uuml;hrt, wenn die Antwort des Benutzers mit <strong>&ldquo;y&rdquo;<\/strong> oder <strong>&ldquo;Y&rdquo;<\/strong> beginnt. Die <strong>Option -t<\/strong> wird impliziert.<\/p>\n<pre>xargs -p [Befehl [Initiale Argumente]]<\/pre>\n<h3 id=\"t-1625562976731\">-r &ndash; Keine Ausf&uuml;hrung bei leerem stdin<\/h3>\n<p>Bei Verwendung dieser Option wird der Befehl nicht ausgef&uuml;hrt, wenn der Standard-Input <strong>stdin <\/strong>komplett leer ist. Standardm&auml;&szlig;ig wird der Befehl mindestens einmal ausgef&uuml;hrt, selbst wenn es keine Eingabe gibt.<\/p>\n<pre>xargs -r [Befehl [Initiale Argumente]]<\/pre>\n<h3 id=\"t-1625562976732\">-s &ndash; Kommandozeilenl&auml;nge limitieren<\/h3>\n<p>Diese Option wird verwendet, um eine maximale Kommandozeilenl&auml;nge festzulegen, welche den Befehl selbst, die initialen Argumente und jegliche terminierenden Nullzeichen am Ende der Argument-Zeichenkette umfasst.<\/p>\n<pre>xargs -s [Anzahl Zeichen] [Befehl [Initiale Argumente]]<\/pre>\n<h3 id=\"t-1625562976733\">&ndash;show-limits &ndash; Limits ausgeben<\/h3>\n<p>Mithilfe dieser Option k&ouml;nnen die Limits der Kommandozeilenl&auml;nge, welche durch das <a class=\"glossaryLink cmtt_Informatik cmtt_Netzwerke\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Betriebssystem&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Ein Betriebssystem ist f&uuml;r die Verwaltung der Ressourcen eines Rechensystems verantwortlich.&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/betriebssystem\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Betriebssystem<\/a>, <strong>xargs&rsquo;<\/strong> Wahl der Puffergr&ouml;&szlig;e und die <strong>Option -s<\/strong> festgelegt werden, ausgegeben werden.<\/p>\n<pre>xargs --show-limits [Befehl [Initiale Argumente]]<\/pre>\n<p>Soll <strong>xargs <\/strong>bei der Ausgabe keinen Befehl ausf&uuml;hren, so kann <strong>\/dev\/null<\/strong> als Eingabe dienen und zus&auml;tzlich zudem die <strong>Option -r<\/strong> gew&auml;hlt werden.<\/p>\n<pre>xargs -a \/dev\/null -r --show-limits<\/pre>\n<h5>Beispiel: Limits ausgeben<\/h5>\n<h6 style=\"\"><span style=\"font-weight: normal;\">Dieses Beispiel zeigt, wie mithilfe der <\/span>Option &ndash;show-limits<span style=\"font-weight: normal;\"> verschiedene Gr&ouml;&szlig;en und Begrenzungen ausgegeben werden. Die Verwendung der Datei <\/span>\/dev\/null<span style=\"font-weight: normal;\"> als Eingabe sowie die <\/span>Option -r<span style=\"font-weight: normal;\"> sorgen daf&uuml;r, dass <\/span>xargs <span style=\"font-weight: normal;\">keine Aktionen ausf&uuml;hrt.<\/span><\/h6>\n<h6>Eingabe:<\/h6>\n<p>xargs -a \/dev\/null -r &ndash;show-limits<\/p>\n<h6>Ausgabe:<\/h6>\n<p>Die Ausgabe umfasst Informationen zum von den <a class=\"glossaryLink cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Umgebungsvariable&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Eine Umgebungsvariable ist in Betriebssystemen &uuml;blicherweise eine konfigurierbare Variable, welche oft Pfade zu bestimmten Dateien aber auch(...)&lt;\/div&gt;&lt;div class=cmtt_synonyms_wrapper&gt;&lt;div class=cmtt_synonyms_title&gt;Synonyms: &lt;\/div&gt;&lt;div class=cmtt_synonyms&gt;Environment Variable&lt;\/div&gt;&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/umgebungsvariable\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Umgebungsvariablen<\/a> belegten Speicher <strong>(1)<\/strong>, der maximal in POSIX erlaubten Argumentl&auml;nge <strong>(2, 3)<\/strong> der tats&auml;chlich nutzbaren maximalen Befehlsl&auml;nge <strong>(4)<\/strong>, der Gr&ouml;&szlig;e des verwendeten Befehlspuffers <strong>(5)<\/strong> sowie dem maximalen Parallelismus <strong>(6)<\/strong>.<\/p>\n<p><span><img decoding=\"async\" alt=\"befehl-xargs-beispiel-3\" data-id=\"7716\" width=\"548\" data-init-width=\"1165\" height=\"130\" data-init-height=\"277\" title=\"befehl-xargs-beispiel-3\" loading=\"lazy\" src=\"https:\/\/profi-tutorials.de\/linux\/wp-content\/uploads\/sites\/3\/2021\/07\/befehl-xargs-beispiel-3.png\" data-width=\"548\" data-height=\"130\"\/><\/span><\/p>\n<h3 id=\"t-1625562976734\">-t &ndash; Kommandozeilen ausgeben<\/h3>\n<p>Wird diese Option angegeben, so wird jede Kommandozeile vor ihrer Ausf&uuml;hrung im Standard-Error-Output <strong>stderr <\/strong>ausgegeben.<\/p>\n<pre>xargs -t [Befehl [Initiale Argumente]]<\/pre>\n<h3 id=\"t-1625562976735\">-x &ndash; Beenden bei Limit-&Uuml;berschreitung<\/h3>\n<p><strong>xargs <\/strong>wird bei Verwendung dieser Option beendet, wenn die maximale Kommandozeilenl&auml;nge &uuml;berschritten wird.<\/p>\n<pre>xargs -x [Befehl [Initiale Argumente]]<\/pre>\n<h3 id=\"t-1625562976736\">-P &ndash; Maximale Anzahl Prozesse<\/h3>\n<p>Mithilfe der <strong>Option -P<\/strong> kann die Befehlsausf&uuml;hrung von <strong>xargs <\/strong>parallelisiert und somit eine gewisse Nebenl&auml;ufigkeit erreicht werden. Die Option gibt dabei die maximale Anzahl der durch <strong>xargs <\/strong>gestarteten Prozesse an, die zu einem Zeitpunkt gleichzeitig laufen d&uuml;rfen. Standardwert ist entsprechend der standardm&auml;&szlig;igen seriellen Ausf&uuml;hrung 1. Wird der Wert 0 angegeben, so versucht <strong>xargs <\/strong>so viele Prozesse wie m&ouml;glich gleichzeitig auszuf&uuml;hren.<\/p>\n<pre>xargs -P [Anzahl] [Befehl [Initiale Argumente]]<\/pre>\n<h5>Beispiel: Maximale Anzahl Prozesse<\/h5>\n<h6 style=\"\"><span style=\"font-weight: normal;\">Die maximale Anzahl Prozesse wird in diesem Beispiel mit der <\/span>Option -P<span style=\"font-weight: normal;\"> auf den Wert 4 gesetzt, um eine Parallelit&auml;t bei dem Herunterladen vieler kleiner Dateien mit dem Befehl <\/span>wget <span style=\"font-weight: normal;\">hervorzurufen. Die URLs, welche den <\/span>wget<span style=\"font-weight: normal;\">-Befehlen &uuml;bergeben werden sollen, sind in der Datei <\/span>&ldquo;profi-tutorials-urls.txt&rdquo;<span style=\"font-weight: normal;\"> im aktuellen Arbeitsverzeichnis aufgelistet &ndash; sie enth&auml;lt insgesamt 87 Zeilen.<\/span><\/h6>\n<p style=\"\"><span style=\"font-weight: normal;\">Der Befehl <\/span><strong>time <\/strong><span style=\"font-weight: normal;\">wird jeweils verwendet, um die Ausf&uuml;hrungszeit von <\/span><strong>xargs <\/strong><span style=\"font-weight: normal;\">zu messen und auszugeben.<\/span><\/p>\n<h6>Eingabe:<\/h6>\n<p style=\"\">Zun&auml;chst sollen einem einzigen <strong>wget<\/strong>-Befehl alle 87 URLs &uuml;bergeben werden, sodass auch nur ein Prozess gestartet wird.<\/p>\n<p>time xargs -a profi-tutorials-urls.txt wget -P \/tmp\/<\/p>\n<h6>Ausgabe:<\/h6>\n<p>Der Ausgabe ist zu entnehmen, dass ein einzelner <strong>wget<\/strong>-Prozess in diesem Fall etwa <strong>14,3 Sekunden<\/strong> zum Herunterladen aller 87 Dateien ben&ouml;tigt.<\/p>\n<p><span><img decoding=\"async\" alt=\"befehl-xargs-beispiel-4\" data-id=\"7717\" width=\"548\" data-init-width=\"1000\" height=\"66\" data-init-height=\"121\" title=\"befehl-xargs-beispiel-4\" loading=\"lazy\" src=\"https:\/\/profi-tutorials.de\/linux\/wp-content\/uploads\/sites\/3\/2021\/07\/befehl-xargs-beispiel-4.png\" data-width=\"548\" data-height=\"66\"\/><\/span><\/p>\n<h6>Eingabe:<\/h6>\n<p style=\"\">Dem Befehl <strong>xargs <\/strong>wird nun zus&auml;tzlich die <strong>Option -P<\/strong> mit dem Parameter 4 &uuml;bergeben, um die parallele Ausf&uuml;hrung von bis zu 4 <strong>wget<\/strong>-Prozessen zu erm&ouml;glichen. Weiterhin wird mit der <strong>Option -n<\/strong> die maximale Anzahl Argumente pro <strong>wget<\/strong>-Befehl auf 20 gesetzt, um den durch das Starten neuer <strong>wget<\/strong>-Prozesse erzeugten Overhead m&ouml;glichst zu minimieren.<\/p>\n<p>time xargs -a profi-tutorials-urls.txt -n 20 -P 4 wget -P \/tmp\/<\/p>\n<h6>Ausgabe:<\/h6>\n<p>Bei paralleler Ausf&uuml;hrung der <strong>wget<\/strong>-Befehle wurden nur noch etwa <strong>8,2 Sekunden<\/strong> zum Herunterladen der 87 Dateien ben&ouml;tigt &ndash; dies entspricht in diesem Beispiel einer <strong>Zeitersparnis von ca. 42%<\/strong>.<\/p>\n<p><span><img decoding=\"async\" alt=\"befehl-xargs-beispiel-5\" data-id=\"7718\" width=\"548\" data-init-width=\"1000\" height=\"66\" data-init-height=\"120\" title=\"befehl-xargs-beispiel-5\" loading=\"lazy\" src=\"https:\/\/profi-tutorials.de\/linux\/wp-content\/uploads\/sites\/3\/2021\/07\/befehl-xargs-beispiel-5.png\" data-width=\"548\" data-height=\"66\"\/><\/span><\/p>\n<h2 id=\"t-1625562976737\">Exit-Codes<\/h2>\n<p>Die folgende Tabelle zeigt die verschiedenen <strong>Exit-Codes<\/strong> sowie die jeweils angezeigten <strong>Status <\/strong>des Befehls <strong>xargs<\/strong>.<\/p>\n<table data-rows=\"9\" data-cols=\"2\" data-v=\"middle\">\n<thead>\n<tr>\n<th style=\"\"><strong>Exit-Code<\/strong><\/th>\n<th style=\"\">Status<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\">0<\/td>\n<td data-th=\"Status\" style=\"\">Ausf&uuml;hrung erfolgreich<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\">123<\/td>\n<td data-th=\"Status\" style=\"\">Ein beliebiger Aufruf des gegebenen Befehls wurde mit dem Exit-Code 1-125 beendet<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\">124<\/td>\n<td data-th=\"Status\" style=\"\">Der gegebene Befehl wurde mit dem Exit-Code 255 beendet<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\">125<\/td>\n<td data-th=\"Status\" style=\"\">Der gegebene Befehl wurde von einem Signal beendet<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\" rowspan=\"1\" colspan=\"1\">126<\/td>\n<td data-th=\"Status\" style=\"\" rowspan=\"1\" colspan=\"1\">Der gegebene Befehl kann nicht ausgef&uuml;hrt werden<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\" rowspan=\"1\" colspan=\"1\">127<\/td>\n<td data-th=\"Status\" style=\"\" rowspan=\"1\" colspan=\"1\">Der gegebene Befehl wurde nicht gefunden<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\" rowspan=\"1\" colspan=\"1\">128+<\/td>\n<td data-th=\"Status\" style=\"\" rowspan=\"1\" colspan=\"1\">Werden von der Shell verwendet, um anzuzeigen, dass ein Programm aufgrund eines fatalen Signals abgebrochen wurde<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Exit-Code\" style=\"\" rowspan=\"1\" colspan=\"1\">1<\/td>\n<td data-th=\"Status\" style=\"\" rowspan=\"1\" colspan=\"1\">Ein anderer Fehler ist aufgetreten (Catchall)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: center;\">Abonniere JETZT unseren Newsletter!<\/p>\n<p style=\"text-align: center;\">Verpasse nie wieder <strong>neue<\/strong> Beitr&auml;ge und <strong>exklusive Insider-Only-Inhalte!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Beitrag lernen Sie den Befehl xargs kennen, welcher verwendet wird, um Befehle mit Argumenten auszuf\u00fchren, welche vom Standard-Input gelesen werden. Viele Befehle lassen sich unter Linux- \/ UNIX standardm\u00e4\u00dfig sowohl auf einzelnen Dateien, als auch auf Listen von Dateien anwenden &#8211; ist dies nicht m\u00f6glich, kann der Befehl xargs eingesetzt werden. Ein weiterer [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":7884,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"none","_seopress_titles_title":"%%post_title%% %%sep%% %%sitetitle%%","_seopress_titles_desc":"In diesem Beitrag lernen Sie den Befehl xargs kennen, welcher unter UNIX- \/ Linux dazu verwendet wird, um Befehle mit Argumenten vom Standard-Input auszuf\u00fchren.","_seopress_robots_index":"","footnotes":""},"categories":[8],"tags":[],"class_list":["post-7620","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration"],"_links":{"self":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/7620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/comments?post=7620"}],"version-history":[{"count":147,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/7620\/revisions"}],"predecessor-version":[{"id":8010,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/7620\/revisions\/8010"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media\/7884"}],"wp:attachment":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media?parent=7620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/categories?post=7620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/tags?post=7620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}