我試圖瞭解這一行:瞭解{}/dev/null ;使用find時-exec
find $HOME -name "*.c" -exec grep "find this string" {} /dev/null \;
我理解它的大部分,但我不知道該{}
後和;
之前出現的/dev/null
。
find
查找每個C程序文件,然後對於每個文件,grep
查找包含該字符串的行......然後是將所有錯誤發送到/dev/null
?
我試圖瞭解這一行:瞭解{}/dev/null ;使用find時-exec
find $HOME -name "*.c" -exec grep "find this string" {} /dev/null \;
我理解它的大部分,但我不知道該{}
後和;
之前出現的/dev/null
。
find
查找每個C程序文件,然後對於每個文件,grep
查找包含該字符串的行......然後是將所有錯誤發送到/dev/null
?
它用於強制grep打印匹配的文件名,僅在沒有特定選項的greps中才有用。看:
$ cat file
1
2
3
$ grep 2 file
2
$ grep 2 file /dev/null
file:2
它曾經需要得到該輸出但GNU的grep(和其他人?)這些日子裏,你可以做到這一點,而不是:
$ grep -H 2 file
file:2
您可能要檢查的sell-按照你的教科書上的最新信息;-)。
非常好的答案與解釋。我認爲POSIX'grep'有一個選項,但是'-l'只是文件名*,而不是匹配。教科書應該明確解釋爲什麼'/ dev/null'作爲參數傳遞,因爲它基本上只用於觸發副作用。 – chepner
它似乎沒有向'/ dev/null'發送任何東西,它將它作爲grep的第二個參數,並且grep在其中找不到任何東西。事實上,在我看來,它沒有任何作用。 –
這很奇怪,因爲它在我上學的Unix教科書中 – Brow