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

51

Je peux changer la couleur par préférence, mais comment puis-je changer la couleur de fond et la couleur du terminal via la ligne de commande?

    
posée TechJhola 09.12.2014 - 06:11
la source

4 réponses

33

Sur certains terminaux compatibles XTerm / ANSI (tels que xterm et gnome-terminal ), vous pouvez définir des couleurs en utilisant une palette plus grande que la palette 8/16 couleurs par défaut (par exemple, une palette de 88 couleurs, 256 pages). palette de couleurs ou 16777216-couleurs (RVB), xterm et gnome-terminal prennent en charge les palettes 256 couleurs et 16777216 couleurs (RVB)); n'oublions pas que le shell peut le remplacer (c'est le cas par exemple pour zsh ).

Voici un script pour répertorier les couleurs de la palette de 256 couleurs ainsi que leur code de couleur ANSI dans les terminaux compatibles XTerm / ANSI avec 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 la valeur <fg_bg> de 38 ou 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 ) sur rouge ( <ANSI_color_code> = 196 ) et la couleur d'arrière-plan ( <fg_bg> = 48 ) sur 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 en utilisant printf '\e[K' pour que la couleur d’arrière-plan s’applique à la ligne entière et pour que la couleur de premier plan s’applique au curseur:

La même chose peut être accomplie en utilisant les valeurs RVB au lieu des codes couleur ANSI dans un terminal compatible; selon que vous souhaitez appliquer la couleur au premier plan ou à l'arrière-plan, utilisez la valeur <fg_bg> de 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 l'arrière-plan couleur ( <fg_bg> = 48 ) au 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 en utilisant printf '\e[K' pour que la couleur d'arrière-plan s'applique à la ligne entière et pour que la couleur de premier 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:

    
réponse donnée kos 05.10.2015 - 14:00
la source
27

Changer les couleurs sur une base incidente

Si cela est censé changer les couleurs de façon accidentelle :

Vous pouvez utiliser la commande setterm :

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

parmi les couleurs, vous pouvez choisir (à la fois 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 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 sur blanc

    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 , 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
    
réponse donnée Jacob Vlijm 09.12.2014 - 07:50
la source
27

Informations figurant sur cette page , à l’exception 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: " <Esc>[FCm " (où FC est l'un des nombres dans les puces) liste ci-dessous).

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

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

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

Remarque 2: Les couleurs d’avant-plan et d’arrière-plan peuvent varier en fonction de la configuration du terminal et de pas toutes les couleurs sont 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 : clignote (ne fonctionne pas dans la plupart des terminaux sauf XTerm): echo -e "Normal \e[5mBlink"
  • 7 : Inverser / Inverser: echo -e "Normal \e[7minverted"
  • 8 : Caché (utile pour les informations sensibles): echo -e "Normal \e[8mHidden Input"
  • 21 : Reset / Remove bold / bright: echo -e "Normal \e[1mBold \e[21mNormal"
  • 22 : Réinitialiser / Supprimer 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 inverser / inverser: 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" (mieux combiné avec une couleur d'arrière-plan: echo -e "Default \e[30;107mBlack on white" )
  • 31 : Rouge (ne pas utiliser avec un arrière-plan vert)
  • 32 : vert
  • 33 : jaune
  • 34 : Blue
  • 35 : magenta / violet
  • 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 d'arrière-plan par défaut (généralement noire ou bleue)
  • 40 : noir
  • 41 : rouge
  • 42 : vert
  • 43 : jaune
  • 44 : Blue
  • 45 : magenta / violet
  • 46 : Cyan
  • 47 : gris clair (ne pas utiliser avec le 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 clair / rose (ne pas utiliser avec un premier plan de lumière)
  • 106 : cyan clair (ne pas utiliser avec le premier plan blanc)
  • 107 : Blanc (ne pas utiliser avec un premier plan de lumière)

Pour définir à la fois les couleurs de premier plan et d’arrière-plan, utilisez la forme echo -e "\e[S;FG;BGm" . Par exemple: echo -e "\e[1;97;41m" (avant-plan en gras sur fond rouge)

Pour 256 options de couleur, consultez la page source.

    
réponse donnée Agi Hammerthief 09.12.2014 - 14:43
la source
5

Les différents 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 active mon arrière-plan en rouge:

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

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

    
réponse donnée muru 09.12.2014 - 08:17
la source

Lire d'autres questions sur les étiquettes