我们知道反引号字符用于命令替换:
chown `id -u` /mydir
´
这让我想知道: Linux shell 中的勾号字符有什么用途吗?
注意:顺便说一下,命令替换也可以写成更易读:chown $(id -u) /mydir
答案1
Unix 历史上使用的字符集,包括ASCII码,没有勾号字符,所以没有使用它。据我所知,自从该角色推出以来,还没有引入任何常见用法;也不会,因为它不包含在POSIX 的可移植字符集。
` 显然最初包含在 ASCII 中(与 ^ 和 ~ 一起)作为变音符号。定义 ASCII 时,撇号通常由 ' 型字形(“prime”,用于分钟或英尺)表示,而不是直撇号 ',并且也用作变音符号急性重音。
历史上,在 Unix shell 文档中,` 被称为沉重的口音,不是反引号。缺少向前的勾号不会引起人们的注意,特别是因为 ' 被用作补充字符(参见roff
语法)。
答案2
尽管 ASCII 委员会认为 ` 是变音符号,' 是撇号,但 Unix 传统是将它们视为左单引号和右单引号(这些字符现在在 Unicode 中为 U+2018 和 U+2019)。这在 TeX 约定中最为明显,即您在标记源中编写“引用文本”,然后在格式化文档中获得“引用文本”。这也可以在较旧的等宽字体中看到,例如 X11R5 和 X11R6 附带的位图字体,其中两个字符被赋予镜像字形。
因此,` 和 ' 被认为是彼此的逆元,并且 ' 不被认为缺失。