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
Dependendosevocêdesejaaplicaracoraoprimeiroplanoouaosegundoplano,useumvalor<fg_bg>
de38
ou48
(respectivamente)noseguintecomando:
printf'\e[<fg_bg>;5;<ANSI_color_code>m'
Porexemplo,paradefiniracordoprimeiroplano(<fg_bg>
=38
)comovermelho(<ANSI_color_code>
=196
)eacordosegundoplano(<fg_bg>
=48
)comopreto(<ANSI_color_code>
=0
):
printf'\e[38;5;196mForegroundcolor:red\n'printf'\e[48;5;0mBackgroundcolor:black\n'
Énecessárioredesenharopromptusandoprintf'\e[K'
paraqueacordoplanodefundosejaaplicadaàlinhainteiraeparaqueacordoprimeiroplanosejaaplicadaaocursor:
AmesmacoisapodeserrealizadausandovaloresRGBemvezdecódigosdecoresANSIemumterminalcompatível;dependendosevocêdesejaaplicaracoraoprimeiroplanoouaosegundoplano,useumvalor<fg_bg>
de38
ou48
(respectivamente)noseguintecomando:
printf'\e[<fg_bg>;2;<R>;<G>;<B>m'
Porexemplo,paradefiniracordoprimeiroplano(<fg_bg>
=38
)comovermelho(<R>
=255
,<G>
=0
,<B>
=0
)eofundocor(<fg_bg>
=48
)parapreto(<R>
=0
,<G>
=0
,<B>
=0
):
printf'\e[38;2;255;0;0mForegroundcolor:red\n'printf'\e[48;2;0;0;0mBackgroundcolor:black\n'
Novamente,énecessárioredesenharopromptusandoprintf'\e[K'
paraqueacordoplanodefundosejaaplicadaàlinhainteiraeparaqueacordoprimeiroplanosejaaplicadaaocursor:
Usandoosmétodos,vocêpodeusarprintf'\e[0m'
pararedefinirtodososatributos: