Je peux changer la couleur par le biais des préférences, mais comment puis-je changer la couleur de fond et la couleur du texte du terminal par le biais de la ligne de commande ?
Réponses
Trop de publicités?Sur certains terminaux compatibles XTerm/ANSI (tels que xterm
y gnome-terminal
), vous pouvez définir les couleurs en utilisant une palette plus grande que la palette par défaut de 8/16 couleurs (par exemple, en utilisant une palette de 88 couleurs, 256 couleurs ou 16777216 couleurs (RVB) ; les deux xterm
y gnome-terminal
supportent à la fois la palette de 256 couleurs et celle de 16777216 couleurs (RVB)) ; gardez à l'esprit que le Shell peut avoir priorité sur cela (c'est le cas par exemple de zsh
).
Voici un script pour lister les couleurs de la palette 256 couleurs avec leur code couleur ANSI dans les terminaux compatibles XTerm/ANSI supportant la palette 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 à l'avant-plan ou à l'arrière-plan, utilisez l'option <fg_bg>
valeur de 38
o 48
(respectivement) dans la commande suivante :
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
Par exemple, pour définir la couleur de premier plan ( <fg_bg>
= 38
) à rouge ( <ANSI_color_code>
= 196
) et la couleur de fond ( <fg_bg>
= 48
) à noir ( <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 à l'aide de printf '\e[K'
pour que la couleur d'arrière-plan s'applique à toute la ligne et pour que la couleur d'avant-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 voulez appliquer la couleur au premier plan ou à l'arrière-plan, utilisez l'option <fg_bg>
valeur de 38
o 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
) à rouge ( <R>
= 255
, <G>
= 0
, <B>
= 0
) et la couleur de fond ( <fg_bg>
= 48
) à 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'
Encore une fois, il est nécessaire de redessiner l'invite à l'aide de printf '\e[K'
pour que la couleur d'arrière-plan s'applique à toute la ligne et pour que la couleur d'avant-plan s'applique au curseur :
En utilisant l'une ou l'autre de ces méthodes, vous pouvez utiliser printf '\e[0m'
pour réinitialiser tous les attributs :
Informations telles que trouvées sur cette page à l'exception de la colonne d'aperçu :
Les séquences sont composées du caractère Escape (souvent représenté par " ^[
" ou " <Esc>
") suivi de quelques autres caractères : " ^[FCm
"(où FC
est l'un des numéros de la liste à puces ci-dessous).
Sur bash
le Esc Le code peut être l'un des suivants :
\e
-
\033
(octal) -
\x1B
(hexadécimal)
Note 1 : Le " \e[0m
La séquence " " supprime tous les attributs (formatage et couleurs). Cela peut être une bonne idée de l'ajouter à la fin de chaque texte coloré.
Note 2 : Les couleurs de l'avant-plan et de l'arrière-plan peuvent varier, en fonction de la configuration du terminal et de l'environnement. toutes les couleurs ne sont pas prises en charge .
Set/Reset
-
0
: Réinitialiser/supprimer tous les attributs de modificateur, de premier plan et d'arrière-plan :echo -e "\e[0mNormal Text"
-
1
: Gras/Brillant :echo -e "Normal \e[1mBold"
-
2
: Dim :echo -e "Normal \e[2mDim"
-
4
: Souligné :echo -e "Normal \e[4mUnderlined"
-
5
: Clignotement (ne fonctionne pas dans la plupart des terminaux sauf XTerm) :echo -e "Normal \e[5mBlink"
-
7
: Inversion/Inversion :echo -e "Normal \e[7minverted"
-
8
: Caché (utile pour les informations sensibles) :echo -e "Normal \e[8mHidden Input"
-
21
: Réinitialiser/supprimer le gras/le brillant :echo -e "Normal \e[1mBold \e[21mNormal"
-
22
: Réinitialiser/supprimer le dim :echo -e "Normal \e[2mDim \e[22mNormal"
-
24
: Réinitialiser/supprimer le soulignement :echo -e "Normal \e[4mUnderlined \e[24mNormal"
-
25
: Reset/Remove clignote :echo -e "Normal \e[5mBlink \e[25mNormal"
-
27
: Réinitialisation/suppression de la marche arrière/inversion :echo -e "Normal \e[7minverted \e[27mNormal"
-
28
: Réinitialiser/Supprimer caché :echo -e "Normal \e[8mHidden \e[28mNormal"
Premier plan
-
39
: Par défaut (généralement vert, blanc ou gris clair) :echo -e "Default \e[39mDefault"
-
30
: Noir :echo -e "Default \e[30mBlack"
(à combiner de préférence avec une couleur de fond :echo -e "Default \e[30;107mBlack on white"
) -
31
: Rouge (ne pas utiliser avec un fond vert) -
32
: Vert -
33
: Jaune -
34
: Bleu -
35
: Magenta/Pourpre -
36
: Cyan -
37
: Gris clair -
90
: Gris foncé -
91
: Rouge clair -
92
: Vert clair -
93
: Jaune clair -
94
: Bleu clair -
95
: Magenta clair/rose -
96
: Cyan clair -
97
: Blanc
Contexte
-
49
: Couleur de fond par défaut (généralement noir ou bleu) -
40
: Noir -
41
: Rouge -
42
: Vert -
43
: Jaune -
44
: Bleu -
45
: Magenta/Pourpre -
46
: Cyan -
47
: Gris clair (ne pas utiliser avec un premier plan blanc) -
100
: Gris foncé (ne pas utiliser avec un premier plan noir) -
101
: Rouge clair -
102
: Vert clair (ne pas utiliser avec un premier plan blanc) -
103
: Jaune clair (ne pas utiliser avec un premier plan blanc) -
104
: Bleu clair (ne pas utiliser avec un avant-plan jaune clair) -
105
: Magenta/Pink clair (ne pas utiliser avec un premier plan clair) -
106
: Cyan clair (ne pas utiliser avec un premier plan blanc) -
107
: Blanc (ne pas utiliser avec un premier plan clair)
Pour définir à la fois les couleurs d'avant-plan et d'arrière-plan, utilisez la forme suivante echo -e "\e[S;FG;BGm"
. Par exemple : echo -e "\e[1;97;41m"
(premier plan blanc gras sur fond rouge)
Pour les options en 256 couleurs, voir la page source.
Changez les couleurs de manière occasionnelle
S'il est censé changer de couleur de manière occasionnelle :
Vous pouvez utiliser le setterm commandement :
setterm -term linux -back <background_colour> -fore <text_color> -clear
parmi les couleurs que vous pouvez choisir (avant et arrière-plan) :
black|blue|green|cyan|red|magenta|yellow|white|default
pour plus d'options :
setterm -help
Modifier les paramètres de votre profil (couleur)
En 14.04, je n'ai pas trouvé d'option permettant d'utiliser dconf
pour définir les couleurs ou le terminal. Vous pouvez cependant utiliser gconftool
-
Vous devez d'abord obtenir votre nom de profil :
gconftool-2 --get /apps/gnome-terminal/global/profile_list
-
Ensuite, pour définir les couleurs du texte de votre profil :
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/foreground_color" --type string "#FFFFFF"
par exemple pour définir la couleur du texte en blanc
Il en va de même pour la couleur de fond :
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string "#000000"
par exemple pour définir la couleur de fond en noir
Alternativement, pour définir le nom de la ou des couleurs, vous pouvez simplement utiliser white
o green
dans la même palette que la commande setterm, par exemple :
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
Les différents codes de couleur utilisés pour obtenir des résultats en couleur peuvent également être utilisés pour obtenir des résultats en couleur. fonds colorés :
40 black
41 red
42 green
43 yellow
44 blue
45 magenta
46 cyan
47 white
Par conséquent, la commande suivante rend mon arrière-plan rouge :
$ echo -e '\e[0;41m'
Selon le Shell, l'émulateur de terminal, etc., vous n'aurez peut-être pas besoin de l'option -e
.
Voir la réponse de kos pour faire passer le premier plan ou l'arrière-plan à une couleur particulière de la palette, ou même à une couleur RVB directe dans certains terminaux. L'effet d'une telle séquence dure jusqu'à ce qu'une autre couleur soit sélectionnée (ou jusqu'à ce que la couleur par défaut soit rétablie).
Une autre approche, prise en charge par certains émulateurs de terminal, consiste à redéfinir les valeurs RVB exactes de l'écran du terminal. par défaut les couleurs d'avant-plan et d'arrière-plan en utilisant les séquences d'échappement OSC 10 / 11 :
echo -ne '\e]10;#123456\e\\' # set default foreground to #123456
echo -ne '\e]11;#abcdef\e\\' # set default background to #abcdef
Ceci est susceptible de durer beaucoup plus longtemps (jusqu'à ce qu'il soit remplacé par un autre OSC 10 / 11 ou réinitialisé via l'OSC 110 / 111), mais contrairement à l'approche dconf, ceci n'affecte que le terminal actuel.