tput setaf 1; hostname; tput sgr0
tput consulta o banco de dados do terminal para o recurso correspondente. Aqui setaf para definir cor ANSI 1 (vermelho), sgr0 para selecionar rendição gráfica nenhum para voltar aos atributos padrão. Em vez de tput sgr0 , você também pode usar tput op (par original) para redefinir somente a cor do plano de fundo e do primeiro plano e deixar outros atributos gráficos (negrito, sublinhado, destaque, reversão ...) sozinhos.
Alguns shells como zsh , tcsh ou fish têm suporte embutido para consultar esse banco de dados ou mapear nomes de cores para códigos ANSI (como zsh ou fish ), mas não bash .
Em zsh , usando a expansão de prompts para imprimir o nome do host em red :
print -P '%F{red}%m%f'
( %f apenas redefine a cor do primeiro plano)
Em tcsh ou zsh com o echotc embutido usando códigos termcap em vez de terminfo:
echotc AF 1; hostname; echotc me
( zsh tem echoti para os códigos terminfo setab / sgr0 como versões modernas de tput ).
Em zsh , o sinalizador de expansão do parâmetro % ativa a expansão imediata na expansão do parâmetro, portanto, você pode fazer:
red=%F{red} normal=%f
echo ${(%)red}whatever%{(%)normal}
Em zsh , você também encontrará uma função colors autoloadable que pode ser executada para ajudar os auxiliares a escrever coisas em cores:
autoload colors; colors
echo $fg[red]whatever$fg[default]