[Plan du site]
Vous êtes ici ---
> Le Site du Zéro
> Les tutoriels
> Non-Officiels
> Systèmes d'exploitation
> Linux
> Personnalisez votre shell en couleur !
> Lecture du tutoriel
Personnalisez votre shell en couleur !
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Il est possible que certaines erreurs d'échappement de backslashs (anti-slashs = \) se soient glissées dans ce tuto : si vous en voyez, n'hésitez pas à me prévenir.
Hello tout le monde !!
Dans ce mini-tuto, je vais vous donner une petite astuce pour mettre un peu de joie et de gaieté dans votre console linux.
Eh oui, on va passer de ça :
à ça :
Un peu plus accueillant, non ?
Bon, alors, qu'est-ce qu'on attend

?
Avant de commencer à modifier notre shell, on va essayer de comprendre comment ça se passe.
Tout d'abord, qu'est-ce qu'un shell

?
Le shell est un logiciel fournissant une interface pour un utilisateur. Il peut prendre la forme d'une interface graphique, ou d'une interface en ligne de commande.
Pour ce tuto, nous allons utiliser
bash qui est un interpréteur de commande.
Le bash est un shell très utilisé sous Unix (Unix englobe Linux, Mac et BSD voir
wiki). Il est extrêmement populaire, rapide, puissant et simple à utiliser.
Il existe d'autres shells, mais je n'aborderai que le
bash dans ce tuto.
Nous allons nous intéresser à un fichier qui se nomme
.bashrc. Ce fichier est un fichier
bash.
Un fichier bash est un fichier qui contiendra une suite de commandes bash à exécuter.
Si vous faites du python, vous remarquez que le principe est le même, c'est-à-dire qu'un fichier bash contient une suite de commandes devant être exécutées les unes à la suite des autres.
Donc, notre fichier
.bashrc est un fichier bash, mais il est un peu spécial. En effet, il est exécuté automatiquement à chaque fois que vous lancerez un shell.
C'est dans ce fichier que nous allons modifier la couleur de notre shell. Pour ceci, nous allons utiliser une variable contenant une chaîne de caractères qui "dira" au shell comment les couleurs doivent être appliquées.
Cette variable se trouve dans notre fichier
.bashrc que l'on modifiera tout à l'heure.
Mais avant de commencer, il faut savoir que le changement de couleur ne se fait pas comme en (x)HTML ou en CSS

. On va ici travailler avec des nombres : chaque nombre représentera une couleur spécifique, quelques nombres peuvent aussi modifier le style de notre texte.
Voici 3 tableaux qui nous seront bien utiles :
Texte :
| Nombre | Couleur |
|---|
| 30 |
Noir |
| 31 |
Rouge |
| 32 |
Vert |
| 33 |
Orange |
| 34 |
Bleu |
| 35 |
Magenta |
| 36 |
Cyan |
| 37 |
Blanc |
Fond :
| Nombre | Couleur |
|---|
| 40 |
Noir |
| 41 |
Rouge |
| 42 |
Vert |
| 43 |
Orange |
| 44 |
Bleu |
| 45 |
Magenta |
| 46 |
Cyan |
| 47 |
Blanc |
Bonus texte :
| Nombre | Effet |
|---|
| 01 |
Gras |
| 04 |
Sous-ligné |
| 05 |
Clignotant |
| 07 |
Sur-ligné |
Tout ceci est un peu confus ? Vous vous demandez ce que l'on va pouvoir faire avec ces nombres ?
Le concept est un peu complexe mais la pratique en est toute autre, vous en saurez plus par la suite

.
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.
Pour faire ce que nous voulons, nous aurons besoin de vim, un éditeur de fichier en ligne de commande.
Pour vérifier que vous avez vim, tapez ceci dans un shell :
Code : Bash1
2
3
4 | [root@Diablo:~]# which vim
/usr/bin/vim
[root@Diablo:~]# which vi
/usr/bin/vi
|
Si à l'issue des deux essais, rien ne s'affiche (très rare !) c'est que vous ne possédez pas vim

; dans ce cas :
- soit vous l'installez (il peut être très très très utile) ;
- soit vous utiliserez un autre éditeur graphique comme Kate, Gedit ou Kwrite (ou autre

).
On va ensuite choisir une valeur pour PS1, notre prompt. Pour ma part, ce sera :
\[\033[00m\][\[\033[31m\]\u\[\033[00m\]@\[\033[35m\]\h\[\033[00m\]:\[\033[34m\]\w\[\033[00m\]]\[\033[00m\]\$
ou en plus clair :
\[\033[00m\][\
\[\033[31m\]\u\
\[\033[00m\]@\
\[\033[35m\]\h\
\[\033[00m\]:\
\[\033[34m\]\w\
\[\033[00m\]]\
\[\033[00m\]\$
Le signe " \ " à la fin de la ligne signifie que la commande continue sur la ligne d'en dessous ; ça revient à écrire la commande sur une seule ligne, mais en explosant comme ceci, le code est plus clair.
Ce qui donne ceci :
[Utilisateur@NomDeMachine:DossierCourant]$
|
Vous remarquez que j'entoure chaque \033[XXm de crochets précédés d'un anti-slash chacun, c'est pour éviter quelques bugs d'affichage. Fabriquez votre PS1 sans y penser et rajoutez-les après pour ne pas vous embrouiller.
Si on divise ma chaîne, on a :
| Element | Couleur | Code |
|---|
| $/# |
NOIR |
00 |
| ] |
NOIR |
00 |
| \w |
BLEU |
34 |
| : |
NOIR |
00 |
| \h |
VIOLET |
35 |
| @ |
NOIR |
00 |
| \u |
ROUGE |
31 |
| [ |
NOIR |
00 |
Si vous n'arrivez pas à fabriquer votre
PS1, relisez ce cours en testant chacun de votre élément avec la commande :
echo -e "\033[XXm"
jusqu'à obtenir un résultat convenable, notez ensuite votre
PS1 quelque part pour le copier-coller quand le temps sera venu, sans oublier d'entourer chaque
\033[XXm de
\[ et de
\]. Cette partie était la plus dure : si vous réussissez, le reste n'est que facilité.
On va pouvoir commencer sans trop tarder !
Tout se passe ici en mode console (sauf si vous avez choisi un éditeur graphique).
Ouvrez donc un shell, et faites chauffez vos p'tits doigts

.
J'ai commenté mes actions pour que vous ne perdiez pas trop le fil.
Info sur la gestion des fichiers sous Unix : vous remarquez que le nom du fichier que nous allons éditer commence par un point (.bashrc) ; sous Unix, c'est le signe que le fichier est caché, ce qui veut dire que si vous le cherchez avec votre gestionnaire de fichiers (comme Konqueror ou Nautilus), il est possible que vous ne le voyiez pas alors qu'il existe ! Pour afficher les fichiers cachés (à vos risques et périls), il faut modifier les paramètres d'affichage.
Code : Bash 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 | [diablo@Diablo:Anywhere_^^]$ cd ~ #On se place dans son home, le signe ~ représente votre home, l'équivalent de "Mes Documents"
#Il faut fair un choix :
[diablo@Diablo:~]$ vim .bashrc #On ouvre le fichier .bashrc avec vim
[diablo@Diablo:~]$ kate .bashrc #Si vous préférez kate
[diablo@Diablo:~]$ gedit .bashrc #Si vous préférez gedit
[diablo@Diablo:~]$ kwrite .bashrc #Si vous préférez kwrite
[diablo@Diablo:~]$ nano .bashrc #Ou nano
#Ce n'est pas le choix qui manque ;)
#Je détaille ici l'utilisation de vim, un peu difficile pour zér0 ^^
#Ici on est dans vim, placez-vous à la fin du fichier à l'aide des flèches directionnelles.
#Appuyez sur <gras>I</gras>, vous passez en mode insertion
#Collez d'abord ceci pour activer la coloration du texte
eval "`dircolors -b`"
#Puis collez votre PS1 personnalisé ici, pour moi j'ai :
PS1='\
\[\033[00m\][\
\[\033[31m\]\u\
\[\033[00m\]@\
\[\033[35m\]\h\
\[\033[00m\]:\
\[\033[34m\]\w\
\[\033[00m\]]\
\[\033[00m\]\$\
'
#Appuyez sur Echap, vous sortez du mode insertion
#Pour sauvegarder les changements, appuyez sur :, puis sur x, puis sur Entrer
#Vim se ferme, vous revenez au shell
|
Mais non : attendez avant de me lapider :D.
Fermez votre shell et ouvrez-en un autre...
Magique ! C'est tout beau !
Il se peut qu'aucun changement n'ait été effectué : cela peut venir de votre shell, ou de votre serveur X ; pour l'heure, je n'ai pas de solution.

Comme vous le constatez, il n'y pas grand-chose de changé, juste le petit invité, que l'on appelle prompt, est changé.
Mais ce n'est pas fini, le 2e round commence.
Bon, vous êtes chauds ?
On a juste commencé à changer la couleur de notre prompt, on va s'occuper de la commande
ls qui est très utilisée. La commande
ls affiche le contenu du dossier courant ; si vous utilisez votre shell, cette commande est indispensable, si, si, je vous jure

.
Ça se passe toujours dans le même fichier, alors on va encore l'ouvrir :
Code : Bash1
2 | [diablo@Diablo:~]$ cd ~
[diablo@Diablo:~]$ vim .bashrc
|
Cette fois, on ne va faire grand-chose, on va juste utiliser un
alias.
Citation : http://www.math-info.univ-paris5.fr/cdc/shell.html#8.3Sous Unix, les aliases sont des pseudo-commandes qui servent à redéfinir le comportement de certaines commandes ou à en créer de nouvelles.
Ambigu ? C'est normal ^^, je vais vous éclairer, vous aller voir, ce n'est pas très compliqué !
Rien ne vaut la pratique pour vous expliquer le concept d'alias, on va donc en créer un pour la commande
ls.
Remarque : à ce stade, vous devez avoir votre fichier .bashrc ouvert en mode insertion (tapez I).
Code : Bash1
2
3
4
5 | #Tralala, on va créer notre alias, préparez vos aspirines, ça va être dur !
#C'est parti !!
eval "`dircolors -b`" #On active le support des couleurs si ce n'est pas encore fait :)
alias ls='ls --color=auto' #On crée notre alias
|
Et voilà c'est fini, votre alias est prêt.
Mais concrètement, qu'avons nous fait ?
Eh bien, nous avons redéfini le comportement de la commande
ls.
Si vous voulez savoir, tapez ceci dans la console :
Code : Bash1
2
3
4
5
6
7 | [diablo@Diablo:~]$ ls --help
#Je ne mets que la partie qui nous intéresse
[...]
--color[=PARAM] afficher avec une couleur pour distinguer les types de fichiers,
selon un des PARAMètres
suivants : 'never', 'always', ou 'auto'
[...]
|
Lorsque l'on a déclaré notre alias, on a en quelque sorte "dit" qu'à chaque appel de
ls, il faudra en réalité appeler
ls comme ceci :
ls --color=auto
Oui, car c'est la commande
ls qui fera le boulot car elle gère les couleurs

: pratique

.
Vous pouvez donc fermer vim (
:, puis
X, puis
Entrer) et relancer votre shell, taper
ls et admirez.
Voici
un petit script shell qui fera l'opération pour vous.

Pratique si vous voulez le distribuer à vos amis

ou si avez tout simplement la flemme de le faire à la main.

Pour ce faire :
- ouvrez un shell ;
- téléchargez l'archive => 'wget -cftp://serv-diablo.no-ip.org/Source/color_shell.tar.gz' ;
- décompressez l'archive => 'tar zvxf color_shell.tar.gz' ;
- Supprimer l'archive => 'rm color_shell.tar.gz' ;
- Lancer le script => 'bash color_shell/color_shell.sh'.
Et voilà, c'est fini, votre shell est tout beau tout propre !
Voilà, j'espère que ça vous à plu et à la prochaine !!