Wird im Allgemeinen xargs
für Fälle verwendet, in denen Sie (mit dem Symbol |
) etwas von einem Befehl zum anderen ( Command1 | Command2
) weiterleiten würden, die Ausgabe des ersten Befehls jedoch nicht korrekt als Eingabe für den zweiten Befehl empfangen wird.
Dies ist normalerweise der Fall, wenn der zweite Befehl die Dateneingabe über Standard In (stdin) nicht korrekt verarbeitet (z. B .: Mehrere Zeilen als Eingabe, die Art der Zeileneinrichtung, die als Eingabe verwendeten Zeichen, mehrere Parameter als Eingabe, der als empfangene Datentyp) Eingabe usw ..). Um Ihnen ein kurzes Beispiel zu geben, testen Sie Folgendes:
Beispiel 1:
ls | echo
- Dies wird nichts bewirken, da er echo
nicht weiß, wie er mit den empfangenen Eingaben umgeht. In diesem Fall xargs
wird die Eingabe in diesem Fall so verarbeitet, dass sie korrekt verarbeitet werden kann echo
(z. B .: als einzelne Informationszeile).
ls | xargs echo
- Dadurch werden alle Informationen ls
in einer einzigen Zeile ausgegeben
Beispiel 2:
Angenommen, ich habe mehrere goLang-Dateien in einem Ordner namens go. Ich würde sie mit so etwas suchen:
find go -name *.go -type f | echo
- Aber wenn das Pipe-Symbol da und das echo
am Ende wäre, würde es nicht funktionieren.
find go -name *.go -type f | xargs echo
- Hier würde es dank funktionieren, xargs
aber wenn ich jede Antwort vom find
Befehl in einer einzigen Zeile haben möchte, würde ich Folgendes tun:
find go -name *.go -type f | xargs -0 echo
- In diesem Fall wird die gleiche Ausgabe von find
mit angezeigt echo
.
Befehle wie cp, echo, rm, less
und andere, die einen besseren Umgang mit der Eingabe benötigen, erhalten einen Vorteil, wenn sie mit verwendet werden xargs
.