web-dev-qa-db-fra.com

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

Je peux modifier la couleur par préférence, mais comment puis-je modifier la couleur d'arrière-plan et la couleur du texte du terminal via la ligne de commande?

63
TechJhola

Informations figurant sur cette page , à l'exclusion de la colonne de prévisualisation:

Les séquences sont composées du caractère d'échappement (souvent représenté par "^[" ou "<Esc>") suivi de quelques autres caractères: "^[FCm" (où FC est l'un des nombres de la liste à puces ci-dessous).

Dans bash, le Esc Le code peut être l'un des suivants:

  1. \e
  2. \033 (octal)
  3. \x1B (hexadécimal)

Remarque 1: La séquence "\e[0m" supprime tous les attributs (mise en forme et couleurs). Il peut être judicieux de l’ajouter à la fin de chaque texte coloré.

Remarque 2: Les couleurs de l'avant-plan et de l'arrière-plan peuvent varier en fonction de la configuration du terminal et toutes les couleurs ne sont pas prises en charge .

Définir/Réinitialiser

  • 0: réinitialiser/supprimer tous les attributs de modificateur, d'avant-plan et d'arrière-plan: echo -e "\e[0mNormal Text"
  • 1: Bold/Bright: echo -e "Normal \e[1mBold"
  • 2: Dim: echo -e "Normal \e[2mDim"
  • 4: Souligné: echo -e "Normal \e[4mUnderlined"
  • 5: Blink (ne fonctionne pas dans la plupart des terminaux, sauf XTerm): echo -e "Normal \e[5mBlink"
  • 7: Reverse/Invert: echo -e "Normal \e[7minverted"
  • 8: Caché (utile pour les informations sensibles): echo -e "Normal \e[8mHidden Input"
  • 21: Réinitialiser/Supprimer gras/brillant: echo -e "Normal \e[1mBold \e[21mNormal"
  • 22: Reset/Remove dim: echo -e "Normal \e[2mDim \e[22mNormal"
  • 24: réinitialiser/supprimer le soulignement: echo -e "Normal \e[4mUnderlined \e[24mNormal"
  • 25: réinitialiser/supprimer le clignotement: echo -e "Normal \e[5mBlink \e[25mNormal"
  • 27: réinitialiser/supprimer l'inverse/invertir: 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: Black: echo -e "Default \e[30mBlack" (le mieux associé à une couleur d'arrière-plan: echo -e "Default \e[30;107mBlack on white")
  • 31: rouge (ne pas utiliser avec un fond vert)
  • 32: Green
  • 33: Jaune
  • 34: Blue
  • 35: Magenta/Purple
  • 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: White

Contexte

  • 49: couleur d'arrière-plan par défaut (généralement noir ou bleu)
  • 40: Black
  • 41: Red
  • 42: Green
  • 43: Jaune
  • 44: Blue
  • 45: Magenta/Purple
  • 46: Cyan
  • 47: Gris clair (ne pas utiliser avec un avant-plan blanc)
  • 100: Gris foncé (ne pas utiliser avec un avant-plan noir)
  • 101: rouge clair
  • 102: Vert clair (ne pas utiliser avec un avant-plan blanc)
  • 103: Jaune clair (ne pas utiliser avec un avant-plan blanc)
  • 104: Bleu clair (ne pas utiliser avec un avant-plan jaune clair)
  • 105: Magenta clair/Rose (ne pas utiliser avec un avant-plan clair)
  • 106: Cyan clair (ne pas utiliser avec un avant-plan blanc)
  • 107: Blanc (ne pas utiliser avec un avant-plan clair)

Pour définir les couleurs de premier plan et d’arrière-plan en même temps, utilisez le formulaire echo -e "\e[S;FG;BGm". Par exemple: echo -e "\e[1;97;41m" (premier plan blanc en gras sur fond rouge)

Pour les options de 256 couleurs, voir la page source.

32
Agi Hammerthief

Changer les couleurs sur une base accidentelle

S'il est censé changer de couleur occasionnellement :

Vous pouvez utiliser la commande setterm :

setterm -term linux -back <background_colour> -fore <text_color> -clear

parmi les couleurs, vous pouvez choisir (avant et arrière plan):

black|blue|green|cyan|red|Magenta|yellow|white|default

pour plus d'options:

setterm -help

Modifier vos paramètres de profil (couleur)

En 14.04, je n’ai pas trouvé d’option permettant à dconf de 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

    La même chose avec 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 d'arrière-plan sur noir

Sinon, pour définir le nom de la ou des couleurs, vous pouvez simplement utiliser white ou green, à partir de la même palette que la commande setterm, par exemple:

gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
29
Jacob Vlijm

Les divers codes de couleur utilisés pour obtenir une sortie en couleur peuvent également être utilisés pour obtenir arrière-plans colorés :

40  black
41  red
42  green
43  yellow
44  blue
45  Magenta
46  cyan
47  white

Par conséquent, la commande suivante transforme mon arrière-plan en rouge:

$ echo -e '\e[0;41m'

Selon le shell, l'émulateur de terminal, etc., vous n'aurez peut-être pas besoin du -e.

5
muru

Voir la réponse de kos pour changer le premier plan ou l'arrière-plan en 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 couleur différente soit sélectionnée (ou redevienne la valeur par défaut).

Une autre approche, prise en charge par certains émulateurs de terminal, consiste à redéfinir les valeurs RVB exactes du paramètre par défaut du terminal couleurs de premier plan et d’arrière-plan 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

Cela 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, cela n'affecte que le terminal actuel.

2
egmont