exec用法 - linux find命令



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

我已经开始在linux终端中组合不同的命令。 我想知道为什么命令需要反斜杠和分号,例如:

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

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

cp randomfile ./test

没有\;

它们是清楚地表明命令的结束,还是仅仅是文档中的要求? 基本原则是什么?

谢谢!


Answer #1

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

command1; command2

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

因此,为了避免解释中的特殊shell字符,需要使用反斜杠对其进行转义,以删除下一个字符读取和行继续的任何特殊含义。

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

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

也可以看看:


Answer #2

来自“找人”:

查找的所有后续参数都被视为命令的参数,直到由';'组成的参数为止 遇到了。

发现需要知道exec的参数何时终止。 使用;终止shell命令是很自然的。 因为shell也使用这个字符。 出于同样的原因,当通过shell插入时,必须转义这样的字符。





backslash