我的当前目录:
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"?
发布于 2020-05-08 08:35:53
第一个代表肯定什么也不返回,所以第二个grep从xargs获得一个空的args列表。
第二个grep包括-r (递归)。
来自man grep页面:
-r,-递归::注意,如果没有提供文件操作数,grep将搜索工作目录。
因此,xargs运行的grep返回到/home/debian。
https://unix.stackexchange.com/questions/585299
复制相似问题