为什么 GNU 工具使用不匹配的 ` 和 ' 来引用错误?

为什么 GNU 工具使用不匹配的 ` 和 ' 来引用错误?

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 字体,“..”看起来像“..”一样对称

另外,给定“..”乳胶会生成正确的左右单引号,例如“..”

所以“..”是一个 hack,在 2012 年 coreutils改变了像引用 '..' 这样的 shell

但现在它不是完整的 shell 语法,如果存在嵌入的“\r”字符等,则会生成损坏的输出。在某些情况下,也不一致地没有使用引号,有时使用 unicode '..' 引号(它使用为语言环境定义的引号并满足转义这些控制字符的需求)。

最近的一个(2015)修补 被引入到 coreutils 中,通过引用 shell compat 格式的所有文件名输出来使其更加一致,这也适当地转义控制字符,并允许更轻松地复制和粘贴回其他命令。诊断中的其他项目使用“完整 unicode”引用,如上所述。

相关内容