L'avantage de Linux est que vous pouvez tout personnaliser si vous le souhaitez. C'est l'avantage des systèmes projectifs sur les systèmes procéduraux. Il s'agit d'une sorte de constructeur composé de blocs individuels, chacun d'entre eux pouvant être personnalisé à volonté.
C'est particulièrement intéressant si vous ne vous contentez pas de copier des solutions toutes faites, mais si vous essayez de comprendre ce qui fonctionne et comment cela fonctionne. Et même en résolvant une tâche frivole, on apprend quelque chose de nouveau.
Par exemple, vous voulez ajuster les couleurs du terminal linux dans la sortie de la commande ls
.
D'après la documentation de ls
, vous pouvez comprendre que le réglage des couleurs de la sortie se fait à l'aide de l'utilitaire dircolors, qui définit les paramètres de couleur à partir de sa propre base de données ou les prend dans le fichier ~/.dircolors
. Il a également été mentionné que l'initialisation de l'utilisation des couleurs se fait via ~/.bashrc
, le fichier de configuration de l'interpréteur de commandes, et que les paramètres eux-mêmes sont définis via la variable LC_COLORS
.
Le script suivant a été trouvé dans .bashrc
:
Il vérifie la présence de l'utilitaire dircolors sur le système, attribue une valeur à la variable et, en cas de succès, utilise le paramètre --color=auto
chaque fois que ls
est appelé.
Si vous exécutez l'utilitaire dircolors, il affiche la valeur de la variable LC_COLOR
.
Il est également possible d'afficher la valeur de la variable LC_COLORS
sous une forme structurée, en spécifiant la clé :
$ dircolors -p
La sortie étant longue, je ne la donnerai pas ici.
Si vous redirigez la sortie dircolors -p
> ~/.dircolors
, un fichier structuré sera créé à partir duquel les paramètres de couleur seront pris. En éditant ce fichier, vous pouvez définir les paramètres de couleur pour la sortie ls
.
Le fichier .dircolors
créé contient un indice :
En définissant la séquence par un point-virgule, vous obtiendrez la couleur dont vous avez besoin dans la console Linux, en fonction de la liste. Les couleurs du terminal linux vont de 30 à 37 pour la couleur de la police, et de 40 à 47 pour l'arrière-plan. Par exemple :
DIR 01;34 implique que les noms des répertoires seront en gras et en bleu.
Mais de cette manière, vous n'obtenez que huit couleurs, alors que les émulateurs de terminaux modernes sont capables d'en afficher au moins 256.
Il existe d'autres façons de définir la couleur. Par exemple, EXEC 38;5;208;1 donne une police orange épaisse pour les fichiers exécutables.
Pour ne pas avoir à parcourir manuellement les couleurs de linux, il existe une table de couleurs toute prête
En remplaçant la valeur de la couleur 38;5;x - où x est la couleur du tableau, nous obtenons le résultat nécessaire. Vous obtenez quelque chose comme ceci :
Comment cela fonctionne-t-il ? Le fait est que le réglage de la couleur des informations émises par l'émulateur de terminal s'effectue à l'aide des codes d'échappement ANSI. Il s'agit d'une certaine séquence de caractères qui n'est pas imprimée à l'écran, mais qui affecte la sortie. Elle est appelée ainsi parce qu'elle commence par [ - code "Esc". Comme il existe de nombreux terminaux et émulateurs de terminaux, ces codes de contrôle sont standardisés. Le contrôle des couleurs par la séquence de 30 à 37 est la norme ECMA-48. Des informations à ce sujet sont disponibles dans la section console_codes
.
Une fois que vous avez compris comment définir les couleurs de linux via les codes esc, il est facile de redessiner et de colorer l'invite. La variable PS1, définie dans le fichier ~/.bashrc
, est responsable de sa sortie
Dans Linux Mint, le script d'initialisation ressemble à ceci :
C'est-à-dire que l'on détermine d'abord si le script a été exécuté par root ou par un utilisateur normal. Étant donné que, dans la grande majorité des cas, il s'agit de la deuxième option, la ligne qui suit le premier "else" doit être éditée. Le format de cette ligne est décrypté dans la documentation bash, dans la section "Promting". Il implique que la séquence esc doit commencer par "[" et se terminer par "]". Ainsi :
u
- affiche le nom de l'utilisateur ;h
- affiche le nom de l'hôte ;w
- affiche le nom du répertoire de travail ;Ce qui peut être affiché dans l'invite :
d
- la date, au format "Wed Dec 28" ;A
- l'heure, au format 24 heures ;Introduisons quelque chose de plus intéressant :
PS1='${debian_chroot:+($debian_chroot)}[[01;32m]Matrix has you,u![[00m] [[01;34m]Blue pill[[00m] or [[31m]red?[[00m]--->$ '
Et la ligne d'invite se présentera comme suit :