J'ai configuré une PS1
invite bash de fantaisie à deux lignes , avec le nom du serveur, l'heure, le nom d'utilisateur et d'autres variables utiles.
PS1="\n\[\033[1;34m\]\342\226\210\342\226\210 \u @ $SERVER_NAME""$BBlue"" \w""$Color_Off \n\[\033[0;36m\]\342\226\210\342\226\210 \d \t $ \[\033[0;39m\]"
Source complète de Github ici .
Le problème est que les longues lignes sont souvent enroulées autour d'elles, ce qui signifie que la nouvelle ligne chevauche la précédente.
Le problème est incohérent: certaines lignes sont encapsulées correctement, d'autres non.
Une idée de comment résoudre ce problème?
Trouvé cette solution en ligne, qui a suggéré une fermeture des parenthèses aux variables de couleur:
Change ça:
à:
J'ai engagé le changement - j'espère que cela fonctionne comme prévu.
la source
\[
\]
, donc vous ne pouvez pas simplement terminer toutes les couleurs ansi-escape avec\]
car si ce n'est pas le cas\[
. Lorsque vous mettez des caractères non imprimables, vous devez simplement les envelopper\[
\]
(par exemplePS1='\[\e[32;1m\] green prompt \[\e[0m\] $'
).Ma solution préférée au problème du chevauchement des longues lignes dans bash PS1 est d'avoir un
\n
à la fin des lignes d'invite PS1.par exemple
Si vous voulez tous mes autres trucs - temps, utilisateur, hôte, répertoire et branche git (!), Vous pouvez utiliser ceci (mac ou linux):
/unix//a/124012/10043
la source
if [[ $(git rev-parse --is-inside-git-dir 2> /dev/null) ]]; then branch="$( git symbolic-ref --short -q HEAD 2> /dev/null )"; fi
. C'est une norme lorsque vous mettez git dans un script et que vous évaluez le nom de la branche d'après ce que j'ai lu précédemment.