Vous pouvez ajouter de la couleur à votre terminal Linux en utilisant des paramètres d’encodage ANSI spéciaux, soit dynamiquement dans une commande de terminal ou dans des fichiers de configuration, soit en utilisant des thèmes prêts à l’emploi dans votre émulateur de terminal. Dans tous les cas, le texte vert ou ambré nostalgique sur un écran noir est tout à fait facultatif. Cet article démontre comment vous pouvez rendre Linux aussi coloré (ou aussi monochrome) que vous le souhaitez.
Capacités du terminal
Les systèmes modernes ont généralement par défaut au moins xterm-256color, mais si vous essayez d’ajouter de la couleur à votre terminal sans succès, vous devriez vérifier votre paramètre TERM.
Historiquement, les terminaux Unix étaient littéralement cela : des points physiques à l’extrémité littérale (terminaison) d’un système informatique partagé où les utilisateurs pouvaient taper des commandes. Ils étaient uniques par rapport aux télétypes (c’est pourquoi nous avons encore aujourd’hui des périphériques /dev/tty dans Linux) qui étaient souvent utilisés pour émettre des commandes à distance. Les terminaux étaient équipés de moniteurs CRT intégrés, de sorte que les utilisateurs pouvaient s’asseoir devant un terminal dans leur bureau pour interagir directement avec l’ordinateur central. Les moniteurs CRT étaient coûteux, tant au niveau de la fabrication que du contrôle ; il était plus facile de faire cracher à un ordinateur un texte ASCII brut que de se préoccuper de l’anticrénelage et d’autres subtilités que les informaticiens modernes considèrent comme acquises. Cependant, les développements technologiques étaient rapides, même à l’époque, et il est rapidement devenu évident qu’à mesure que de nouveaux terminaux d’affichage vidéo étaient conçus, ils avaient besoin de nouvelles capacités disponibles en option.
Par exemple, le nouveau VT100 fantaisiste sorti en 1978 prenait en charge la couleur ANSI, donc si un utilisateur identifiait le type de terminal comme vt100, alors un ordinateur pouvait fournir une sortie couleur, alors qu’un périphérique série de base pouvait ne pas avoir une telle option. Le même principe s’applique aujourd’hui, et il est défini par la variable d’environnement TERM. Vous pouvez vérifier votre définition de TERM avec echo:
$ echo $TERM
xterm-256color
Le fichier obsolète (mais toujours maintenu sur certains systèmes dans l’intérêt de la compatibilité ascendante) /etc/termcap définissait les capacités des terminaux et des imprimantes. La version moderne de ce fichier est terminfo, situé dans /etc ou /usr/share, selon votre distribution. Ces fichiers listent les fonctionnalités disponibles dans différents types de terminaux, dont beaucoup sont définis par le matériel historique : il y a des définitions pour vt100 à vt220, ainsi que pour les émulateurs logiciels modernes comme xterm et Xfce. La plupart des logiciels ne se soucient pas du type de terminal que vous utilisez ; dans de rares cas, vous pouvez recevoir un avertissement ou une erreur concernant un type de terminal incorrect lorsque vous vous connectez à un serveur qui vérifie la compatibilité des fonctionnalités. Si votre terminal est défini sur un profil comportant très peu de fonctionnalités, mais que vous savez que l’émulateur que vous utilisez est capable d’en offrir davantage, vous pouvez modifier votre configuration en définissant la variable d’environnement TERM. Vous pouvez le faire en exportant la variable TERM dans votre fichier de configuration ~/.bashrc :
export TERM=xterm-256color
Enregistrez le fichier, et rechargez vos paramètres :
$ source ~/.bashrc
Codes de couleur ANSI
Les terminaux modernes ont hérité des séquences d’échappement ANSI pour les fonctionnalités “méta”. Il s’agit de séquences spéciales de caractères qu’un terminal interprète comme des actions au lieu de caractères. Par exemple, cette séquence efface l’écran jusqu’à l’invite suivante :
$ printf `3
Or you can use dircolors directly:
$ dircolors --print-database
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.tif 01;35
.tiff 01;35
If that looks cryptic, it’s because it is. The first digit after a file type is the attribute code, and it has six options:
- 00 none
- 01 bold
- 04 underscore
- 05 blink
- 07 reverse
- 08 concealed
The next digit is the color code in a simplified form. You can get the color code by taking the final digit of the ANSII code (32 for green foreground, 42 for green background; 31 or 41 for red, and so on).
Your distribution probably sets LS_COLORS globally, so all users on your system inherit the same colors. If you want a customized set of colors, you can use dircolors for that. First, generate a local copy of your color settings:
$ dircolors --print-database > ~/.dircolors
Modifiez votre liste locale comme vous le souhaitez. Lorsque vous êtes satisfait de vos choix, enregistrez le fichier. Vos paramètres de couleurs sont juste une base de données et ne peuvent pas être utilisés directement par ls, mais vous pouvez utiliser dircolors pour obtenir un shellcode que vous pouvez utiliser pour définir LS_COLORS:
$ dircolors --bourne-shell ~/.dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:
pi=40;33:so=01;35:do=01;35:bd=40;33;01:
cd=40;33;01:or=40;31;01:mi=00:su=37;41:
sg=30;43:ca=30;41:tw=30;42:ow=34;
export LS_COLORS
Copiez et collez cette sortie dans votre fichier ~/.bashrc et rechargez. Alternativement, vous pouvez vider cette sortie directement dans votre fichier .bashrc et recharger.
$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc
Vous pouvez également faire en sorte que Bash résolve les .dircolors au lancement au lieu de faire la conversion manuellement. De façon réaliste, vous n’allez probablement pas changer de couleurs souvent, donc cela peut être trop agressif, mais c’est une option si vous prévoyez de changer votre schéma de couleurs souvent. Dans votre fichier .bashrc, ajoutez cette règle :
] && eval "`dircolors --sh $HOME/.dircolors`"
Si vous avez un fichier .dircolors dans votre répertoire personnel, Bash l’évalue au lancement et définit LS_COLORS en conséquence.
Color
Les couleurs dans votre terminal sont un moyen facile de vous donner une référence visuelle rapide pour des informations spécifiques. Cependant, vous ne voudrez peut-être pas vous appuyer trop lourdement sur elles. Après tout, les couleurs ne sont pas universelles, donc si quelqu’un d’autre utilise votre système, il peut ne pas voir les couleurs de la même façon que vous. En outre, si vous utilisez une variété d’outils pour interagir avec les ordinateurs, vous pourriez également constater que certains terminaux ou connexions à distance ne fournissent pas les couleurs que vous attendez (ou des couleurs tout court).
Ces avertissements mis à part, les couleurs peuvent être utiles et amusantes dans certains flux de travail, alors créez une base de données .dircolor et personnalisez-la à votre guise.