2017-06-20 1 views
0

Soweit ich weiß, kann der Befehl xargs in Linux verwendet werden, um die Ausgabe eines Befehls als Eingabe für einen anderen Befehl zu übernehmen. Ich habe jedoch bemerkt, dass das Übergeben von xargs als Argument an sich selbst ausführt, was zuvor einfach die Ausgabe gewesen wäre, wenn es ohne Parameter aufgerufen wurde und standardmäßig auf echo reagiert. Meine Frage ist, warum Aufruf von Xargs als Argument, um selbst die Ausgabe auszuführen?Warum führt xargs xargs aus, welche Xargs auf dem Bildschirm gedruckt wurden?

$ echo ls | xargs 

ls 

$ echo ls | xargs xargs 
AppData 
'Application Data' 
centos-7.box 
Contacts 
Cookies 
Desktop 
Documents 
Downloads 
Dropbox 
+0

Stack-Überlauf ist eine Seite für die Programmierung und Entwicklungsfragen. Diese Frage scheint off-topic zu sein, weil es nicht um Programmierung oder Entwicklung geht. Siehe [Welche Themen kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic) in der Hilfe. Vielleicht [Super User] (http://superuser.com/) oder [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) wäre ein besserer Ort, um zu fragen. – jww

Antwort

0
  • echo foo druckt foo.
  • So, echo foo | xargs bar läuft bar foo ohne Eingabe; es entspricht bar foo </dev/null.
  • So, echo ls | xargs xargs läuft xargs ls ohne Eingabe; es entspricht xargs ls </dev/null.
  • xargs ls ohne Eingabe läuft ls einmal.

In Zukunft könnten finden Sie es hilfreich, die -t Flagge zu xargs, die es vor dem Ausführen des Befehls druckt zu verwenden:

$ echo foo | xargs -t xargs -t 
xargs -t foo 
foo 
xargs: foo: No such file or directory 
+0

Danke, tolle Erklärung. –