97 votes

Changer la couleur du texte et de l'arrière-plan du terminal ?

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 ?

71voto

ieplugin Points 216

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

screenshot1

screenshot

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'

screenshot3

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 :

screenshot4

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'

screenshot5

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 :

screenshot6

En utilisant l'une ou l'autre de ces méthodes, vous pouvez utiliser printf '\e[0m' pour réinitialiser tous les attributs :

screenshot7

47voto

David Brown Points 176

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 :

  1. \e
  2. \033 (octal)
  3. \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.

31voto

Jacob Vlijm Points 78990

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

5voto

muru Points 180007

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 .

5voto

egmont Points 7095

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X