10 septembre 2009

Invite/Prompt Bash, couleur et line wrapping

Tags :

posté dans Configuration |

Encore un billet qui est davantage un mémo pour moi que pour vous ;)

Si vous tritouillez l'invite du shell bash en ajoutant des couleurs (mise en avant du nom du serveur pour pas se mélanger les pinceaux par exemple), pensez à entourer vos séquences d'échappement de crochets. Ainsi, ceci :

PS1='[\t] \u@\e[1;31m\h-plop1(wp)\e[0m:\w % '

devient ceci :

PS1='[\t] \u@\[\e[1;31m\]\h-plop1(wp)\[\e[0m\]:\w % '

Siiiiii.... regardez bien :

\e[1;31m

et hop

\[\e[1;31m\]

Cela permettra au shell de bien calculer le nombre de caractères qui composent une ligne et ainsi d'éviter d'écraser le début de la ligne avec des caractères surnuméraires et tout ce que cela implique (gestion des retours à la lignes, chaos dans l'affichage de l'historique des commandes, etc).

Article posté on Jeudi, 10 septembre 2009 à 9:34 dans Configuration. Vous pouvez suivre les commentaires sur cet article via un feed RSS 2.0. Commentaires et pings fermés.

Il y a actuellement 2 réponses pour “Invite/Prompt Bash, couleur et line wrapping”

  1. 1 Le 23 septembre 2009, Rémy à écrit :

    Bien vu l’artiste ! J’avais abandonné la coloration de mes prompt sur mes serveurs en fonction de l’environnement (recette en vert, prod en rouge etc) à cause de ce problème de retour à la ligne défectueux… j’ai appliqué ton conseil et ça marche beaucoup mieux ;)

  2. 2 Le 14 octobre 2009, MAIDEN à écrit :

    C’est vrai qu’en plus d’être esthétique (avec le bon jeu de couleurs) c’est trés pratique, l’invite de root pouvant s’afficher en rouge par exemple.

    Mais alors sous ZSH … J’ai réussit à trouver un PS1 kimarchebien au fil de mes périgrinations sur les pastebin, mais j’ai toujours pas saisi comment que ça marche.
    J’vais devoir m’y mettre sérieusement moi !

    Le plus étonnant, c’est que n’importe quelle chaine colorée dans un script Bash s’affiche correctement, mais pour le prompt, même avec les crochets encadrant les caractères d’échappement, ils sont affichés comme des caractères normaux.