2017-06-20 139 views
0

根据我的理解,Linux中的xargs命令可以用于输出一个命令并将其作为另一个命令的输入。然而,我注意到将xargs作为参数传递给它本身会执行之前只是在没有参数的情况下被调用的输出,并且默认为回显。我的问题是为什么调用xargs作为自己的参数来执行输出?xargs xargs为什么执行xargs会在屏幕上打印的内容?

$ echo ls | xargs 

ls 

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

Stack Overflow是用于编程和发展问题的站点。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。 – jww

回答

0
  • echo foo打印foo
  • 因此,echo foo | xargs bar运行bar foo没有输入;它相当于bar foo </dev/null
  • 因此,echo ls | xargs xargs运行xargs ls没有输入;它相当于xargs ls </dev/null
  • xargs ls无输入运行ls一次。

在未来,你可能会发现使用-t标志xargs,其运行之前打印命令:

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

谢谢,很好的解释。 –