我已经开始在linux终端中组合不同的命令。我想知道为什么命令需要反斜杠和分号,如:
find ./ -name 'blabla' -exec cp {} ./test \;
简单的cp命令只是:
cp randomfile ./test
没有\;
它们是否清楚地表明命令的结束,或者只是在文档中需要它?什么是基本原则?
谢谢!
答案 0 :(得分:48)
以下所有内容 查找的参数被用作命令的参数,直到 由';'组成的参数遇到了。
发现需要知道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 {} +
另见: