
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 color
ou 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 -e
usa umextensãopara renderizar\e
como 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 para
tput
, que permite que você useterminfo
recursos em um script de shell. Seu exemplo poderia ser reescrito comoprintf '%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.