Я заметил, что страницы руководства и другие документы, отформатированные утилитами 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.
решение1
Семантика и обычные глифы для этих символов менялись (несколько раз) за последние 50 лет.
Шестибитные предшественники ASCII содержали различные многоцелевые символы, включая один символ, похожий на одинарную кавычку, который использовался для всего, что имело некоторое сходство с кавычкой: открывающая кавычка, закрывающая кавычка, апостроф или (путем надпечатки) ударение (акут) или гравис (гравит).
ASCII ввел еще один символ, похожий на кавычки, так что теперь у нас был '
, который использовался как апостроф, закрывающая кавычка и острый ударение, и `
, который использовался как открывающая кавычка или тупой ударение (конкретные глифы различались в разных шрифтах).
По какой-то странной причине ISO-8859-1 объявлен '
апострофом или ненаправленной кавычкой, объявлен `
грависом, добавлен еще один ударение ´
(акут),
и отменили надпечатку(так что изолированные знаки ударения теперь были совершенно бессмысленны). Более поздние расширения (кодовые страницы MS-Windows и Unicode) исправили это, введя новые символы направленных кавычек и объединив знаки ударения.
То, что вы здесь видите, по сути является реликтом времен ASCII, когда большинство шрифтов имели парные (наклонные и/или фигурные) глифы для '
и `
.
решение2
Подобный вывод генерируется makeinfo
изTexinfoисточники. Texinfo также можетрендеринг в другие форматы, такие как PDF, поэтому он должен быть более выразительным, чем ASCII. Возможно, чтобы не отбрасывать семантику, makeinfo
кодирует кавычки таким образом, чтобы можно было увидеть, что такое открывающие и закрывающие кавычки.
Пример: Если вы не видите разницы, я могу себе представить, что я бы немного запутал, если бы вы написали какой-нибудь исходник Texinfo и полагались на то, что разница в цитатах будет видна, потому что вы бы предварительно просмотрели его как PDF. Поскольку вы никогда не рендерили с помощью makeinfo
, вы бы никогда не обнаружили, что он нечитаем, рендерится таким образом.