Invite/Prompt Bash, couleur et line wrapping

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