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

14 浏览
0 Comments

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

我开始在Linux终端中组合不同的命令。我想知道为什么像下面这样的命令需要反斜线和分号:

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

而一个简单的cp命令只需要:

cp randomfile ./test

没有\\;

它们是为了清楚地指示命令的结束,还是仅在文档中需要?这是什么底层原则?

admin 更改状态以发布 2023年5月24日
0
0 Comments

来自“man find”:

find的所有后续参数都被视为命令的参数,直到遇到一个由“;”组成的参数为止。

find需要知道exec的参数何时终止。以;作为shell命令的终止符是很自然的,因为shell也使用这个字符。出于同样的原因,在通过shell插入此类字符时必须对其进行转义。

0
0 Comments

在分割shell命令的列表运算符(或&&, ||) 中,分号前面需要加反斜杠。例如:

command1; command2

find 工具使用 -exec 来终止调用的shell命令。可以使用分号或加号来终止shell命令。

为了避免特殊的shell字符被解释,需要用反斜杠来转义,以便移除下一个字符的任何特殊含义并维持行的连续性。

因此,可以使用以下语法来执行find 命令:

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

参见:

0