Sur certains terminaux compatibles XTerm / ANSI (tels que xterm
et gnome-terminal
), vous pouvez définir des couleurs à l'aide d'une palette plus grande que la palette 8/16 couleurs par défaut (par exemple, une palette de 88 couleurs, 256 couleurs ou 16777216 couleurs). ; xterm
et gnome-terminal
supporte à la fois la palette 256 couleurs et la palette 16777216-couleurs (RGB)); gardez à l’esprit que le shell pourrait remplacer cela (c’est le cas par exemple pour zsh
).
Voici un script pour répertorier les couleurs de la palette à 256 couleurs ainsi que leur code de couleur ANSI dans des terminaux compatibles XTerm / ANSI et prenant en charge une palette de 256 couleurs:
#!/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
Selon que vous souhaitez appliquer la couleur au premier plan ou à l'arrière-plan, utilisez une <fg_bg>
valeur égale à 38
ou 48
(respectivement) dans la commande suivante:
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
Par exemple, pour définir la couleur d’avant-plan ( <fg_bg>
= 38
) sur rouge ( <ANSI_color_code>
= 196
) et la couleur d’arrière-plan ( <fg_bg>
= 48
) sur noire ( <ANSI_color_code>
= 0
):
printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'
Il est nécessaire de redessiner l'invite en utilisant printf '\e[K'
pour que la couleur d'arrière-plan s'applique à toute la ligne et pour que la couleur de premier plan s'applique au curseur:
La même chose peut être accomplie en utilisant des valeurs RVB au lieu des codes de couleur ANSI dans un terminal compatible; Selon que vous souhaitez appliquer la couleur au premier plan ou à l'arrière-plan, utilisez une <fg_bg>
valeur égale à 38
ou 48
(respectivement) dans la commande suivante:
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
Par exemple, pour définir la couleur de premier plan ( <fg_bg>
= 38
) sur rouge ( <R>
= 255
, <G>
= 0
, <B>
= 0
) et la couleur d'arrière-plan ( <fg_bg>
= 48
) sur noir ( <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'
De nouveau, il est nécessaire de redessiner l’invite en utilisant printf '\e[K'
pour que la couleur d’arrière-plan s’applique à l’ensemble de la ligne et pour que la couleur d’avant-plan s’applique au curseur:
En utilisant l’une ou l’autre des méthodes, vous pouvez utiliser printf '\e[0m'
pour réinitialiser tous les attributs: