为什么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命令,什么是{}和\; 对于