什么\; 在脚本中是什么意思?

Kam*_*Joe 0 bash shell-script find

\;以下命令中的含义是什么?我也不确定是什么{}意思。是否\;真的有必要?

find ./ -name file_1 -exec cp {} ./ \;
Run Code Online (Sandbox Code Playgroud)

Hen*_*nes 6

在您的示例中\;是 find 命令的一部分。(见man 1 find)。对于 也是如此{}

这个精确的命令指出:

  • 查找当前目录中的所有内容(点或在您的情况下./
  • 文件名或目录名在哪里 file_1
  • 然后执行以下命令:cp {} ./
    {} 将替换找到的文件或目录。

结果是所有名为 file_1 的文件和目录都将复制到您的当前目录。(如果有多个文件或目录同一个名称,它们可能会被覆盖)


一般解释就这么多。现在是细节选择:

这将对于查找发现每一项运行的命令是: cp full_path_to_item ./
这是之间的内容-exec;

然而,分号在 bash 中是一个特殊字符。如果我们不对它做任何特别的处理,那么贝壳就会吃掉它。所以我们用反斜杠转义它。这告诉外壳不要管它并传递它以查找。


请注意,您需要对所有特殊字符执行此操作。例如,您不能简单地在文件名中使用星号(所以没有 find . -type f -name *.mp3 ....)