Comment personnaliser (et coloriser) votre invite Bash
La plupart des distributions Linux configurent l'invite Bash pour ressembler à quelque chose comme nom d'utilisateur @ nom d'hôte: répertoire $
. Mais vous pouvez configurer l’invite Bash pour contenir tout ce que vous voulez, et même choisir les couleurs de votre choix..
Les exemples d’exemple présentés ici ont été réalisés sur Ubuntu 16.04 LTS. Le processus devrait être identique sur les autres distributions Linux, bien que l'invite Bash par défaut et les paramètres du fichier .bashrc soient légèrement différents..
Où la variable d'invite est stockée
La configuration de votre invite Bash est stockée dans le fichier .bashrc de votre compte utilisateur, qui se trouve à ~ / .bashrc
. Donc, si votre nom d'utilisateur est bob, le fichier est à /home/bob/.bashrc
.
Vous pouvez ouvrir le fichier pour afficher la variable Bash actuelle. Nous utiliserons nano comme exemple d’éditeur de texte, bien que vous puissiez aussi utiliser vi, emacs ou tout autre éditeur de texte avec lequel vous êtes à l’aise. Ouvrez un terminal et lancez:
nano ~ / .bashrc
Faites défiler jusqu'à la PS1 =
section. La première variable semble assez compliquée car elle inclut des informations sur les couleurs. Nous l'expliquerons plus tard. La deuxième variable, sans information de couleur, se lit comme suit:
$ debian_chroot: + ($ debian_chroot) \ u @ \ h: \ w \ $
C’est encore un peu compliqué à cause de la $ debian_chroot: + ($ debian_chroot)
morceaux. Celles-ci indiquent simplement à Bash de vous informer si vous utilisez un environnement chrooté par Debian et que normalement, il ne sera pas affiché. En ignorant ceux-ci, voici la structure par défaut de la variable d'invite Bash:
\ u @ \ h: \ w \ $
\ u
indique votre nom d'utilisateur, @
indique le signe @, \ h
indique le nom d'hôte (nom de l'ordinateur), :
indique le caractère:, \ w
indique le répertoire de travail, et \ $
indique un $ si vous êtes un compte d'utilisateur normal ou # si vous êtes root. Donc, en mettant cela ensemble, vous obtenez nom_utilisateur @ nom_hôte: répertoire_travail $
.
Pour modifier votre invite Bash, il vous suffit d'ajouter, de supprimer ou de réorganiser les caractères spéciaux de la variable PS1. Mais il y a beaucoup plus de variables que vous pouvez utiliser que celles par défaut.
Laissez l'éditeur de texte pour nano maintenant, appuyez sur Ctrl + X pour quitter. Nous allons vous montrer comment expérimenter des variables avant d'en écrire une nouvelle dans votre fichier .bashrc.
Comment créer une invite de Bash personnalisée
La configuration de votre invite Bash est stockée dans la variable PS1. Pour enregistrer le contenu de la variable PS1 dans une nouvelle variable, exécutez la commande suivante:
DEFAULT = $ PS1
Vous pouvez maintenant définir la variable PS1 sur différentes valeurs à expérimenter. Par exemple, la première ligne définirait votre invite comme une invite «utilisateur $» de base, tandis que la seconde définirait votre invite comme une invite «utilisateur: répertoire_travail $» de base..
PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"
Si vous souhaitez un jour revenir à votre invite par défaut, exécutez simplement la commande suivante..
PS1 = $ DEFAULT
Bash sera restauré à son invite par défaut grâce au fait que vous avez enregistré ces paramètres par défaut plus tôt. Notez que les modifications que vous apportez ici ne sont que temporaires pour la session Bash en cours. Vous pouvez donc toujours vous déconnecter et vous reconnecter ou fermer et rouvrir la fenêtre du terminal pour revenir à votre invite par défaut. Mais la ligne ci-dessus permet de revenir facilement à votre invite Bash par défaut sans la peine de vous déconnecter ou de fermer une fenêtre..
Vous pouvez ajouter des caractères ou du texte à la variable. Ainsi, pour préfixer l’invite par défaut avec «Hello World», vous pouvez utiliser:
PS1 = "Bonjour tout le monde \ u @ \ h: \ w \ $"
Maintenant que vous avez les bases, il vous suffit de savoir quels sont tous les caractères spéciaux. Vous ne vous en soucierez probablement pas, mais voici la liste complète, telle qu'elle apparaît dans le manuel de Bash:
- Un personnage de cloche:
\une
- La date, au format «Jour de la semaine, mois» (par exemple, «mardi 26 mai»):
\ré
- Le format est passé à strftime (3) et le résultat est inséré dans la chaîne d'invite; un format vide donne une représentation temporelle spécifique à l'environnement local. Les accolades sont obligatoires:
\ D format
- Un personnage d'évasion:
\ e
- Le nom d'hôte, jusqu'au premier '.':
\ h
- Le nom d'hôte:
\ H
- Le nombre de tâches actuellement gérées par le shell:
\ j
- Le nom de base du nom de périphérique du shell:
\ l
- Une nouvelle ligne:
\ n
- Un retour de voiture:
\ r
- Le nom du shell, le nom de base de $ 0 (la partie qui suit la barre oblique finale):
\ s
- L'heure, au format HH: MM: SS sur 24 heures:
\ t
- L'heure, au format HH: MM: SS sur 12 heures:
\ T
- L'heure, au format 12 heures am / pm:
\ @
- L'heure, au format 24 heures HH: MM:
\UNE
- Le nom d'utilisateur de l'utilisateur actuel:
\ u
- La version de Bash (par exemple, 2.00):
\ v
- La version de Bash, version + patchlevel (par exemple, 2.00.0):
\ V
- Le répertoire de travail actuel, avec $ HOME abrégé avec un tilde (utilise la variable $ PROMPT_DIRTRIM):
\ w
- Le nom de base de $ PWD, avec $ HOME abrégé avec un tilde:
\ W
- Le numéro d'historique de cette commande:
\!
- Le numéro de commande de cette commande:
\ #
- Si l'ID effectif est 0, #, sinon $:
\ $
- Le caractère dont le code ASCII est la valeur octale nnn:
\ nnn
- Un backslash:
\\
- Commencez une séquence de caractères non imprimables. Cela pourrait être utilisé pour incorporer une séquence de contrôle de terminal dans l'invite:
\ [
- Terminez une séquence de caractères non imprimables:
\]
Donc, si vous voulez ajouter la date et l'heure à votre invite Bash et mettre le répertoire de travail en commande sur une deuxième ligne, vous pouvez utiliser la construction suivante:
PS1 = "[\ d \ t] \ u @ \ h \ n \ w \ $"
Les crochets ne sont pas du tout nécessaires, mais vous permettent de casser les choses visuellement et de rendre la ligne plus lisible. Comme nous l'avons vu précédemment, vous pouvez ajouter du texte ou des caractères normaux à la variable de votre choix. N'hésitez donc pas à utiliser ce qui vous convient le mieux..
Il existe une astuce plus puissante que vous devez connaître: vous pouvez ajouter le résultat de n’importe quelle commande à l’invite. Chaque fois que l'invite apparaît, Bash exécutera la commande et renseignera les informations actuelles. Pour ce faire, il suffit d'inclure toute commande que vous souhaitez exécuter entre deux '
personnages. Ce n'est pas une apostrophe, c'est l'accent grave qui apparaît au-dessus de la touche de tabulation de votre clavier..
Par exemple, supposons que vous souhaitiez afficher la version du noyau Linux dans l'invite. Vous pouvez utiliser une ligne comme celle-ci:
PS1 = "\ u @ \ h sur 'uname -s -r' \ w \ $"
Autre exemple, supposons que vous souhaitiez afficher le temps de disponibilité du système et la charge moyenne, tels qu’affichés par la disponibilité
commander. Vous pouvez utiliser la construction suivante, qui place le temps de disponibilité sur sa propre ligne avant le reste de l'invite..
PS1 = "('uptime') \ n \ u @ \ h: \ w $"
N'hésitez pas à expérimenter avec différents caractères spéciaux et commandes pour assembler votre invite de commande idéale.
Comment ajouter des couleurs à votre invite Bash
Une fois que vous avez déterminé votre invite préférée, vous pouvez y ajouter des couleurs. C’est en fait très simple, mais la variable a un aspect terriblement compliqué si vous ne comprenez pas ce que vous regardez..
Par exemple, la variable d'invite de couleur par défaut de précédemment était:
$ debian_chroot: + ($ debian_chroot) \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $
Ou encore, en supprimant les bits debian_chroot:
\ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $
Ceci est en fait juste le \ u @ \ h: \ w $
variable de plus tôt, mais avec des informations de couleur. Vraiment, nous pouvons le décomposer en quelques sections:
\ [\ 033 [01; 32m \]\ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \]\ w \ [\ 033 [00m \]\ $
La première section est la \ u @ \ h
bit, précédé par une information de couleur qui passe au vert. La seconde est la :
caractère, précédé d'informations de couleur qui supprime toute coloration. Le troisième est le \ w
bit, précédé par une information de couleur qui passe au bleu. Le quatrième est le \ $
bit, précédé d'informations de couleur qui supprime toute coloration.
Une fois que vous avez compris comment créer vos propres balises de couleur, vous pouvez ajouter les couleurs de votre choix aux sections de votre invite Bash de votre choix..
Voici ce que vous devez savoir: Vous devez inclure toute l’information sur le code de couleur entre \ [
et \] personnage
s. À l'intérieur de la balise, vous devez commencer par \ 033 [
ou \ e [
pour indiquer à Bash qu'il s'agit d'informations de couleur. Tous les deux \ 033 [
et \ e [
faire la même chose. \ e [
est plus courte, donc peut-être plus pratique à utiliser, mais nous utiliserons \ 033 [
ici car il correspond à ce qui est utilisé par défaut. À la fin de la balise, vous devez terminer par m \
pour indiquer la fin d'une étiquette de couleur.
En résumé, voici à quoi ressemblera chaque étiquette de couleur. La seule différence réside dans les informations que vous ajoutez à la place de COLOR pour définir la couleur réelle:
\ [\ 033 [COULEURm \]
Bash vous permet de changer la couleur du texte de premier plan, d'ajouter des attributs tels que "gras" ou "souligné" au texte et de définir une couleur d'arrière-plan..
Voici les valeurs pour le texte au premier plan:
- Noir: 30
- Bleu: 34
- Cyan: 36
- Vert: 32
- Violet: 35
- Rouge: 31
- Blanc: 37
- Jaune: 33
Par exemple, puisque le texte violet correspond au code de couleur 32, vous utiliseriez \ [\ 033 [32m \]
pour le texte violet.
Vous pouvez également spécifier un attribut pour le texte. Cet attribut doit être ajouté avant le numéro de couleur, séparé par un point-virgule (;). Le texte avec ces attributs aura un aspect différent selon les émulateurs de terminaux..
Voici les valeurs pour les attributs de texte:
- Texte normal: 0
- Texte en gras ou clair: 1 (Cela dépend de l'émulateur de terminal.)
- Dim Text: 2
- Texte souligné: 4
- Texte clignotant: 5 (Cela ne fonctionne pas dans la plupart des émulateurs de terminaux.)
- Texte inversé: 7 (Ceci inverse les couleurs de l'avant-plan et de l'arrière-plan. Vous verrez ainsi du texte noir sur un arrière-plan blanc si le texte actuel est du texte blanc sur un arrière-plan noir.)
- Texte caché: 8
Vous n'avez pas réellement besoin d'inclure l'attribut de texte normal. C'est le défaut, de toute façon.
Par exemple, puisque le texte rouge correspond au code 31 et le texte en gras au code 1, vous devez utiliser \ [\ 033 [1; 31m \]
pour le texte rouge en gras.
Vous pouvez également spécifier une couleur d'arrière-plan, mais vous ne pouvez pas ajouter d'attribut à une couleur d'arrière-plan..
Voici les valeurs pour les couleurs de fond:
- Fond noir: 40
- Fond bleu: 44
- Contexte cyan: 46
- Fond vert: 42
- Fond violet: 45
- Fond rouge: 41
- Fond blanc: 47
- Fond jaune: 43
Par exemple, puisque l’arrière-plan bleu correspond au code 44, \ [\ 033 [44m \]
spécifierait un fond bleu.
Vous pouvez spécifier des balises de couleur de premier plan et d'arrière-plan. Par exemple, 42 représente un arrière-plan vert et 31, un texte en rouge. Ainsi, pour que l'invite par défaut devienne du texte rouge sur un fond vert, vous devez utiliser:
PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "
Nous spécifions simplement une couleur d'arrière-plan unique, puis une couleur de texte de premier plan unique, qui commence au début de l'invite et est appliquée à tout le texte de l'invite. Cependant, vous pouvez spécifier autant de balises de couleur que vous le souhaitez dans la variable pour colorer différentes sections de votre invite à votre guise..
Les couleurs du texte d'arrière-plan et de premier plan continuent de dépasser l'invite, sauf si vous spécifiez le code de couleur 00 pour effacer les informations de couleur. Vous pouvez également utiliser cette balise dans la variable pour rétablir le formatage par défaut quelque part dans votre invite. Par exemple, la ligne suivante mettrait fin à toute la coloration avant la \ $
personnage.
PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "
Comment définir votre nouvelle invite par défaut
Une fois que vous avez fini d'expérimenter les couleurs, vous devriez avoir une invite Bash comme dans la session en cours. Mais vous voudrez probablement rendre cette nouvelle invite permanente afin qu'elle soit automatiquement utilisée dans toutes vos sessions Bash..
Pour ce faire, il vous suffit de modifier le contenu de la variable PS1 dans le fichier .bashrc, que nous avons examiné plus tôt..
Ouvrez le fichier .bashrc dans votre éditeur de texte préféré, comme suit:
nano ~ / .bashrc
Faites défiler et localisez la section PS1 =. Il suffit de remplacer la variable par défaut par votre variable personnalisée. Vous voudrez probablement quitter le $ debian_chroot: + ($ debian_chroot)
bits seuls, cependant, ils n'apparaîtront pas, sauf si vous êtes dans un environnement chroot, de toute façon.
Entrez votre variable PS1 colorée sous le if ["$ color_prompt" = yes]; puis
ligne. Entrez la variable sans couleur sous le autre
ligne.
Enregistrez le fichier et fermez votre éditeur de texte. Par exemple, pour enregistrer le fichier en nano, appuyez sur Ctrl + O, appuyez sur Entrée, puis sur Ctrl + X pour quitter..
La prochaine fois que vous démarrerez un nouveau shell Bash, par exemple, en vous connectant au terminal ou en ouvrant une nouvelle fenêtre de terminal, vous verrez apparaître votre invite personnalisée..