Em certos terminais compatíveis com XTerm / ANSI (como xterm e gnome-terminal ), você pode definir cores usando uma paleta maior do que a paleta padrão de 8/16 cores (por exemplo, usando 88 cores, 256 cores ou paleta 16777216 cores (RGB); os xterm e gnome-terminal suportam as paletas 256 cores e 16777216 cores (RGB); Lembre-se que o shell pode substituir isso (este é o caso, por exemplo, para zsh ).
Aqui está um script para listar as cores na paleta de 256 cores junto com seu código de cor ANSI em terminais compatíveis com XTerm / ANSI com um suporte de paleta de 256 cores:
#!/bin/bash
for((i=16; i<256; i++)); do
printf "\e[48;5;${i}m%03d" $i;
printf '\e[0m';
[ ! $((($i - 15) % 6)) -eq 0 ] && printf ' ' || printf '\n'
done
Dependendo se você deseja aplicar a cor ao primeiro plano ou ao segundo plano, use um valor <fg_bg> de 38 ou 48 (respectivamente) no seguinte comando:
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
Por exemplo, para definir a cor do primeiro plano ( <fg_bg> = 38 ) como vermelho ( <ANSI_color_code> = 196 ) e a cor do segundo plano ( <fg_bg> = 48 ) como preto ( <ANSI_color_code> = 0 ):
printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'
É necessário redesenhar o prompt usando printf '\e[K' para que a cor do plano de fundo seja aplicada à linha inteira e para que a cor do primeiro plano seja aplicada ao cursor:
A mesma coisa pode ser realizada usando valores RGB em vez de códigos de cores ANSI em um terminal compatível; dependendo se você deseja aplicar a cor ao primeiro plano ou ao segundo plano, use um valor <fg_bg> de 38 ou 48 (respectivamente) no seguinte comando:
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
Por exemplo, para definir a cor do primeiro plano ( <fg_bg> = 38 ) como vermelho ( <R> = 255 , <G> = 0 , <B> = 0 ) e o fundo cor ( <fg_bg> = 48 ) para preto ( <R> = 0 , <G> = 0 , <B> = 0 ):
printf '\e[38;2;255;0;0m Foreground color: red\n'
printf '\e[48;2;0;0;0m Background color: black\n'
Novamente, é necessário redesenhar o prompt usando printf '\e[K' para que a cor do plano de fundo seja aplicada à linha inteira e para que a cor do primeiro plano seja aplicada ao cursor:
Usando os métodos, você pode usar printf '\e[0m' para redefinir todos os atributos: