in

Comment personnaliser (et coloriser) votre invite Bash

La plupart des distributions Linux configurent l’invite Bash pour qu’elle ressemble à quelque chose comme username@hostname:directory$ . Mais vous pouvez configurer l’invite Bash pour contenir ce que vous voulez, et même choisir les couleurs que vous aimez.

Les étapes d’exemple ici ont été effectuées sur Ubuntu 16.04 LTS. Le processus devrait être le même sur les autres distributions Linux, bien que l’invite Bash par défaut et les paramètres dans le fichier .bashrc puissent être un peu différents.

Emplacement de stockage de la variable d’invite

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 également utiliser vi, emacs ou tout autre éditeur de texte avec lequel vous êtes à l’aise. Ouvrez un terminal et exécutez:

nano ~/.bashrc

Faites défiler vers le bas PS1= section. La première variable semble assez compliquée car elle comprend des informations de couleur – nous l’expliquerons plus tard. La deuxième variable, sans informations de couleur, se lit comme suit:

${debian_chroot:+($debian_chroot)}u@h:w$

C’est encore un peu compliqué en raison du ${debian_chroot:+($debian_chroot)} morceaux. Celles-ci indiquent simplement à Bash de vous faire savoir si vous utilisez un environnement chroot Debian et ne sera normalement pas affiché. En les ignorant, 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 utilisateur normal ou # si vous êtes root. Donc, en mettant tout cela ensemble, vous obtenez username@hostname:working_directory$.

Pour modifier votre invite Bash, il vous suffit d’ajouter, de supprimer ou de réorganiser les caractères spéciaux dans la variable PS1. Mais vous pouvez utiliser beaucoup plus de variables que les variables par défaut.

Quittez l’éditeur de texte pour le moment – dans nano, 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 Bash personnalisée

Votre configuration d’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 pour expérimenter. Par exemple, la première ligne ici définirait votre invite sur une invite de base «user $», tandis que la seconde définirait votre invite sur une invite de base «user: working_directory $».

PS1="u$ "

PS1="u:w$ "

Si vous souhaitez 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 toutes 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 avoir à vous déconnecter ou à 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="Hello World 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 soucierez probablement pas de beaucoup d’entre eux, mais voici la liste complète telle qu’elle apparaît dans le manuel Bash:

  • Un personnage de cloche: a
  • La date, au format «Jour de la semaine, mois et date» (par exemple, «Mar 26 mai»): d
  • 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 à la locale. Les accolades sont obligatoires: D{format}
  • Un personnage d’échappement: e
  • Le nom d’hôte, jusqu’au premier «.»: h
  • Le nom d’hôte: H
  • Le nombre de jobs actuellement gérés par le shell: j
  • Le nom de base du nom du terminal du shell: l
  • Une nouvelle ligne: n
  • Un retour chariot: r
  • Le nom du shell, le nom de base de $ 0 (la partie qui suit la dernière barre oblique): s
  • L’heure, au format 24 heures HH: MM: SS: t
  • L’heure, au format 12 heures HH: MM: SS: T
  • L’heure, au format 12 heures am / pm: @
  • L’heure, au format 24 heures HH: MM: A
  • Le nom d’utilisateur de l’utilisateur actuel: u
  • La version de Bash (par exemple, 2.00): v
  • La sortie de Bash, version + patchlevel (par exemple, 2.00.0): V
  • Le répertoire de travail courant, avec $ HOME abrégé par un tilde (utilise la variable $ PROMPT_DIRTRIM): w
  • Le nom de base de $ PWD, avec $ HOME abrégé par un tilde: W
  • Le numéro d’historique de cette commande: !
  • Le numéro de commande de cette commande: #
  • Si l’uid effectif est 0, #, sinon $: $
  • Le caractère dont le code ASCII est la valeur octale nnn: nnn
  • Une barre oblique inverse:
  • 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: [
  • End a sequence of non-printing characters: ]

Donc, si vous souhaitez ajouter la date et l’heure à votre invite Bash et placer le répertoire de travail sur commande sur une deuxième ligne, vous pouvez utiliser la construction suivante:

PS1="[d t] u@hnw$ "

Les crochets ici ne sont pas du tout nécessaires, mais aident à diviser les choses visuellement et à rendre la ligne plus facile à lire. Comme nous l’avons vu précédemment, vous pouvez ajouter du texte ou des caractères normaux à la variable de votre choix, alors n’hésitez pas à utiliser ce qui fonctionne pour vous.

Il y a une autre astuce puissante que vous devriez connaître: vous pouvez ajouter la sortie de n’importe quelle commande à l’invite. Chaque fois que l’invite apparaît, Bash exécutera la commande et remplira les informations actuelles. Pour ce faire, incluez simplement n’importe quelle 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 Tab de votre clavier.

Par exemple, disons que vous souhaitez afficher la version du noyau Linux dans l’invite. Vous pouvez utiliser une ligne comme celle-ci:

PS1="u@h on `uname -s -r` w$ "

Comme autre exemple, disons que vous souhaitez afficher le temps de fonctionnement et la moyenne de charge du système, tels qu’affichés par le uptime 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`)nu@h:w$ "

N’hésitez pas à expérimenter 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 cela rend la variable terriblement désordonnée et compliquée si vous ne comprenez pas ce que vous regardez.

Par exemple, la variable d’invite de couleur par défaut de plus tôt était:

${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$

Ou, en supprimant à nouveau les bits debian_chroot:

[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$

C’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:

[33[01;32m]u@h

[33[00m]:

[33[01;34m]w

[33[00m]$

La première section est le u@h bit, précédé d’informations de couleur qui le virent au vert. Le second est le : caractère, précédé d’une information de couleur qui supprime toute coloration. Le troisième est le w bit, précédé par des informations de couleur qui le virent au bleu. Le quatrième est le $ bit, précédé d’informations de couleur qui suppriment toute coloration.

Une fois que vous avez compris comment créer vos propres balises de couleur, vous pouvez ajouter les couleurs de votre choix à toutes les sections de votre invite Bash.

Voici ce que vous devez savoir: Vous devez inclure l’intégralité des informations de code couleur entre les [ et ] characters. À l’intérieur de la balise, vous devez commencer par 033[ or e[ to indicate to Bash that this is color information. Both 33[ and e[ do the same thing. e[ is shorter so might be more convenient to use, but we’ll use 33[ here as it matches what’s used by default. At the end of the tag, you must end with m to indicate the end of a color tag.

Breaking that down, here’s what every color tag will look like. The only difference is the information you add in place of COLOR to define the actual color:

[33[COLORm]

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 du texte de premier plan:

  • Noir: 30
  • Bleu: 34
  • Cyan: 36
  • Vert: 32
  • Violet: 35
  • Rouge: 31
  • Blanc: 37
  • Jaune: 33

Par exemple, comme le texte violet est le code couleur 32, vous utiliseriez [33[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 dans différents émulateurs de terminal.

Voici les valeurs des attributs de texte:

  • Texte normal: 0
  • Texte gras ou clair: 1 (Cela dépend de l’émulateur de terminal.)
  • Texte estompé: 2
  • Texte souligné: 4
  • Texte clignotant: 5 (Cela ne fonctionne pas dans la plupart des émulateurs de terminal.)
  • Texte inversé: 7 (Cela inverse les couleurs de premier plan et d’arrière-plan, de sorte que vous verrez du texte noir sur fond blanc si le texte actuel est un texte blanc sur fond noir.)
  • Texte caché: 8

Vous n’avez pas réellement besoin d’inclure l’attribut de texte normal. C’est la valeur par défaut, de toute façon.

Par exemple, puisque le texte rouge est le code 31 et le texte gras est le code 1, vous utiliseriez [33[1;31m] pour le texte rouge 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 des couleurs d’arrière-plan:

  • Fond noir: 40
  • Fond bleu: 44
  • Fond cyan: 46
  • Fond vert: 42
  • Fond violet: 45
  • Fond rouge: 41
  • Fond blanc: 47
  • Fond jaune: 43

Par exemple, comme un fond bleu est le code 44, [33[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 représente du texte rouge. Ainsi, pour que l’invite par défaut devienne un texte rouge sur fond vert, vous utiliseriez:

PS1="[33[42m][33[31m]u@h:w$ "

Nous spécifions simplement une seule couleur d’arrière-plan, puis une seule couleur de texte de premier plan ici, 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 les différentes sections de votre invite comme vous le souhaitez.

Les couleurs du texte d’arrière-plan et de premier plan continuent à dépasser l’invite, sauf si vous spécifiez le code de couleur 00 efface les informations de couleur. Vous pouvez également utiliser cette balise dans la variable pour réinitialiser le formatage par défaut quelque part dans votre invite. Par exemple, la ligne suivante mettrait fin à toute coloration avant le $ personnage.

PS1="[33[42m][33[31m]u@h:w[33[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 que vous aimez dans la session en cours. Mais vous voulez 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é précédemment.

Ouvrez le fichier .bashrc dans votre éditeur de texte préféré, comme ceci:

nano ~/.bashrc

Faites défiler vers le bas et localisez la section PS1 =. Remplacez simplement 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 que si vous êtes dans un environnement chroot, de toute façon.

Entrez votre variable PS1 colorée sous le if [ "$color_prompt" = yes ]; then ligne. Entrez la variable sans couleurs sous le else ligne.

Enregistrez le fichier et fermez votre éditeur de texte. Par exemple, pour enregistrer le fichier dans nano, appuyez sur Ctrl + O, appuyez sur Entrée, puis appuyez sur Ctrl + X pour quitter.

La prochaine fois que vous démarrez un nouveau shell Bash – par exemple, en vous connectant au terminal ou en ouvrant une nouvelle fenêtre de terminal – vous verrez votre invite personnalisée.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment trouver rapidement des paramètres système spécifiques sur Windows 10

Comment trouver rapidement des paramètres système spécifiques sur Windows 10

Voici ce qui l'a rendu spécial

Voici ce qui l’a rendu spécial