我已经开始在linux终端上组合不同的命令。我想知道为什么像这样的命令需要反斜杠和分号:
find ./ -name 'blabla' -exec cp {} ./test \;当一个简单的cp命令是:
cp randomfile ./test没有\;
它们是要清楚地指示命令的结尾,还是只是文档中所要求的?基本原则是什么?
发布于 2014-10-18 20:18:34
使用分号前的反斜杠,因为;是用于分隔shell命令的列表运算符(或&&、||)之一。在示例中:
command1; command2find实用程序正在使用;或+终止-exec调用的外壳命令。
因此,为了避免特殊的shell字符被解释,需要使用反斜杠对它们进行转义,以删除读取下一个字符和行接续的任何特殊含义。
因此,find命令允许使用以下示例语法:
find . -exec echo {} \;
find . -exec echo {} ';'
find . -exec echo {} ";"
find . -exec echo {} \+
find . -exec echo {} +另请参阅:
发布于 2014-01-04 05:46:38
来自"man find":
要查找的所有以下参数都将作为命令的参数,直到遇到由';‘组成的参数。
find需要知道exec的参数何时终止。用来结束shell命令是很自然的,因为shell也使用这个字符。出于同样的原因,这样的字符在通过shell插入时必须进行转义。
https://stackoverflow.com/questions/20913198
复制相似问题