我当前的目录:
pwd
/home/debian
-dig
在 中搜索字符串/home/debian/mydoc/source
。
grep -lr -e "-dig" /home/debian/mydoc/source
#get nothing as output
在我看来,通过管道发送任何内容到下一个 grep 也不会得到任何结果。
grep -lr -e "-dig" /home/debian/mydoc/source | xargs -d '\n' grep -lr -e "dns"
#my desired output:nothing ,none directory send to xargs
核实 :
grep -lr -e "-dig" /home/debian/mydoc/source | xargs -d '\n' grep -lr -e "dns"
/home/debian/.cache/google-chrome/Default/Cache/b2b96208dbb4fdff_0
/home/debian/.cache/google-chrome/Default/Cache/33f7b9aaf4e3cb37_0
/home/debian/.cache/google-chrome/Default/Cache/b7b3cae8052a94ea_0
真正的搜索结果并不像我想象的那样,是一样的grep -lr -e "dns" /home/debian
。
grep -lr -e "dns" /home/debian
/home/debian/.cache/google-chrome/Default/Cache/b2b96208dbb4fdff_0
/home/debian/.cache/google-chrome/Default/Cache/33f7b9aaf4e3cb37_0
/home/debian/.cache/google-chrome/Default/Cache/b7b3cae8052a94ea_0
请告诉我bash命令背后的原理grep -lr -e "-dig" /home/debian/mydoc/source | xargs -d '\n' grep -lr -e "dns"
--?
答案1
第一个代表肯定不会返回任何内容,因此第二个 grep 从 xargs 获取一个空的 args 列表。
第二个 grep 包括 -r(递归)。
从 man grep 页面:
-r, --recursive :: 请注意,如果未给出文件操作数,则 grep 搜索工作目录。
因此 xargs 运行的 grep 恢复到 /home/debian。