Ce sont des séquences d'échappement ANSI ; Ce lien renvoie à un tableau de codes de couleur, mais il y a aussi d'autres choses intéressantes sur cette page Wikipedia. Tous ne fonctionnent pas (par exemple) sur une console Linux normale.
Ceci est une erreur:
\033]00m\] # white
0
réinitialise le terminal à ses paramètres par défaut (ce qui est probablement blanc). Le code réel pour le premier plan blanc est 37. En outre, l'accolade fermante à la fin ( \]
) ne fait pas partie de la séquence de couleurs (voir les derniers paragraphes ci-dessous pour une explication de leur rôle dans la définition d'une invite).
Notez que certains terminaux graphiques vous permettent de spécifier un jeu de couleurs personnalisé. Cela affectera la sortie.
Il y a une liste ici qui ajoute 7 couleurs de premier plan et 7 couleurs de fond que je n'avais pas vues auparavant, mais elles semblent fonctionner:
# Foreground colors
90 Dark gray
91 Light red
92 Light green
93 Light yellow
94 Light blue
95 Light magenta
96 Light cyan
# Background colors
100 Dark gray
101 Light red
102 Light green
103 Light yellow
104 Light blue
105 Light magenta
106 Light cyan
De plus, si vous avez un terminal graphique 256 couleurs (je pense que la plupart d’entre eux sont maintenant), vous pouvez appliquer les couleurs de ce tableau:
La séquence ANSI pour les sélectionner, en utilisant le numéro dans le coin inférieur gauche, commence 38;5;
pour le premier plan et 48;5;
pour l’arrière-plan, puis le numéro de couleur, par exemple:
echo -e "\\033[48;5;95;38;5;214mhello world\\033[0m"
Me donne un orange clair sur le bronzage (ce qui signifie que le nuancier est approximativement approximatif).
Vous pouvez voir les couleurs dans ce tableau 1 telles qu’elles apparaissent sur votre terminal assez facilement:
#!/bin/bash
color=16;
while [ $color -lt 245 ]; do
echo -e "$color: \\033[38;5;${color}mhello\\033[48;5;${color}mworld\\033[0m"
((color++));
done
La sortie est explicite.
Certains systèmes définissent la variable $ TERM sur xterm-256color
si vous êtes sur un terminal 256 couleurs via un code shell dans /etc/profile
. Sur d'autres, vous devriez pouvoir configurer votre terminal pour l'utiliser. Cela permettra aux applications TUI de savoir qu'il existe 256 couleurs et vous permettra d'ajouter quelque chose comme ceci à votre ~/.bashrc
:
if [[ "$TERM" =~ 256color ]]; then
PS1="MyCrazyPrompt..."
fi
Attention, lorsque vous utilisez des séquences d'échappement de couleurs dans votre invite, vous devez les placer entre \
crochets ( préfixés), comme suit:
PS1="\[\033[01;32m\]MyPrompt: \[\033[0m\]"
Remarquez que l' [
intérieur de la séquence de couleurs n'est pas échappé, mais ceux qui le sont sont. Ce dernier a pour but d’indiquer au shell que la séquence incluse ne compte pas dans la longueur de caractère de l’invite. Si ce compte est erroné, des choses étranges se produiront lorsque vous remonterez dans l'historique. Par exemple, s'il est trop long, la longueur excessive de la dernière chaîne défilée apparaîtra attachée à votre invite et vous ne pourrez plus revenir en arrière. il (il est ignoré de la même manière que l'invite).
Notez également que si vous souhaitez inclure la sortie d'une commande exécutée chaque fois que l'invite est utilisée (par opposition à une seule fois lorsque l'invite est définie), vous devez la définir en tant que chaîne littérale avec des guillemets simples, par exemple:
PS1='\[\033[01;32m\]$(date): \[\033[0m\]'
Bien que ce ne soit pas un bon exemple si vous préférez utiliser les évasions spéciales \d
ou \D{format}
rapides de bash - qui ne sont pas le sujet de la question, vous pouvez les trouver dans les man bash
paragraphes suivants PROMPTING
. Il existe diverses autres sorties utiles, telles que celles \w
du répertoire en cours, \u
de l'utilisateur actuel, etc.
1. La partie principale de ce graphique, couleurs 16 à 231 (notez qu’elles ne sont pas numérotées), correspond à un cube de couleurs RVB de 6 x 6 x 6. "Cube de couleur" fait référence au fait qu'un espace colorimétrique RVB peut être représenté à l'aide d'un tableau tridimensionnel (un axe pour le rouge, un pour le vert et un pour le bleu). Ici, chaque couleur du cube peut être représentée sous forme de coordonnées dans un tableau de 6 x 6 x 6, et l'index dans le graphique est calculé comme suit:
16 + R * 36 + G * 6 + B
La première couleur du cube, à l’index 16 du graphique, est le noir (RVB 0, 0, 0). Vous pouvez utiliser cette formule dans un script shell:
#!/bin/sh
function RGBcolor {
echo "16 + $1 * 36 + $2 * 6 + $3" | bc
}
fg=$(RGBcolor 1 0 2) # Violet
bg=$(RGBcolor 5 3 0) # Bright orange.
echo -e "\\033[1;38;5;$fg;48;5;${bg}mviolet on tangerine\\033[0m"
\]
ici ne fait en réalité pas partie de la séquence de couleurs; cela sert à définir précisément les invites (j'ai ajouté quelques paragraphes à la fin de ma réponse à ce sujet). "Ce serait bien s'il y avait aussi une forme plus lisible." -> le couper-coller dans votre propre réponse est un moyen de le faire.