
Инструменты GNU часто выводят сообщения об ошибках и предупреждения, в которых части строки (например, имена файлов, синтаксические ошибки, недопустимые даты и т. д.) заключены в непарные кавычки: ` и '
например, из GNU coreutilsЧасто задаваемые вопросы:
$ date -d "2006-04-02 02:30:00"
date: invalid date `2006-04-02 02:30:00'
и
rm: cannot remove `backup.tar': Value too large for defined data
Зачем они это делают? Есть ли в этом какая-то польза? Какая за этим история?
решение1
В старых шрифтах X символ «..» выглядел симметрично, как «..».
Также при наличии `..' latex генерирует правильные левые и правые одинарные кавычки, например '..'
Итак, `..' был хаком, и в 2012 году coreutilsизмененныйоболочку, похожую на цитирование '..'
Однако теперь это не был полный синтаксис оболочки, и вывод был бы поврежден, если бы присутствовали встроенные символы "\r" и т. д. Также непоследовательно в некоторых случаях не использовалось кавычек, а иногда использовалось юникодное кавычки '..' (которое использует кавычки, определенные для локали, и позволяет экранировать эти управляющие символы).
Совсем недавно (2015)пластырь наборбыл введен в coreutils, чтобы сделать это более последовательным, заключая в кавычки все выходные имена файлов в формате, совместимом с оболочкой, что также соответствующим образом экранирует управляющие символы и позволяет проще копировать и вставлять обратно в другие команды. Другие элементы в диагностике используют кавычки "full unicode", как упоминалось выше.