Aller au menu - Aller au contenu

[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)
Avatar
Auteur : utb_diablo
Note : 18 / 20 (7 votes)
Visualisations : 10 049

Plus d'informations Plus d'informations
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 :

Image utilisateur

à ça :

Image utilisateur

Un peu plus accueillant, non ?
Bon, alors, qu'est-ce qu'on attend :p ?
Sommaire du tutoriel :
Icône du chapitre

Un peu de théorie

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 :

NombreCouleur
30 Noir
31 Rouge
32 Vert
33 Orange
34 Bleu
35 Magenta
36 Cyan
37 Blanc

Fond :

NombreCouleur
40 Noir
41 Rouge
42 Vert
43 Orange
44 Bleu
45 Magenta
46 Cyan
47 Blanc

Bonus texte :

NombreEffet
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 ;) .

Pilule bleue ou rouge ?

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
1
[diablo@Diablo:~]$

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 :p .
Ne vous fiez pas à la coloration syntaxique du zCode, l'invite est en noir chez moi. :p

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 :p .

Voici les parties que j'ai choisies :


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.

Bash
PS1='[\u@\h:\w]\$ '


On peut aisément ( :p ) deviner la signification de cette chaîne de caractères.
On remarque donc certains signes spéciaux :

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"


L'option -e signale à echo que l'on utilise des caractères spéciaux : essayez sans et vous verrez . ;)

Attends : tu nous fais quoi, là ? o_O


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
1
eval "`dircolors -b`"

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 PS1Pour test avec echoAffichera
\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. :p

Le cahier des charges

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 : Bash
1
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 :

ElementCouleurCode
$/# 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é. :)

C'est parti !

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


Hé bah il n'y a rien de changé du tout ! Remboursez !! :pirate:


Mais non : attendez avant de me lapider :D.
Fermez votre shell et ouvrez-en un autre...

Remarque : vous pouvez aussi exécuter le fichier .bashrc à la main.
Il suffit de faire : Code : Bash
1
bash ~/.bashrc

Avec cette ligne de code, on demande à bash d'exécuter notre fichier .bashrc.


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. :)

Toujours plus fort, toujours plus beau !

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 :D .

Ça se passe toujours dans le même fichier, alors on va encore l'ouvrir :

Code : Bash
1
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.3
Sous 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 : Bash
1
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 : Bash
1
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 :D : pratique ;) .

Vous pouvez donc fermer vim (:, puis X, puis Entrer) et relancer votre shell, taper ls et admirez. ^^

Script

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 :

Et voilà, c'est fini, votre shell est tout beau tout propre !

Voilà, j'espère que ça vous à plu et à la prochaine !!
Retour en haut Retour en haut


Créé : le 25/04/2007 à 05:41:15
Modifié : le 22/08/2008 à 16:09:47
Avancement : 100%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 154 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1345s (0.1243s)