Skip to Content

Personnaliser l’invite de commande (shell bash)

Pour des explications sur ce qu’est l’invite de commande, le shell, le bash, vous pouvez lire l’article sur l’interpréteur de commande.

Le but de l’article est de personnaliser l’invite de commande qui par défaut peut ressembler à cela :

[gerald@hportable ]$

Pour connaître les paramètres de l’invite nous allons afficher la valeur de la variable Bash $PS1.

Celle-ci correspond à la valeur que doit prendre l’invite lorsqu’elle est affichée.

Pour afficher la valeur d’une variable Bash il (...)

Pour des explications sur ce qu’est l’invite de commande, le shell, le bash, vous pouvez lire l’article sur l’interpréteur de commande.

Le but de l’article est de personnaliser l’invite de commande qui par défaut peut ressembler à cela :
[gerald@hportable ~]$

Pour connaître les paramètres de l’invite nous allons afficher la valeur de la variable Bash $PS1.
Celle-ci correspond à la valeur que doit prendre l’invite lorsqu’elle est affichée.
Pour afficher la valeur d’une variable Bash il suffit de faire :
echo $le_nom_de_la_variable

[gerald@hportable ~]$ echo $PS1
[\u@\h \W]\$
[gerald@hportable ~]$

On voit apparaître des caractères affichés [, ], @, et $ et aussi les caractères d’échappement \u (le nom d’utilisateur) \h (le nom de machine) et \W (le nom du répertoire dans lequel on se trouve, le répertoire de travail)
On peut commencé par jouer avec les caractères affichés en les modifiant :
[gerald@hportable ~]$ PS1="_\u@\h \W_\$ "
ce qui donne :
_gerald@hportable ~_$
ou encore :
_gerald@hportable ~_$ PS1="ou_encore_ca_\u@\h \W_\$ "
ce qui donne :
ou_encore_ca_gerald@hportable ~_$

\t donne l’heure
\d donne la date
\h donne le nom de la machine
\\ donne un anti-slash
\r donne Retour à la ligne
\u donne le nom de l’utilisateur
\v # Version du Bash
\w donne le chemin complet par rapport à la racine et le nom du répertoire courant
\W donne uniquement le répertoire courant

On peut trouver la liste des autres caractères d’échappement sur le howto Bash-Prompt-HOWTO
http://www.traduc.org/docs/howto/lecture/Bash-Prompt-HOWTO.html#BASH-PROMPT-ESCAPE-SEQUENCES

Tester les commandes suivantes pour avoir un prompt complet :
PS1="[ $(date "+%T %d/%m/%y") ][ \u@\H: \w ]\$ "
donne
[ 13:47:08 24/03/09 ][ gerald@hportable: /usr/bin ]$

Utiliser de la couleur

Ca n’est pas très compliqué mais la ligne devient un peu longue et on peut vite se prendre les pieds dans les fils.
Pour passer tout le prompt en vert on ajoute au prompt normal PS1="[\u@\h \W]$ " le code\[\033[1;32m\] devant [\u@\h \W]$ pour démarrer la couleur verte et le code \[\033[1;37m\] derrière pour revenir en blanc.
Ce qui donne :
PS1="\[\033[1;32m\][\u@\h \W]$\[\033[1;37m\] "

Le code des couleurs que l’on peut utiliser :

Noir 0 ;30 Rouge 0 ;31
Vert 0 ;32 Marron 0 ;33
Bleu 0 ;34 Violet 0 ;35
Cyan 0 ;36 Gris clair 0 ;37
Gris 1 ;30 Rose 1 ;31
Vert clair 1 ;32 Marron clair 1 ;33
Bleu clair 1 ;34 Violet clair 1 ;35
Cyan clair 1 ;36 Blanc 1 ;37

Rendre les changements permanent

Pour rendre les changements de votre prompt permanents, il vous faut éditer le fichier .bashrc qui se trouve dans votre home et ajouter la ligne PS1="\[\033[1;32m\][\u@\h \W]$\[\033[1;37m\] "
Soit vous prenez un éditeur (vi, vim, gedit) soit vous injecter directement à la fin du fichier avec la commande suivante :
echo "PS1='\[\033[1;32m\][\u@\h \W]$\[\033[1;37m\] '" >> ~/.bashrc

Vous pouvez également en faire un script que vous enregistrez par exemple sous le nom nom_du_script dans le répertoire /home/scripts et rajoutez à la fin du fichier .bashrc la ligne /home/scripts/nom_du_script

Ouvrez une nouvelle console pour voir le changement.

Un prompt vachement chouette

Voici l’extrait du site de Jipe qui malheureusement n’existe plus (le site hein).
Insérer la fonction suivante dans le fichier .bashrc de votre utilisateur.

bytes2 () {
               a=0
               ls -l | (while read -r A B C D E F;
               do case $A in -*) a=$((a+E)) ;; esac
               done
               echo "scale=3; $a/1024/1024" | bc)
       }

Testez ensuite si la fonction fonctionne en tapant bytes2 dans un nouveau terminal. Si la commande bc n’est pas trouvée comme c’est le cas sous Mandriva/Linux, vous pouvez l’installer (urpmi bc pour les mandriveux).

Ensuite vous pouvez tester et comprendre graduellement les lignes suivantes.


premier jet:
PS1='  _ _
(*.*) -( \t )-
(   ) -( \u@\H )-
~ ~  -( $(pwd) )-
##### -( $(bytes2) Mb )-
cmd > '

la chouette:
PS1='  _ _
(*.*) -( \t )-
(   ) -( \u@\H )-
~ ~  -( $(pwd) )-
##### -( $(bytes2) Mb )-
cmd > '

les cellules:
PS1='  _ _ \n
(*.*) -( \t )-
(   ) -( \u@\H )-
~ ~  -( $(pwd) )-
##### -( $(bytes2) Mb )-
cmd > '

le contenu des cellules:
PS1='  _ _ \n
(*.*) -( \t )-
(   ) -( \u@\H )-
~ ~  -( $(pwd) )-
##### -( $(bytes2) Mb )-
cmd > '

le mini prompt de la dernière ligne:
PS1='  _ _
(*.*) -( \t )-
(   ) -( \u@\H )-
~ ~  -( $(pwd) )-
##### -( $(bytes2) Mb )-
cmd > '

l'ajout des couleurs:
PS1='\[\e[35m\]  _ _
(*.*) \[\e[1;34m\]-( \[\e[36m\]\t\[\e[34m\] )-
\[\e[35m\](   ) \[\e[1;34m\]-( \[\e[36m\]\u@\H\[\e[34m\] )-
\[\e[35m\] ~ ~  \[\e[1;34m\]-( \[\e[36m\]$(pwd)\[\e[34m\] )-
\[\e[35m\]##### \[\e[1;34m\]-( \[\e[36m\]$(bytes2) Mb\[\e[34m\] )-\[\e[0m\]
cmd > '

Il existe une variable susceptible de modifier le prompt. il s’agit de $PROMPT_COMMAND. elle contient une commande à effectuer avant l’affichage de chaque prompt. il peut s’agir d’une commande ajoutant un élément au prompt :


[ jipe@jipe.dream.com: ~ ]$
[ jipe@jipe.dream.com: ~ ]$ PROMPT_COMMAND='echo -n "$(date) "'
sam aoû 23 22:59:53 CEST 2003 [ jipe@jipe.dream.com: ~ ]$ pwd  
/home/jipe
sam aoû 23 22:59:53 CEST 2003 [ jipe@jipe.dream.com: ~ ]$ unset PROMPT_COMMAND
[ jipe@jipe.dream.com: ~ ]$

Il peut aussi s’agir d’une commande modifiant totalement le prompt en redéfinissant PS1.
Je vous laisse tester la commande suivante ...

export PROMPT_COMMAND='PS1="C:$(pwd | sed s.^/home/."/Mes Documents/". | sed s././/.g | tr / \\\\\\\\)> "'
Attention le résultat peut heurter la sensibilité de certains d’entre vous ...

Sinon voilà à quoi Jipe passait son temps libre ... je n’ai malheureusement pas réussi à retrouver le script en téléchargement ... il ne vous reste plus qu’à le faire comme exercice pratique.



Liens

http://www.traduc.org/docs/howto/lecture/Bash-Prompt-HOWTO.html
Visiblement ce howto n’a jamais été traduit, proposez votre traduction sur le site :
http://www.traduc.org

Fichier attachéTaille
cowsay.png2.63 Ko