Bien : avant de modifier quoi que ce soit, il faut d'abord choisir en quoi on va le modifier (vous me suivez

? ).
Nous allons commencer par modifier le prompt. Le prompt est l'invite qui se place en début de ligne lorsque vous ouvrez un shell ; hum, par exemple lorsque j'ouvre konsole, je vois ceci :
Code : Bash
Mais qu'est-ce ?
Eh bien c'est tout simplement une invite, il se place ici pour vous dire que vous avez la main, il attend vos ordres, bon petit invité, donne la papate

.
Ne vous fiez pas à la coloration syntaxique du zCode, l'invite est en noir chez moi.
Bien. On va essayer de comprendre sa structuration, on va le décomposer en 1, 2, 3, 4, 5, 6, 7, 8, 9 parties

. Oui, je sais, je suis un peu gourmand

.
Voici les parties que j'ai choisies :
- 1 - le premier "[" ;
- 2 - le nom d'utilisateur, ici "diablo" ;
- 3 - le signe "@" qui signifie, "chez" ;
- 4 - le nom de la machine, ici "Diablo" ;
- 5 - le signe ":", il ne signifie rien en soi, il est juste là pour la séparation avec le 6 ;
- 6 - le répertoire courant, ici "~" signifie le home, aurait pu être "~/Ma musique" ou "/UnAutreDossier" par exemple ;
- 7 - le deuxième crochet "]" ;
- 8 - le signe "$", il indique le statut de l'utilisateur, il peut être soit $ (utilisateur normal), ou # pour le supra-utilisateur (root) ;
- 9 - la fin de notre invite, juste penser à remettre la couleur en noir.
Mais cette disposition n'est pas un fruit du hasard ; en effet, c'est une variable spéciale (
PS1) qui définit sa structure. La variable
PS1 est une variable contenant une chaîne de caractères dans laquelle nous allons organiser comme bon nous semble notre shell.
On va d'abord résumer la contenu de la variable
PS1.
Pour l'instant, notre variable
PS1 doit contenir à peu près ceci :
[\u@\h:\w]\$ .
Ce qui nous donne le code bash.
On peut aisément (

) deviner la signification de cette chaîne de caractères.
On remarque donc certains signes spéciaux :
- le \u signifie l'utilisateur ;
- le \h signifie le nom de la machine (hostname) ;
- le \w, c'est le répertoire courant ;
- et le \$ le signe du statut de l'utilisateur.
On a donc un
crochet ouvrant, suivi du
nom de l'utilisateur, puis un
signe arobase, le
nom de la machine, le
signe :, le
répertoire courant, puis un
crochet fermant et un
petit signe ($ ou #).
Maintenant, on va voir comment modifier la couleur d'un élément.
Pour ce faire, il suffit de précéder l'élément à modifier d'un code contenant la couleur choisie (revoyez la partie précédente pour les codes couleurs

).
On va faire des tests à la volée en utilisant la commande
echo qui affichera directement le résultat.
Voici le code :
| Bash |
|---|
| [diablo@Diablo:~]$ echo -e "\033[31mHello\033[00m" |
Attends : tu nous fais quoi, là ?
Pour spécifier la couleur d'un texte, on procède de la manière suivante.
On écrit
\033, on met un crochet ouvrant
[, puis on met le code de la couleur choisie (ici,
31 signifie rouge) et on finit avec un
m. On affiche notre texte, ici
Hello, puis on remet la couleur à noir
(\033[00m), sinon le reste sera écrit en rouge aussi.
Cette syntaxe est comme ça, je ne l'ai pas choisie, je ne vois pas de logique, pourquoi un
\033 et un
m plutôt qu'autre chose, mais c'est comme ça, et tant que ça marche, on est content !
En écrivant ceci dans un shell et en appuyant sur <
Entrée pour valider, un
Hello devrait s'afficher sous votre invite.
Si ce n'est pas le cas, essayez ceci :
Code : Bash
Cette commande devrait activer la colorisation dans votre shell, et essayez à nouveau la commande
echo -e "\033[31mHello\033[00m".
Bien ! Vous savez à présent mettre de la couleur dans votre shell, on va pouvoir modifier le prompt !
J'oubliais, à partir du shell, je n'ai pas réussi à utiliser les signes \u, \w et \h : à la place, j'utilise $USER, $HOSTNAME et $PWD.
| Dans le PS1 | Pour test avec echo | Affichera |
|---|
| \w |
$PWD |
Dossier courant |
| \h |
$HOSTNAME |
Nom de la machine |
| \u |
$USER |
Nom d'utilisateur |
Ce qui donne par exemple :
| Bash |
|---|
| [diablo@Diablo:~]$ echo -e "[\033[35m$USER\033[30m@\033[32m$HOSTNAME\033[30m:\033[31m$PWD\033[30m]$ " |
Pour ceci :
| Bash |
|---|
[diablo@Diablo:~]$ echo -e "[\033[35m$USER\033[30m@\033[32m$HOSTNAME\033[30m:\033[31m$PWD\033[30m]$ "
[diablo@Diablo:/home/diablo]$
[diablo@Diablo:~]$
|
Si vous n'y parvenez pas du premier coup, persévérez ! C'est en se mouchant que l'on devient moucheron.
