La nouvelle année approche, et l'on n'a plus envie de penser à un travail sérieux.
Tout le monde s'efforce de décorer quelque chose pour les fêtes : la maison, le bureau, l'espace de travail… Alors décorons aussi quelque chose ! Par exemple, l'invite de commande. D'une certaine manière, l'invite de commande est aussi un espace de travail.
Dans certaines distributions, elle est déjà "décorée" :

Dans d'autres, elle est grise et peu attrayante :

Mais nous pouvons faire, par exemple, ceci :

Bien sûr, chacun a ses goûts. Si cette décoration vous semble trop voyante et inappropriée, sachez que cet avis est tout à fait légitime. Et si vous aussi, vous souhaitez ajouter un peu de magie festive, lisez cet article de Noël proposé par Cloud4Y.
Pour commencer, je vais expliquer comment le output du terminal est "décoré". Cela se fait à l'aide de séquences d'échappement. Plus précisément, il s'agit de séquences de codes de contrôle ANSI/VT100. Ce qui signifie automatiquement que votre émulateur de terminal doit prendre en charge cette norme, sinon la magie de Noël ne se produira pas. Et oui, on part du principe que vous avez $SHELL bash.
Ces commandes sont appelées séquences d'échappement parce qu'elles commencent par le caractère ASCII "escape". Il existe de nombreuses séquences de contrôle, et elles permettent, par exemple, d'afficher les paramètres du terminal, de gérer l'affichage et le déplacement du curseur, de modifier la police, de supprimer et de masquer du texte. Nous allons choisir une fonctionnalité en particulier : le changement de couleur du texte et de l'arrière-plan.
Nous exécutons la séquence de code *ESC*[{attr1};...;{attrn}m
En tant que caractère Escape est représenté par sa forme octale, c'est-à-dire 33. Voici un bref aperçu des valeurs possibles des attributs :
0 Réinitialiser tous les attributs
1 Bright (luminosité augmentée)
2 Dim (diminué)
4 Underscore (soulignement)
5 Blink (clignotement)
7 Reverse (inversion)
8 Hidden (masquer le texte)
Couleurs de premier plan (couleur de l'encre, couleur du texte) :
30 Black (noir)
31 Red (rouge)
32 Green (vert)
33 Yellow (jaune)
34 Blue (bleu)
35 Magenta (pourpre)
36 Cyan (cyan)
37 White (blanc)
Couleurs d'arrière-plan (couleur du papier ou du fond) :
40 Black (noir)
41 Red (rouge)
42 Green (vert)
43 Yellow (jaune)
44 Blue (bleu)
45 Magenta (pourpre)
46 Cyan (cyan)
47 White (blanc)
Attention, si maintenant vous tapez dans le terminal : echo 33[0;31mdu texte ici 33[0m’
… vous obtiendrez de manière prévisible un charabia monochrome :

Pourquoi ? Parce qu'il fallait exploiter les fonctionnalités avancées de la commande echo. Il suffit d'ajouter une petite option : echo -e ' 33[0;31mtexte en rouge 33[0m'
Désormais, la sortie sera affichée correctement :
![]()
Nous avons compris comment colorer la sortie sur le terminal. Regardons maintenant comment colorer l'invite de commande.
Cela se fait en modifiant la variable PS1. Cette variable contrôle l'invite de commande. Son apparence peut également être modifiée, y compris par des séquences d'échappement. Mais il y a une petite différence : la séquence doit commencer par le symbole “[”, et se terminer par le symbole “]”, sinon elle sera affichée sur le terminal.
Toutes les séquences de commandes possibles sont expliquées en détail dans le manuel de bash, donc je propose aux lecteurs de choisir ce qu'ils préfèrent voir dans l'invite de commande. Comme exemple, je vais donner ma valeur de variable PS1 :
[ 33[34;1m]t[ 33[0m],[ 33[32m]u@l@h[ 33[0m]:[ 33[33m]W[ 33[0m],[ 33
[31m]![ 33[0m]$n
Je vais déchiffrer ce sort mystérieux :
[ 33[34;1m] — active la couleur bleu vif (deuxième attribut) pour le texte
t – affiche l'heure courante au format HH:MM:SS
[ 33[0m] – réinitialise les paramètres de couleur du texte
, — juste une virgule (surprenant, n'est-ce pas ?)
[ 33[32m] — active la couleur verte pour le texte
u@l@h – affiche le nom d'utilisateur, le numéro du terminal et le nom abrégé de l'hôte, séparés par le symbole “@”
[ 33[0m] — réinitialise à nouveau les paramètres de couleur du texte
: — juste un deux-points (soudainement !)
[ 33[33m] — active la couleur jaune pour le texte
S – affiche le nom du répertoire courant
[ 33[0m] — réinitialise encore les paramètres de couleur du texte
, — encore une virgule (qui aurait pu le penser !)
[ 33[31m] — active la couleur rouge pour le texte
! — affiche le numéro de la commande dans le terminal
[ 33[0m] — n'oubliez pas de réinitialiser les paramètres de couleur du texte
$ — affiche “#” pour root et “$” pour tous les autres
n – saut de ligne. Pourquoi ? Pour que la commande commence au bord gauche de la fenêtre, plutôt qu'à la position de la fin de l'invite de commande.
Où redéfinir la variable ? Il est logique de le faire dans ~/ .bashrc.
L'apparence de l'invite est limitée uniquement par votre imagination. En théorie, rien ne vous empêche d'utiliser l'outil décrit ci-dessus pour transformer l'invite de commande en un sapin de Noël. Cependant, une telle invite serait très encombrante, et il ne serait pas plus facile de travailler. On peut simplement afficher le sapin au-dessus de l'invite de commande à la connexion (de toute façon, nous devons éditer ~/ .bashrc). Amusez-vous bien ! Et merci de votre attention.

Quoi d'autre de полезного можна почитать в блоге
→
→
→
→
→
Abonnez-vous à notre -channel, pour ne pas manquer le prochain article ! Nous écrivons au maximum deux fois par semaine et uniquement sur des sujets pertinents. Nous vous rappelons également que le fournisseur de cloud d’entreprise Cloud4Y a lancé une promotion « Cloud FZ-152 au prix normal ». Vous pouvez soumettre votre demande .
Source : habr.com
