Ich bin ziemlich verwirrt auf diese. Brauchen Sie einige Klarstellungen.Verständnis der UNIX-Befehl xargs
Beispiel 1:
pgrep string | xargs ps
Beispiel 2:
find . | xargs grep whatever
aus Beispiel 1, ich habe es sammeln ist so:
Suche nach einem "string", das ist Teil des Namens des laufenden Prozesses und Rückgabe der Prozess-IDs aller Übereinstimmungen an 'xargs ps' -> die gerade anhängen ps sich auf die Spiele (die Prozess-IDs selbst sind) zu bekommen die gleiche Ausgabe wie:
ps <processid>
Kann jemand erklären, was xargs wirklich tut in diesem Fall?
aus Beispiel 2, entnehme ich, es ist so:
Es ist für einige „string“ aus dem aktuellen Arbeitsverzeichnis rekursiv zu suchen. Hier, wie genau funktionieren 'Xargs'?
Ich war der Meinung, dass 'xargs' wiederholt Daten von der Standardeingabe an das 'Argument' an Xargs hängt (das normalerweise ein UNIX-Befehl ist).
Von xargs() man-Seite:
xargs liest Elemente aus der Standardeingabe, durch Leerzeichen voneinander getrennt oder Zeilenumbrüchen (die mit Doppel- oder Einzel Anführungszeichen oder einem Backslash geschützt werden kann), und führt die Befehl (Standard ist/bin/echo) einmal oder mehrmals mit einem beliebigen Initialargument, gefolgt von Elementen, die von der Standardeingabe gelesen werden. Leerzeilen auf der Standardeingabe werden ignoriert.
xargs wirkt wie der "Befehl subtitution" (zumindest mit Bash) erhalten. Es verwandelt Multiline-Ergebnisse (vertikal) in eine einzeilige Liste von Token-Argumenten (horizontal). (Beachten Sie, dass Sie die Ergebnisse ein wenig filtern können (mit sed für ex), bevor Sie sie durch xargs weiterleiten). Plus xargs behandelt den Fehler «_too man arguments_», der vor dem Linux-Kernel 2.6.23 auftreten kann (Siehe [wikipedia] (https://en.wikipedia.org/wiki/Xargs)). Hier ist [ein weiterer hilfreicher Thread] (http://unix.stackexchange.com/questions/24954/when-is-xargs-needed) – Stphane