首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么find命令的-exec选项需要反斜杠和分号?

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

Stack Overflow用户
提问于 2014-01-04 05:42:49
回答 2查看 14.6K关注 0票数 69

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

代码语言:javascript
复制
find ./ -name 'blabla' -exec cp {} ./test \;

当一个简单的cp命令是:

代码语言:javascript
复制
cp randomfile ./test

没有\;

它们是要清楚地指示命令的结尾,还是只是文档中所要求的?基本原则是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-18 20:18:34

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

代码语言:javascript
复制
command1; command2

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

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

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

代码语言:javascript
复制
find . -exec echo {} \;
find . -exec echo {} ';'
find . -exec echo {} ";"
find . -exec echo {} \+
find . -exec echo {} +

另请参阅:

票数 64
EN

Stack Overflow用户

发布于 2014-01-04 05:46:38

来自"man find":

要查找的所有以下参数都将作为命令的参数,直到遇到由';‘组成的参数。

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

票数 55
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20913198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档