Zum Inhalt springen

Xargs: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „line>“ durch „line copy>“
 
(48 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''xargs''' erstellt Befehlszeilen von der Standardeingabe und führt sie aus
'''xargs''' - Befehlszeilen von der Standardeingabe erstellen und ausführen


= Beschreibung =
== Beschreibung ==
$ '''type xargs'''
'''xargs''' erwartet als Parameter ein Kommando, welches dann auf Dateien einer Liste angewandt wird, die von der Standardeingabe gelesen werden.
xargs ist /usr/bin/xargs
* Unter Linux/UNIX kann man fast alle Befehle auf einzelne Datei oder auch auf eine ganze Liste von Dateien anwenden.
 
* Wenn dies nicht möglich sein sollte oder sich eine Dateiliste nicht mit Wildcards erstellen lässt, kann man das Kommando xargs verwenden.
* This manual page documents the GNU version of xargs. xargs reads items from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or new‐lines, and executes the command (default is echo) one or more times with any initial-arguments followed by items read from standard input. Blank lines on the standard input are ignored.
* Wenn viele Dateien (manchmal über den Verzeichnisbaum verteilt) gleichartig behandeln werden sollen, ob die Dateien nun gelöscht, der Eigentümer oder die Zugriffsrechte geändert werden soll, ist ''find(1)'' eine gute Lösung
* The command line for command is built up until it reaches a system-defined limit (unless the -n and -L options are used). The specified command will be invoked as many times as necessary to use up the list of input items. In general, there will be many fewer invocations of command than there were items in the input. This will normally have significant performance benefits. Some commands can usefully be executed in parallel too; see the -P option.
<syntaxhighlight lang="bash" highlight="1" line copy>
* Because Unix filenames can contain blanks and newlines, this default behaviour is often problematic; filenames containing blanks and/or newlines are incorrectly processed by xargs. In these situations it is better to use the -0 option, which prevents such problems. When using this option you will need to ensure that the program which produces the input for xargs also uses a null character as a separator. If that program is GNU find for example, the -print0 option does this for you.
find / -user toelpel -exec rm \{\} \;
* If any invocation of the command exits with a status of 255, xargs will stop immediately without reading any further input. An error message is issued on stderr when this happens.
</syntaxhighlight>


Sollen viele Dateien bearbeiten werden wird für jede Datei ein eigene Befehl abgesetzt.  
Sollen viele Dateien bearbeiten werden wird für jede Datei ein eigene Befehl abgesetzt.
* Findet ''find(1)'' nun 2000 Dateien des Users toelpel, werden (hintereinander) 2000 Prozesse gestartet, die jeweils eine Datei löschen.  
* Findet find(1) nun 2000 Dateien des Users toelpel, werden (hintereinander) 2000 Prozesse gestartet, die jeweils eine Datei löschen.
* Das verlangsamt den Vorgang und erzeugt unnötig Last. ''rm(1)'' kann mehrere Dateien auf einmal löschen, ein einzelnes ''rm(1)''-Kommando mit 2000 Argumenten wäre sinnvoller.
* Das verlangsamt den Vorgang und erzeugt unnötig Last.  
* rm(1) kann mehrere Dateien auf einmal löschen, ein einzelnes rm(1)-Kommando mit 2000 Argumenten wäre sinnvoller.


'''xargs''' erwartet als Parameter ein Kommando, welches dann auf Dateien einer Liste angewandt wird, die von der Standardeingabe gelesen werden.
== Installation ==
* Unter Linux/UNIX kann man fast alle Befehle auf einzelne Datei oder auch auf eine ganze Liste von Dateien anwenden.
''xargs'' ist Teil des Pakets [[findutils]]
* Wenn dies nicht möglich sein sollte oder sich eine Dateiliste nicht mit Wildcards erstellen lässt, kann man das Kommando xargs verwenden.
* Wenn viele Dateien (manchmal über den Verzeichnisbaum verteilt) gleichartig behandeln werden sollen, ob die Dateien nun gelöscht, der Eigentümer oder die Zugriffsrechte geändert werden soll, ist ''find(1)'' eine gute lösung.  find / -user toelpel -exec rm  \{\} \;


= Installation =
== Aufruf ==
= Syntax =
<syntaxhighlight lang="bash" highlight="1" line copy>
$ xargs [options] [command [initial-arguments]]
xargs [options] [command [initial-arguments]]
</syntaxhighlight>


xargs wird mit folgender Syntax in einem Terminal aufgerufen.  
xargs wird mit folgender Syntax in einem Terminal aufgerufen.
* Kommando1 | xargs [Optionen] Kommando2  
* Kommando1 | xargs [Optionen] Kommando2
* Hierbei wird das "Kommando2" mit den Argumenten aufgerufen, die das "Kommando1" auf die Standardausgabe gibt.
* Hierbei wird das "Kommando2" mit den Argumenten aufgerufen, die das "Kommando1" auf die Standardausgabe gibt.


''xargs(1)'' hat die Funktion Kommandozeilen aus Standard-Input zu erstellen und auszuführen. find / -user toelpel -print | xargs rm
''xargs(1)'' hat die Funktion Kommandozeilen aus Standard-Input zu erstellen und auszuführen.  
<syntaxhighlight lang="bash" highlight="1" line copy>
find / -user toelpel -print | xargs rm
</syntaxhighlight>


''find(1)'' listet alle Dateien des Users toelpel auf und reicht sie über die Pipe an xargs weiter. ''xargs(1)'' nimmt die Liste von der Standardeingabe und bastelt daraus und aus dem ''rm(1)'', was ihm als Argument übergeben wurde, ein ''rm(1)''-Kommando mit 2000 Argumenten.  
''find(1)'' listet alle Dateien des Users toelpel auf und reicht sie über die Pipe an xargs weiter. ''xargs(1)'' nimmt die Liste von der Standardeingabe und bastelt daraus und aus dem ''rm(1)'', was ihm als Argument übergeben wurde, ein ''rm(1)''-Kommando mit 2000 Argumenten.
* Ergebnis: 3 Prozesse anstelle von 2001 Prozessen in der ersten Variante, um 2000 Dateien zu löschen.
* Ergebnis: 3 Prozesse anstelle von 2001 Prozessen in der ersten Variante, um 2000 Dateien zu löschen.


 
=== Optionen ===
== Parameter ==
{| class="wikitable sortable options gnu"
== Optionen ==
|-
{|| class="wikitable sortable"  
! Unix !! GNU !! Parameter || Beschreibung
|-
|-
| | '''''-a [Datei]'' oder ''--arg-file=[Datei]'' '''
| -a || --arg-file= || [Datei] || Liest die Argumente aus einer Datei anstatt von der Standardeingabe
| | Liest die Argumente aus einer Datei anstatt von der Standardeingabe  
|-
|-
| | '''''-0'' oder ''--null'' '''
| -0 || --null || || Argumente werden aufgrund des NULL-Zeichens getrennt anstatt des Leerzeichen
| | Argumente werden aufgrund des NULL-Zeichens getrennt anstatt des Leerzeichen.
* Jedes Zeichen wird wörtlich genommen
* Jedes Zeichen wird wörtlich genommen.
* Nützlich in Kombination mit der -print0 Option von find
* Nützlich in Kombination mit der ''-print0'' Option von ''find''.
|-
|-
| | '''''-d [Trennzeichen]'' oder ''--delimiter=[Trennzeichen]'' '''
| -d || --delimiter= || [Trennzeichen] || Argumente werden aufgrund des Trennzeichens getrennt anstatt des Leerzeichens
| | Argumente werden aufgrund des Trennzeichens getrennt anstatt des Leerzeichens.
* Jedes Zeichen wird wörtlich genommen
* Jedes Zeichen wird wörtlich genommen.
* Das Trennzeichen kann ein einzelnes Zeichen sein, ein escaptes Zeichen, ein oktaler oder ein hexadezimaler Code
* Das Trennzeichen kann ein einzelnes Zeichen sein, ein escaptes Zeichen, ein oktaler oder ein hexadezimaler Code.
* Mehrere Zeichen sind nicht erlaubt
* Mehrere Zeichen sind nicht erlaubt.
|-
|-
| | '''''--help'' '''
| || --help || || Hilfe anzeigen
| | Hilfe anzeigen.
|-
|-
| | '''''-i'''''
| -i || || || Standardmäßig wird "{}" als Ersatz-Zeichenkette verwendet, wie bei der Aktion -exec des Befehls find
| | Standardmäßig wird "{}" als Ersatz-Zeichenkette verwendet, wie bei der Aktion ''-exec'' des Befehls ''find''.
* xargs fügt dann die Dateiliste an der Stelle ein, wo die Ersatz-Zeichenkette steht
* xargs fügt dann die Dateiliste an der Stelle ein, wo die Ersatz-Zeichenkette steht.
* Dies kommt zur Anwendung wenn der Befehl die von xargs erzeugte Dateiliste nicht am Ende erwartet
* Dies kommt zur Anwendung wenn der Befehl die von xargs erzeugte Dateiliste nicht am Ende erwartet.
|-
|-
| | '''''-p'' oder ''--interactive'' '''
| -p || --interactive || || Fragt vor jeder Ausführung, ob fortgefahren werden soll
| | Fragt vor jeder Ausführung, ob fortgefahren werden soll.
|-
|-
| | '''''-r'' oder ''--no-run-if-empty'' '''
| -r || --no-run-if-empty || || Führt "Kommando2" nicht aus, wenn die Standardeingabe keine Nicht-Leerzeichen enthält
| | Führt "Kommando2" nicht aus, wenn die Standardeingabe keine Nicht-Leerzeichen enthält.
|-
|-
| | '''''-n'' oder ''--max-args'' '''
| -n || --max-args || || Führt "Kommando2" auf jeweils eine bestimmt Anzahl von übergebenen Argumenten aus
| | Führt "Kommando2" auf jeweils eine bestimmt Anzahl von übergebenen Argumenten aus.
|-
|-
| | '''''-P'' oder ''--max-procs'' '''
| -P || --max-procs || || Führt "Kommando2" mehrfach aus
| | Führt "Kommando2" mehrfach aus.
* Mit der Kombination mit -n kann so eine bessere Auslastung des Systems erreicht werden
* Mit der Kombination mit -n kann so eine bessere Auslastung des Systems erreicht werden.
|-
|-
| | '''''-t'' oder ''--verbose'' '''
| -t || --verbose || || Gibt mehr Informationen darüber, was gemacht wird
| | Gibt mehr Informationen darüber, was gemacht wird.
 
|-
|-
|}
|}


= Konfiguration =
=== Argumente ===
== Dateien ==
=== Umgebungsvariablen ===
=== Exit-Status ===
 
== Konfiguration ==
=== Dateien ===
<noinclude>
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
=== Dokumentation ===


= Anwendungen =
; Man-Page
= Dokumentation =
# xargs(1)
== Man-Pages ==
# XARGS(1) General Commands Manual


== Info-Pages ==
;Info-Page
= Links =
=== Links ===
== Intern ==
==== Projekt ====
== Weblinks ==
==== Weblinks ====


= Testfragen =
{{DEFAULTSORT:xargs}}
<div class="toccolours mw-collapsible mw-collapsed">
{{DISPLAYTITLE:xargs}}
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>


[[Kategorie:Linux:Befehl]]
[[Kategorie:Linux/Befehl]]
[[Kategorie:findutils]]
</noinclude>

Aktuelle Version vom 11. Mai 2025, 13:43 Uhr

xargs - Befehlszeilen von der Standardeingabe erstellen und ausführen

Beschreibung

xargs erwartet als Parameter ein Kommando, welches dann auf Dateien einer Liste angewandt wird, die von der Standardeingabe gelesen werden.

  • Unter Linux/UNIX kann man fast alle Befehle auf einzelne Datei oder auch auf eine ganze Liste von Dateien anwenden.
  • Wenn dies nicht möglich sein sollte oder sich eine Dateiliste nicht mit Wildcards erstellen lässt, kann man das Kommando xargs verwenden.
  • Wenn viele Dateien (manchmal über den Verzeichnisbaum verteilt) gleichartig behandeln werden sollen, ob die Dateien nun gelöscht, der Eigentümer oder die Zugriffsrechte geändert werden soll, ist find(1) eine gute Lösung
find / -user toelpel -exec rm \{\} \;

Sollen viele Dateien bearbeiten werden wird für jede Datei ein eigene Befehl abgesetzt.

  • Findet find(1) nun 2000 Dateien des Users toelpel, werden (hintereinander) 2000 Prozesse gestartet, die jeweils eine Datei löschen.
  • Das verlangsamt den Vorgang und erzeugt unnötig Last.
  • rm(1) kann mehrere Dateien auf einmal löschen, ein einzelnes rm(1)-Kommando mit 2000 Argumenten wäre sinnvoller.

Installation

xargs ist Teil des Pakets findutils

Aufruf

xargs [options] [command [initial-arguments]]

xargs wird mit folgender Syntax in einem Terminal aufgerufen.

  • Kommando1 | xargs [Optionen] Kommando2
  • Hierbei wird das "Kommando2" mit den Argumenten aufgerufen, die das "Kommando1" auf die Standardausgabe gibt.

xargs(1) hat die Funktion Kommandozeilen aus Standard-Input zu erstellen und auszuführen.

find / -user toelpel -print | xargs rm

find(1) listet alle Dateien des Users toelpel auf und reicht sie über die Pipe an xargs weiter. xargs(1) nimmt die Liste von der Standardeingabe und bastelt daraus und aus dem rm(1), was ihm als Argument übergeben wurde, ein rm(1)-Kommando mit 2000 Argumenten.

  • Ergebnis: 3 Prozesse anstelle von 2001 Prozessen in der ersten Variante, um 2000 Dateien zu löschen.

Optionen

Unix GNU Parameter Beschreibung
-a --arg-file= [Datei] Liest die Argumente aus einer Datei anstatt von der Standardeingabe
-0 --null Argumente werden aufgrund des NULL-Zeichens getrennt anstatt des Leerzeichen
  • Jedes Zeichen wird wörtlich genommen
  • Nützlich in Kombination mit der -print0 Option von find
-d --delimiter= [Trennzeichen] Argumente werden aufgrund des Trennzeichens getrennt anstatt des Leerzeichens
  • Jedes Zeichen wird wörtlich genommen
  • Das Trennzeichen kann ein einzelnes Zeichen sein, ein escaptes Zeichen, ein oktaler oder ein hexadezimaler Code
  • Mehrere Zeichen sind nicht erlaubt
--help Hilfe anzeigen
-i Standardmäßig wird "{}" als Ersatz-Zeichenkette verwendet, wie bei der Aktion -exec des Befehls find
  • xargs fügt dann die Dateiliste an der Stelle ein, wo die Ersatz-Zeichenkette steht
  • Dies kommt zur Anwendung wenn der Befehl die von xargs erzeugte Dateiliste nicht am Ende erwartet
-p --interactive Fragt vor jeder Ausführung, ob fortgefahren werden soll
-r --no-run-if-empty Führt "Kommando2" nicht aus, wenn die Standardeingabe keine Nicht-Leerzeichen enthält
-n --max-args Führt "Kommando2" auf jeweils eine bestimmt Anzahl von übergebenen Argumenten aus
-P --max-procs Führt "Kommando2" mehrfach aus
  • Mit der Kombination mit -n kann so eine bessere Auslastung des Systems erreicht werden
-t --verbose Gibt mehr Informationen darüber, was gemacht wird

Argumente

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

Anhang

Siehe auch

Dokumentation

Man-Page
  1. xargs(1)
Info-Page

Links

Projekt

Weblinks