date: 21 Jun 2008 title: Personnalisation de la console - 1° partie tags: bash, planet-libre Je vais commencer une série d'articles avec des petites astuces pour rendre la console Linux un peu plus agréable à utiliser (et pas que visuellement). Pour tout ceux qui se servent de la console régulièrement ou même occasionnellement, c'est toujours plus sympa d'avoir une console personnalisée. Je vais commencer par la ligne de prompt (la première ligne qui s'affiche quand on ouvre une console). Je vais vous montrer comment mettre ce que vous voulait dedans et la mettre en évidence. ## 1. Premières manips Pour commencer ouvrez le fichier .bashrc qui se trouve dans votre répertoire personnel avec l'éditeur que vous voulez. Je prend ici nano qui est installé sur la plupart des distro GNU-Linux : $ nano .bashrc Ici se trouve toute la configuration de votre console. Dans notre cas, on va s'intéresser à la variable PS1 : c'est elle qui contient la ligne de prompt. Chercher la dans votre fichier, elle doit être à peu près au milieu et le début doit ressembler à ça : PS1='${debian_chroot:+($debian_chroot)} En fait si vous regardez bien il y en a 3, dont au moins une de commentée (avec un croisillon (#) devant pour la désactivée). On va donc commenter les 2 premières lignes PS1 et décommenter la troisième pour avoir la ligne avec un peu de couleur. Vous devriez avoir quelque chose comme ça : # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color) # PS1='${debian_chroot:+($debian_chroot)}[\033[01;32m]u@h[\033[00m]:[\033[01;34m]w [\033[00m]$ ' ;; *) # PS1='${debian_chroot:+($debian_chroot)}u@h:w$ ' ;; esac # Comment in the above and uncomment this below for a color prompt PS1='${debian_chroot:+($debian_chroot)}[\033[01;32m]u@h[\033[00m]:[\033[01;34m]w [\033[00m]$ ' Enregistrez le fichier et réouvrez une console pour voir se que ça donne :) ## 2. Comment changer les informations données par le prompt ? Il est en effet possible de mettre les informations que l'on veut dans cette ligne. Par défaut, si on regarde le contenu de PS1 de plus près, on voit : * beaucoup de chiffre entre crochet []. On s'en occupera plus tard... :) * u : indique le login sous lequel vous vous êtes connecté. * h : le nom de l'ordinateur hôte sous lequel vous vous êtes connecté. * w : le répertoire courant dans lequel vous êtes * $ : les droits que vous avez. Si vous êtes un utilisateur normal, la console vous affichera un $, sinon si vous êtes root (le superutilisateur) vous aurez un #. Mais il existe d'autres informations que l'on peut rajouter dans la ligne de prompt. Voici une liste, à vous de choisir ce que vous voulez mettre dedans, ou enlever. * a : le bip système (celui créé par la carte mère qui est plus ou moins agréable a entendre) * d : la date * n : saut de ligne * t : heure au format 24h * # : numéro de la commande (à la fin de la journée vous pourrez savoir combien de commande vous avez tapé :P ) * \ : caractère antislash (). Tous les autre caractères ( : ; , < > etc...) peuvent être insérés sans les précéder d'un antislash. J'ai listé les principales informations utiles. Beaucoup d'autres existent comme la version de bash, l'heure dans d'autre formats... Je vous conseille aussi de garder au moins les informations par défaut car elle sont assez importantes. Après si vous êtes tout seul à vous connecté sur votre ordi et que vous ne vous connecté jamais sur d'autre ordi (via ssh par exemple) vous pouvez virer u et h. À vous de choisir... ## 3. Mettre en forme le texte Vous allez me dire c'est bien beau il y a de la couleur, mais on ne peut pas en changer ? Bien sur que si ! Et on peut même aller plus loin... Voici le code de couleurs que vous devez utiliser (ce code est valable pour tout les scripts bash d'une manière générale donc si vous voulez coloré votre script vous devrez utiliser ce code) : * noir : 30 * rouge : 31 * vert : 32 * jaune : 33 * bleu : 34 * magenta : 35 * cyan : 36 * blanc : 37 Ce code correspond à la couleur de police. Pour la couleur de fond, il suffit de rajouter +10 aux valeurs. De la même manière, 04 permet d'écrire en souligné, 05 fait clignoter le texte et 07 surligne le texte. Mais où le met on se code ? Vous avez sûrement remarqué que dans la variable PS1, il y avais ceci (par exemple) : [\033[01;32m] * [ indique le commencement d'information non imprimable à l'écran, c'est à dire en général des information de formatage des caractères (souligné, couleurs...). * \033 est le caractère echap en ASCII (il doit obligatoirement y être) * Ensuite il y a un [ suivi du code à mettre.  On peut en combiner plusieurs à condition de les séparer pas un ; . * Enfin, on termine par m] Je pense que si je donne un petit exemple, ça ne sera pas de trop ;) : Admettons que je veuille avoir tout la ligne de prompt soulignée avec le nom de l'ordi hôte en rouge et le reste inchangé. Ça donne : PS1='${debian_chroot:+($debian_chroot)}#>[\033[04;32m]u@[\033[31m]h[\033[00m]:[\ 033[04;34m]w[\033[00m]$ ' Petite astuces : vous remarquerez aussi que l'on remet tout par défaut à la fin de la ligne : [\033[00m] . Si vous l'enlever, la commande que vous taperez après le prompt s'affichera suivant les derniers paramètre de formatage. Voila pour terminer voici ce que ça donne chez moi : ![aperçu du résultat dans la console](http://univers-libre.net/images/persoConsole.png) et ma variable PS1 : PS1='${debian_chroot:+($debian_chroot)}[\033[33m]#°commande - tn[\033[32m]u[\033[00m]@[\033[04;32m]h[\033[00m]:[\033[01;34m]w[\033[00m]$ ' La deuxième partie portera, je pense, sur les alias de commandes