Por que as ferramentas GNU usam `e' não correspondentes para citar erros?

Por que as ferramentas GNU usam `e' não correspondentes para citar erros?

As ferramentas GNU geralmente geram mensagens de erro e aviso com partes da linha (por exemplo, nomes de arquivos, erros de sintaxe, datas inválidas, etc.) citadas com aspas não correspondentes: ` e '

por exemplo, do GNU coreutilsPerguntas frequentes:

$ date -d "2006-04-02 02:30:00"
date: invalid date `2006-04-02 02:30:00'

e

rm: cannot remove `backup.tar': Value too large for defined data

Porque é que eles fazem isto? Existe algum benefício nisso? Qual é a história por trás disso?

Responder1

Com fontes X antigas, `..' parecia simétrico como ‛..'

Também dado `..' latex gera aspas simples esquerda e direita corretas como '..'

Então `..' foi um hack e em 2012 coreutilsmudadopara shell como citar '..'

Agora, no entanto, não era uma sintaxe completa do shell e geraria uma saída corrompida se houvesse caracteres "\ r" incorporados, etc. Também de forma inconsistente, em alguns casos, nenhuma citação foi usada e, às vezes, a citação unicode '..' foi usada (que usa aspas conforme definido para o código do idioma e serve para escapar desses caracteres de controle).

Um muito recente (2015)correção definirfoi introduzido no coreutils para tornar isso mais consistente, citando toda a saída de nomes de arquivos no formato shell compat, que também escapa dos caracteres de controle apropriadamente e permite copiar e colar mais facilmente em outros comandos. Outros itens de diagnóstico usam a citação "unicode completo", conforme mencionado acima.

informação relacionada