为什么 xargs xargs 执行 xargs 会打印到屏幕上的内容?
Why does xargs xargs execute what xargs would have printed to the screen?
据我了解,Linux 中的 xargs 命令可用于获取一个命令的输出并将其作为另一个命令的输入传递。但是,我注意到将 xargs 作为参数传递给自身会执行以前简单的输出,如果它在没有参数的情况下被调用并且默认为 echo。我的问题是为什么调用 xargs 作为自身的参数执行输出?
$ echo ls | xargs
ls
$ echo ls | xargs xargs
AppData
'Application Data'
centos-7.box
Contacts
Cookies
Desktop
Documents
Downloads
Dropbox
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
据我了解,Linux 中的 xargs 命令可用于获取一个命令的输出并将其作为另一个命令的输入传递。但是,我注意到将 xargs 作为参数传递给自身会执行以前简单的输出,如果它在没有参数的情况下被调用并且默认为 echo。我的问题是为什么调用 xargs 作为自身的参数执行输出?
$ echo ls | xargs
ls
$ echo ls | xargs xargs
AppData
'Application Data'
centos-7.box
Contacts
Cookies
Desktop
Documents
Downloads
Dropbox
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