我已经阅读了xargs的手册页十几次,我仍然无法弄清楚如何让它终止。当我在shell上调用它时:xargs echo this is xargs
我按ctrl + d时只看到输出。有没有办法指定我希望xargs在读取一定数量的参数后停止?因此,当我输入xargs echo this is xargs
并按回车键时,我立即看到this is xargs
而不必按ctrl + d?
我尝试使用-e和-E设置eof标志,这样做时对我来说都没有用:
xargs -Ez echo this is xargs z
我在问,因为我正在尝试编写一个C语言程序,该程序使用execl来调用xargs,但我的程序挂起,所以在我尝试继续编写程序之前,我想至少能够从命令行调用xargs。
答案 0 :(得分:1)
Xargs 从标准输入文件获取输入后执行实用程序/命令。
当您尝试执行xargs echo something something
时,等待标准输入文件的输入,一旦按下 Ctr + d 表示EOF,Xargs使用标准输入文件中的参数执行命令。
以下是示例。
bash-$ echo "Testing xargs command" | xargs echo
# echo executes by reading the input
#file from pipe ( which redirects first commands output into second commands input )
Testing xargs command #output
bash-$
bash-$
bash-$ xargs echo #waits until CTRL+D is pressed
Testing xargs command
Testing xargs command #output
bash-$
bash-$
bash-$ xargs -E EOF echo # xargs option -E specifies End-OF-File-String, here EOF
Testing xargs command
EOF
Testing xargs command #output
希望这有帮助
答案 1 :(得分:0)
xargs
从stdin读取输入,然后将其附加到您传递给它的参数。你所看到的是当你运行xargs
时它正在等待stdin的输入(显然是挂起),当你输入ctl + d时 - 这是EOF到标准输入,因此xargs
处理它读过的所有内容。 / p>
所有名为* .conf的文件中字符串“string”的xargs
到grep
的示例
find . -name \*.conf -print | xargs grep string