Existe alguma página de manual para saída de shell colorido?

Existe alguma página de manual para saída de shell colorido?

Você sabe, aquela saída colorida feita por sequências de caracteres especiais, por exemplo:

echo -e "\e[34m Hello\n \e[0m"

Isso produzirá a palavra "Olá" colorida em azul. Para fazer isso tive que pesquisar na web, e é difícil, porque fontes diferentes podem dizer algo diferente. Pensei que devia haver alguns manuais, mas não consegui encontrá-los. Mesmo com apropos colorou algo semelhante. Então, a questão é: onde posso encontrar manuais confiáveis?

Responder1

Existem muitas fontes de informação para listar nesta página:

  • O comando echo -eusa umextensãopara renderizar \ecomo ASCII 27 (octal 33 ou "\033"). A maneira portátil de imprimir esses usosprintf(POSIX). Compare com o padrãoecho(POSIX).
  • Seu exemplo pode ser reescrito como

    printf "\033[34m Hello\n \033[0m"

  • o padrão para os escapes de cores éECMA-48(Funções de controle para conjuntos de caracteres codificados).
  • No ECMA-48, 8.3.117 SGR - SELECT GRAPHIC RENDITION lista sequências de controle para definir 8 cores de primeiro plano e 8 cores de fundo.
  • Ele também lista os códigos 39/49 "cor de exibição padrão (definida pela implementação)" e 38/48 "reservado para padronização futura; destinado a definir a cor de primeiro plano dos caracteres conforme especificado na ISO 8613-6 [Recomendação CCITT T.416]". Ou seja, existe uma recomendação de outra organização mas ela não fazia parte (até agora, após 24 anos) da norma.
  • lendo-o com atenção, você poderá notar que o padrão é vago em muitos lugares, permitindo diferentes interpretações. Ele descreve osintaxedessas sequências de controle, mas não descreve suascomportamento. Para isso, é necessário consultar a documentação dos respectivos terminais.
  • documentação para xterm é encontrada emSequências de controle XTerm, que pressupõe familiaridade com a documentação DEC encontrada emhttp://vt100.net
  • para outros terminais, suas páginas de manual podem enumerar os controles (como feito para o console Linux emcódigos_console).
  • outros terminais se documentam como “xterm”; para discussão, consulte o FAQ do xtermComparando versões, contando controles. Felizmente, os controles de cores sãomajoritariamentecompatível (mas veja o FAQ do ncursesMeu terminal mostra alguns espaços sem cor).
  • você também pode ler as páginas de manual paratput, que permite que você useterminforecursos em um script de shell. Seu exemplo poderia ser reescrito como

    printf '%s\n' "$(tput setaf 4)Hello$(tput setaf 0)"
    
  • algumas fontes, como oBash Prompt COMO FAZERe aGuia avançado de script Bashmencionam a cor, mas (mesmo estes) geralmente apresentam lacunas e omissões e não são úteis em relação ao ECMA-48.

  • a maioria das outras fontes que você encontrará com uma cópia de pesquisa na web de outras fontes (como as citadas), etc., e como regra prestam pouca atenção ao padrão real.

informação relacionada