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

23

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

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

Isso produzirá a palavra "Hello" colorida em azul. Para fazer isso eu tive que pesquisar na web, e é difícil, porque diferentes fontes podem dizer algo diferente. Eu pensei que deveria haver alguns manuais, mas não consegui encontrá-los. Mesmo com apropos color ou algo similar. Então, a questão é - onde posso encontrar manuais confiáveis?

    
por Sergius 07.11.2015 / 12:05

1 resposta

27

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

  • O comando echo -e usa uma extensão para processar \e como ASCII 27 (octal 33 ou " \ 033 "). A maneira portátil de imprimir esses usos printf (POSIX). Compare com o padrão echo (POSIX).
  • Seu exemplo pode ser reescrito como

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

  • o padrão para as fugas de cor é ECMA-48 (Funções de controle para codificação Conjuntos de Caracteres).
  • No ECMA-48, 8.3.117 SGR - SELECT GRAPHIC RENDITION lista as seqüências de controle para definir 8 cores de primeiro plano e 8 cores de plano de fundo.
  • Também lista códigos 39/49 "cor de exibição padrão (definida pela implementação)" e 38/48 "reservados para futura padronização; pretendido para definir a cor do primeiro plano do caractere, conforme ISO 8613-6 [Recomendação CCITT T.416] ". Ou seja, há recomendação de outra organização, mas não foi (até agora, após 24 anos) parte da norma.
  • lendo de perto, você pode perceber que o padrão é vago em muitos lugares, permitindo diferentes interpretações. Ele descreve a sintaxe dessas seqüências de controle, mas não descreve seu comportamento . Para isso, você precisa ir até a documentação dos respectivos terminais.
  • a documentação para o xterm é encontrada em Sequências de Controle do XTerm , que pressupõe uma familiaridade com a documentação do DEC encontrada em link
  • para outros terminais, suas páginas de manual podem enumerar os controles (como feito para o console Linux em console_codes ).
  • outros terminais se documentam como "xterm"; para discussão veja o FAQ xterm Comparando versões, contando controles . Felizmente, os controles de cor são principalmente compatíveis (mas veja as perguntas frequentes Meu terminal mostra alguns espaços sem cor ).
  • você também pode ler as páginas de manual para tput , que permite que você use Recursos de terminfo em um script de shell. Seu exemplo pode ser reescrito como

    printf '%s\n' "$(tput setaf 4)Hello$(tput setaf 0)"
    
  • algumas fontes, como o Bash Prompt HOWTO e o < href="http://www.tldp.org/LDP/abs/html/colorizing.html"> Guia avançado de script de script menciona a cor, mas (até mesmo isso) geralmente tem 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, presta pouca atenção ao padrão real.
por 07.11.2015 / 12:37