每个人都知道find . -exec foo {} \;
,但在某个时候就停止了思考。但最近我又回到了我第一次学习时出现的问题:
为什么有人会选择
{}
作为路径/名称的占位符?
如果您必须指定语法,您可能会使用某种$
组合,就像它们用于许多其他语言中的变量参数一样。作为一名 C 程序员,人们可能会想%
在printf
.甚至@
会觉得这是一个自然的选择。或者一些在该上下文中没有特殊含义的“自由”字符。但为什么是一对大括号里面什么都没有呢?牙套总是用来收集里面的东西。对我来说,这似乎是最奇怪的想法。
我了解大多数find
历史似乎迷失在不确定之中,但也许有人知道一些以类似方式使用花括号的早期工具?
答案1
可能的原因可能是表示可以分流的无限可能性,find
并且您需要一些共同的符号,这仅意味着众多可能性的收敛。所以{}
仅表示这一点。
man find
但没有提及原因。