Em determinados terminais compatíveis com XTerm / ANSI (como xterme gnome-terminal), é possível definir cores usando uma paleta maior que a paleta padrão de 8/16 cores (por exemplo, usando uma paleta de 88 cores, 256 cores ou 16777216 cores (RGB) ; ambos xterme gnome-terminalsuportam a paleta de 256 cores e a de 16777216 cores (RGB)); lembre-se de 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, juntamente com o código de cores ANSI nos terminais compatíveis com XTerm / ANSI com suporte para 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 plano de fundo, use um <fg_bg>valor de 38ou 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 plano de fundo ( <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 a toda a linha e para que a cor do primeiro plano seja aplicada ao cursor:
O mesmo pode ser feito 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 plano de fundo, use um <fg_bg>valor de 38ou 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 a cor do plano de fundo ( <fg_bg>= 48) como 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 a toda a linha e para que a cor do primeiro plano seja aplicada ao cursor:

Usando um dos métodos, você pode usar printf '\e[0m'para redefinir todos os atributos:
