
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.