为什么 Unix 手册页使用双反引号代替双引号?

ecm*_*all 36 man history

我注意到由 Unix 实用程序格式化的手册页和其他文档通常使用双反引号``后跟双单引号''来包装带引号的短语而不是双引号字符"。单引号同样被替换。为什么是这样?

以下是来自手册页的几个示例grep

 To find all occurrences of the pattern `.Pp' at the beginning of a line:

       $ grep '^\.Pp' myfile

 The apostrophes ensure the entire expression is evaluated by grep instead
 of by the user's shell.  The caret `^' matches the null string at the
 beginning of a line, and the `\' escapes the `.', which would otherwise match
 any character.

 The grep utility is compliant with the IEEE Std 1003.1-2008 (``POSIX.1'')
 specification.
Run Code Online (Sandbox Code Playgroud)

Uwe*_*Uwe 40

在过去的 50 年中,这些字符的语义和常用字形发生了变化(多次)。

ASCII 的六位前身包含各种多用途字符,包括一个类似单引号的字符,用于任何与引号有某种相似之处的字符:开引号、闭引号、撇号或(通过叠印)锐角或重口音。

ASCII 引入了另一个类似引号的字符,所以现在我们有', 用作撇号、结束引号和重音符号,而`用作开始引号或重音符号(具体字形在各种字体中有所不同)。

出于某种奇怪的原因,ISO-8859-1 声明'为撇号或无向引用,声明`为重音符,增加了一个重音´(重音), 并取消了套印(这样孤立的重音标记现在完全没有意义) . 后来的扩展(MS-Windows 代码页和 Unicode)通过引入新的有向引号字符和组合重音符号解决了这个问题。

您在这里看到的本质上是 ASCII 时代的产物,当时大多数字体都为'和配对(倾斜和/或卷曲)字形`

  • 实际上,ISO-8859-1 与*套印*无关,反映的是*效果*而不是*原因*。由于(基本上)没有视频终端支持该功能,所以丢失了。硬拷贝终端不受影响。 (7认同)
  • 我认为使用 `\`...'` 是一种“GNU 主义”。最近的 gcc 编译器也使用这种引用方式。 (2认同)

Jan*_*sen 9

像输出由产生makeinfo的Texinfo源。Texinfo 还可以呈现为其他格式,如 PDF,因此它需要比 ASCII 更具表现力。也许为了避免丢弃语义,makeinfo像这样对引号进行编码,这样你就可以看到什么是开始和结束引号。

示例:如果您看不到差异,我可以想象,如果您编写了一些 Texinfo 源代码并依赖报价差异可见,我会有点困惑,因为您会将其预览为 PDF。因为您从未使用 进行渲染,所以您永远makeinfo不会发现它不可读,无法像那样渲染。