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: