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

时间:2014-01-03 21:42:49

标签: linux command find backslash

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

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

简单的cp命令只是:

cp randomfile ./test

没有\;

它们是否清楚地表明命令的结束,或者只是在文档中需要它?什么是基本原则?

谢谢!

2 个答案:

答案 0 :(得分:48)

来自“man find”:

  

以下所有内容             查找的参数被用作命令的参数,直到             由';'组成的参数遇到了。

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

答案 1 :(得分:40)

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

command1; command2

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

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

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

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

另见: