Modes de paiement Abuse

Couleurs du terminal Linux

26.09.2021, 22:47

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.

Colorer les couleurs de la sortie

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.

Colorer la ligne d'invitation

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 :

  • [[01;32m] - met la couleur verte ;
  • u - affiche le nom de l'utilisateur ;
  • h - affiche le nom de l'hôte ;
  • [[00m] - efface les attributs définis ;
  • [[01;34m] - met la couleur bleue ;
  • w - affiche le nom du répertoire de travail ;
  • Hi - un exemple qui montre que n'importe quel texte dérivé peut être édité.

Ce qui peut être affiché dans l'invite :

  • d - la date, au format "Wed Dec 28" ;
  • A - l'heure, au format 24 heures ;
  • ! - numéro de la commande en cours dans l'historique ;
  • - transfert de la sortie sur une autre ligne ;

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 :