bash 中的空花括号和分号

bash 中的空花括号和分号

什么是

{} \;

字符串在 bash 中是什么意思?

我已经见过几次了,例如,要按名称查找并删除所有文件,必须执行

find . -name "FILE-TO-FIND" -exec rm -rf {} \;

这个字符串起什么作用?

答案1

和在 中都有特殊含义,{}但是在 的上下文中,实际上是解释了这两个(实际上我们想解释这两个)。;bashfindfindfind

首先,-exec是的动作find{}和是谓词的;特殊参数。-execfind

该操作的语法-exec是:

-exec command ;

或者

-exec command {} + 

所以我们需要事先阻止{};被shell解释。

在以下上下文中find .... -exec

  • {}表示(包含)表达式的结果,在本例中findfind . -name "FILE-TO-FIND"。请注意,空花括号{}对 shell 没有特殊含义,因此我们可以不进行转义{}

  • 由于它bash;命令的结束,因此我们需要用\ie对其进行转义\;,以便它能够被-execiebash自身解析。

相关内容