Linux : personnaliser son Bash

Linux : personnaliser son Bash

A la réception/installation d’un nouveau serveur Linux, je configure toujours mon Shell, et plus particulièrement le « prompt » de Bash.

Bash est le Shell le plus courant de Linux, et le « prompt » est ce que vous voyez avant chaque commande.

Exemple :

1
Nom_du_serveur:/home #

C’est bon, vous suivez toujours, j’ai perdu personne ? :)



Il est possible de configurer le prompt pour qu’il ressemble à quelque chose soit plus utile. Attention, cet article est prévu pour des utilisateurs avertis, qui n’ont pas peur des expressions régulières !

Ci-dessus, vous pouvez voir un exemple de prompt personnalisé, le mien en l’occurrence. Avant chaque commande, je peux voir :

  • le numéro de la commande,
  • l’heure,
  • le nom du serveur,
  • le Path …

… et le tout en couleurs, s’il-vous-plaît !

Pour voir à quoi ressemble la configuration de votre prompt actuel :

[ (20) 14:09:50 ] ikki:~$ echo $PS1
\[\e[3;32m\][\[\e[m\] (\#) \[\e[0;33m\]\t\[\e[m\] \[\e[3;32m\]]\[\e[m\] \[\e[0;32m\]\h:\w$ \[\e[m\]

Si on reste logique, on peut modifier le prompt directement en live, en tapant :

1
export PS1="nouvelle_configuration_du_prompt"

.

Exemple : export PS1= »[\d \t \u@\h:\w ] $  »
Affichera la date, l’heure, le hostname, et le path.

Pour que ça reste permanent, il faut éditer le fichier de configuration de bash (~/.bashrc pour moi) de l’utilisateur en cours, et modifier/rajouter la ligne :

1
export PS1="nouvelle_configuration_du_prompt"

.

Je suis curieux : qui d’autre à personnalisé son bash à part moi ? :)

Pour la syntaxe complète et les informations, vous pouvez vous référer au man de bash, ou encore aux informations suivantes.


Caractères spéciaux

  • \a : an ASCII bell character (07)
  • \d : the date in « Weekday Month Date » format (e.g., « Tue May 26″)
  • \D{format} : the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
  • \e : an ASCII escape character (033)
  • \h : the hostname up to the first ‘.’
  • \H : the hostname
  • \j : the number of jobs currently managed by the shell
  • \l : the basename of the shell’s terminal device name
  • \n : newline
  • \r : carriage return
  • \s : the name of the shell, the basename of $0 (the portion following the final slash)
  • \t : the current time in 24-hour HH:MM:SS format
  • \T : the current time in 12-hour HH:MM:SS format
  • \@ : the current time in 12-hour am/pm format
  • \A : the current time in 24-hour HH:MM format
  • \u : the username of the current user
  • \v : the version of bash (e.g., 2.00)
  • \V : the release of bash, version + patch level (e.g., 2.00.0)
  • \w : the current working directory, with $HOME abbreviated with a tilde
  • \W : the basename of the current working directory, with $HOME abbreviated with a tilde
  • \! : the history number of this command
  • \# : the command number of this command
  • \$ : if the effective UID is 0, a #, otherwise a $
  • \nnn : the character corresponding to the octal number nnn
  • \\ : a backslash
  • \[ : begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
  • \] : end a sequence of non-printing characters

Rajouter des couleurs

  • Pour ouvrir la partie en couleurs : \e[x;ym
  • Pour fermer : \e[m

Il vous reste à remplacer X et Y par les codes couleurs du tableau suivant.

Liste des couleurs

Couleur Code
Noir 0;30
Bleu 0;34
Vert 0;32
Cyan 0;36
Rouge 0;31
Violet 0;35
Brun 0;33
Vert 0;32

Nota : remplacez le digit 0 par 1 pour avoir une version plus claire de la couleur.