Version en ligne

Tutoriel : Personnalisez votre shell en couleur !

Table des matières

Personnalisez votre shell en couleur !
Un peu de théorie
Pilule bleue ou rouge ?
Le cahier des charges
C'est parti !
Toujours plus fort, toujours plus beau !

Personnalisez votre shell en couleur !

Un peu de théorie

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 ?

Un peu de théorie

Pilule bleue ou rouge ?

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.

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


Pilule bleue ou rouge ?

Pilule bleue ou rouge ?

Un peu de théorie Le cahier des charges

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 :

[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 .

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"

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 :

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 !

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


Un peu de théorie Le cahier des charges

Le cahier des charges

Pilule bleue ou rouge ? C'est parti !

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 :

[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\]\$

Ce qui donne ceci :

[Utilisateur@NomDeMachine:DossierCourant]$

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


Pilule bleue ou rouge ? C'est parti !

C'est parti !

Le cahier des charges Toujours plus fort, toujours plus beau !

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

[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 !

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


Le cahier des charges Toujours plus fort, toujours plus beau !

Toujours plus fort, toujours plus beau !

C'est parti !

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 :

[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.

#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 :

[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. ^^

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


C'est parti !