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

我已经开始在linuxterminal中结合不同的命令。 我想知道为什么反斜杠和分号需要一个命令,如:

find ./ -name 'blabla' -exec cp {} ./test \; 

当一个简单的cp命令是简单的:

 cp randomfile ./test 

没有“

他们是否清楚地指出命令的结束,还是只是在文档中要求? 什么是根本原则?

谢谢!

从“男人找”:

以下所有的参数都被认为是命令的参数,直到由“;”组成的参数 遇到。

find需要知道什么时候exec的参数被终止。 终止shell命令是很自然的; 因为shell也使用这个字符。 出于同样的原因,这样的字符必须在通过壳体插入时逃脱。

使用分号前的反斜杠,因为; 是用于分隔shell命令的列表运算符(或者&&|| )之一。 例如:

 command1; command2 

find实用程序正在使用;+来终止由-exec调用的shell命令。

所以为了避免解释特殊的shell字符,他们需要用反斜杠转义来消除下一个读取字符和续行的特殊含义。

因此find命令允许以下示例语法:

 find . -exec echo {} \; find . -exec echo {} ';' find . -exec echo {} ";" find . -exec echo {} \+ find . -exec echo {} + 

也可以看看:

  • 在find中使用分号(;)vs plus(+)和exec
  • 简单的unix命令,什么是{}和\; 对于