Bash 理解{}/dev/null\;将find与-exec一起使用时
我试图理解这句话:Bash 理解{}/dev/null\;将find与-exec一起使用时,bash,unix,grep,find,exec,Bash,Unix,Grep,Find,Exec,我试图理解这句话: find $HOME -name "*.c" -exec grep "find this string" {} /dev/null \; 我理解其中的大部分,但我不确定出现在{}之后和之前的/dev/null find查找每个C程序文件,然后对于每个文件,grep查找包含字符串的行。。。然后它是否将所有错误发送到/dev/null 它用于强制grep打印匹配的文件名,仅在没有特定选项的grep中有用。看: $ cat file 1 2 3 $ grep 2 file 2
find $HOME -name "*.c" -exec grep "find this string" {} /dev/null \;
我理解其中的大部分,但我不确定出现在{}
之后和之前的/dev/null
代码>
find
查找每个C程序文件,然后对于每个文件,grep
查找包含字符串的行。。。然后它是否将所有错误发送到/dev/null
它用于强制grep打印匹配的文件名,仅在没有特定选项的grep中有用。看:
$ cat file
1
2
3
$ grep 2 file
2
$ grep 2 file /dev/null
file:2
过去需要它来获得输出,但现在使用GNU grep(和其他?)您可以这样做:
$ grep -H 2 file
file:2
您可能需要检查课本上的销售日期;-) 它似乎没有向/dev/null
发送任何内容,它将它作为第二个参数提供给grep,grep在那里永远也找不到任何内容。事实上,在我看来,它没有任何效果。这很奇怪,因为我在学校的Unix教科书中得到了一个很好的答案和解释。我认为POSIXgrep
对此有一个选项,但是-l
只是文件名,不是匹配项。教科书应该明确解释为什么/dev/null
作为参数传递,因为它基本上只用于触发副作用。