私の現在のディレクトリ:
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
最初の表現は間違いなく何も返さないので、2番目のgrepはxargsから空のargsリストを取得します。
2番目のgrepには-r(再帰)が含まれます。
man grepページから:
-r, --recursive:: ファイルオペランドが指定されない場合、grep は作業ディレクトリを検索します。
そのため、xargsが実行しているgrepは/home/debianに復元されます。