一尘不染

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

linux

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

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

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

cp randomfile ./test

没有\;

是要清楚地指示命令的结束,还是只是在文档中要求?基本原理是什么?

谢谢!


阅读 779

收藏
2020-06-02

共1个答案

一尘不染

分号之前反斜杠用于,因为;是列表操作符(或之一&&||),用于分离外壳命令。例如:

command1; command2

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

因此,为避免解释特殊的外壳字符,需要使用反斜杠将其转义,以删除下一个读取的字符以及换行的任何特殊含义。

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

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