History

為什麼 GNU 工具使用不匹配的 ` 和 ’ 來引用錯誤?

  • November 7, 2015

GNU 工具經常輸出錯誤和警告消息,其中部分行(例如文件名、語法錯誤、無效日期等)用不匹配的引號引起來:` 和 '

例如來自 GNU coreutils FAQ

$ 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

他們為什麼這樣做呢?有什麼好處嗎?它背後的歷史是什麼?

使用舊的 X 字型,`..’ 看起來像 ‛..’ 一樣對稱

還給定 `..’ latex 生成正確的左右單引號,如 ‘..’

所以 `..’ 是一個 hack,並且在 2012 年 coreutils變成了 shell,比如引用 ‘..’

但是,現在它不是完整的 shell 語法,如果存在嵌入的“\r”字元等,則會生成損壞的輸出。在某些情況下也不一致地沒有使用引號,有時使用了 unicode ‘..’ 引號(它使用為語言環境定義的引號並滿足這些控製字元的轉義)。

coreutils 引入了一個最近的(2015 年)更新檔 ,通過引用 shell 兼容格式的所有文件名輸出來使其更加一致,這也適當地轉義了控製字元,並允許更輕鬆地複制和粘貼回其他命令。診斷中的其他項目使用上面提到的“完整 unicode”引用。

引用自:https://unix.stackexchange.com/questions/241418