Su alcuni terminali compatibili XTerm / ANSI (come xterm
e gnome-terminal
), è possibile impostare i colori utilizzando una tavolozza più grande della tavolozza predefinita 8/16 colori (ad esempio utilizzando una tavolozza 88 colori, 256 colori o 16777216 colori (RGB) ; entrambi xterm
e gnome-terminal
supportano sia la tavolozza 256 colori che la tavolozza 16777216 colori (RGB)); tenere presente che la shell potrebbe sovrascrivere questo (questo è il caso ad es zsh
.
Ecco uno script per elencare i colori nella tavolozza a 256 colori insieme al loro codice colore ANSI in terminali compatibili XTerm / ANSI con un supporto per tavolozza a 256 colori:
#!/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
A seconda che si desideri applicare il colore al primo piano o allo sfondo, utilizzare un <fg_bg>
valore di 38
o 48
(rispettivamente) nel comando seguente:
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
Ad esempio, per impostare il colore di primo piano ( <fg_bg>
= 38
) su rosso ( <ANSI_color_code>
= 196
) e il colore di sfondo ( <fg_bg>
= 48
) su nero ( <ANSI_color_code>
= 0
):
printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'
È necessario ridisegnare il prompt utilizzando printf '\e[K'
per applicare il colore di sfondo all'intera linea e per applicare il colore di primo piano al cursore:
La stessa cosa può essere realizzata utilizzando valori RGB anziché codici colore ANSI in un terminale compatibile; a seconda che si desideri applicare il colore al primo piano o allo sfondo, utilizzare un <fg_bg>
valore di 38
o 48
(rispettivamente) nel comando seguente:
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
Ad esempio, per impostare il colore di primo piano ( <fg_bg>
= 38
) su rosso ( <R>
= 255
, <G>
= 0
, <B>
= 0
) e il colore di sfondo ( <fg_bg>
= 48
) su nero ( <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'
Ancora una volta, è necessario ridisegnare il prompt utilizzando printf '\e[K'
per applicare il colore di sfondo all'intera linea e per applicare il colore di primo piano al cursore:
Utilizzando entrambi i metodi, è possibile utilizzare printf '\e[0m'
per ripristinare tutti gli attributi: