简单的unix命令,什么是{}和\; 对于

用这组命令,什么是{}和\; 字符为?

find . -name '*.clj' -exec grep -r resources {} \; 

见男人找 。 (特别是关于-exec的部分)

当使用-exec在每个find的文件上运行一个命令时, {}被replace为find的每个文件的名字,命令被\;终止\;

在你的例子中,在当前目录( . )下find的与*.clj名称匹配的所有文件都会有grep -r resources运行(findstringresources如果每个文件都存在的话)。

这实际上有些多余,因为-r是recursionsearch子目录,这就是find已经在做的事情。

在find中,-exec参数抓取了其余的参数, (分号)必须逃脱,因此\\。 在此范围内,{}将被replace为正在检查的文件名。

考虑一下我觉得更容易理解的替代命令:

 find . -name *.clj | xargs grep -r resources 

string“{}”将被正在处理的当前文件replace。 转义的分号终止-exec选项的命令参数。

find的string{}将被当前文件的path名取代。

分号用于终止find实用程序调用的shell命令。

它需要被转义或引用,所以它不会被shell解释,因为; 是shell(列表操作符)使用的特殊字符之一。

另请参阅: find命令的-exec选项为什么需要反斜杠和分号?