web-dev-qa-db-fra.com

Les lignes longues se chevauchent dans l'invite personnalisée de Bash PS1

J'ai configuré une invite fantaisiste à deux lignes PS1 bash, 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\]"

enter image description here

Source complète de Github ici .

Le problème est que les longues lignes sont souvent enroulées autour d'elles-mêmes, ce qui signifie que la nouvelle ligne chevauche la précédente.

Le problème est incohérent: certaines lignes sont correctement mises en forme, d'autres pas.

Une idée comment résoudre ce problème?

13
Adam Matan

Voici mon fantaisie PS1 à deux lignes pour bash Prompt.

PS1

\[\e[1;32m\]\H\[\e[0m\] :: \[\e[1;30m\]\d\[\e[0m\] \@ :: \[\e[1;33m\]\w\n\[\e[1;34m\]\u $ \[\033[0m\]

Alors voici ce que j'ai fait. Si c'était ma couleur:

\e[1;32m

Je l'ai changé pour:

\[\e[1;32m\]

Essentiellement, vous devez l'inclure dans:

\[$mycolor\]

Commander ceci réponse .

15
varunyellina

Trouvé cette solution en ligne, qui suggérait des crochets de fermeture pour les variables de couleur:

Change ça:

Black='\e[0;30m'        # Black
Red='\e[0;31m'          # Red
Green='\e[0;32m'        # Green

à:

Black='\e[0;30m\]'        # Black
Red='\e[0;31m\]'          # Red
Green='\e[0;32m\]'        # Green

J'ai engagé le changement - espérons que cela fonctionne comme prévu.

7
Adam Matan

Ma solution préférée au problème du chevauchement des lignes longues dans PS1 bash est d’avoir un \n à la fin des lignes d’invite PS1.

par exemple.

enter image description here

Si vous voulez tous mes autres trucs - heure, utilisateur, hôte, répertoire et branche git (!), Vous pouvez utiliser ceci (mac ou linux):

https://unix.stackexchange.com/a/124012/1004

0
Michael Durrant