Cette question est un suivi de la réponse à cette question concernant la modification de la couleur de l'invite d'entrée de l'utilisateur dans la borne XFCE: borne Ubuntu (xfce): Commandes d'entrée Couleur de police Différente de texte de sortie
Depuis que je ne suis pas autorisé à commenter (min 50 de la réputation), je devais ouvrir une nouvelle question.
Après la réponse, j'ai utilisé la commande suivante:
PS1='\e[1;36m\u@\h \W]\$\e[0m '
Cela conserve le format de la même manière que la valeur par défaut, mais change la couleur à cyan, comme prévu.
Cependant, je reçois un comportement très étrange. Parfois, le curseur sautera sur la ligne d'entrée, et parfois, il montrera un ancien texte qui ne devrait pas être là. Parfois, il se divise en deux lignes de sorte que je continue à taper sur la ligne ci-dessus. Par example:
Dis que je veux faire:
$ cd /some/path/to/a/directory
mais comme je le tape, ça devient comme ça:
$ cd /some/pa/directoryath/to
si je tape Entrée, il va toujours lire la commande correctement, ce n'est que l'affichage qui est faux. Quand cela se produit, si j'essaie d'utiliser le backpace, il se transformera en quelque chose comme ça:
$ cd /some/pa/directoryath/to
$ cd /some/pa/directo
$ cd /some/pa -------- at this point I cannot erase anything else,
in the display some of the characters are still
lingering, but if I type enter there is nothing on the input line
Un autre exemple, disons que j'ai les suivants affichés:
$ ls
folder1 folder2 folder3 folder4
et maintenant, je veux taper une autre commande, alors ce qui suit pourrait arriver:
$ ls
folder1 folder2 folder3 folrectory
$ cd /some/path/to/a/di
Encore une fois, si je tapis entré, l'entrée est reconnue correctement, mais l'affichage est vissé.
Le problème survient le plus souvent, mais pas exclusivement, lorsque je saisie la flèche vers le haut pour obtenir une commande précédente ou lorsque la ligne d'entrée s'approche du bord droit de la fenêtre.
Vous devez joindre les séquences d'échappement terminal, et seulement celles, entre \[
et \]
.
Voir la page manuelle bash
, dans la section "Invite".
À la place de
PS1='\e[1;36m\u@\h \W]\$\e[0m '
vous devriez écrire
PS1='\[\e[1;36m\]\u@\h \W]\$\[\e[0m\] '