(9 réponses)
Fermé il y a 3 ans.
Souvent, lorsque je commence à regarder l'historique des commandes, certains caractères d'une commande affichée ne sont pas effacés, par exemple :
Que se passe-t-il :
prompt$ some_command
prompt$ some_commanother_command
Qu'est-ce qui aurait dû se passer :
prompt$ some_command
prompt$ another_command
Je ne peux pas effacer ces caractères et bash les ignore lors de l'exécution de la commande. Ils disparaissent également lorsqu'une nouvelle invite est affichée (après avoir appuyé sur Enter
par exemple).
J'ai demandé à d'autres personnes qui travaillent sur Linux sur mon lieu de travail et ils ont dit qu'ils avaient parfois ce problème aussi, mais ils n'avaient aucune idée de la façon de résoudre ce problème.
J'ai Ubuntu 11.10 et j'utilise guake. Voici ma PS1
:
e[0;31mu A ${PWD##*/}e[0;32m$(parse_git_branch)e[0;31m$e[m
où parse_git_branch
est
parse_git_branch () {
git name-rev HEAD 2> /dev/null | sed 's#HEAD (.*)# (1)#'
}
Autant que je sache, mes collègues ont ce problème même avec une PS1 moins "fantaisie".
Réponse acceptée :
Utilisez [...]
autour des parties de PS1 qui ont une longueur de 0. Cela aide bash à obtenir la bonne longueur d'invite. Même avec cette mesure, votre ligne de commande peut être gâchée lors de l'utilisation de caractères multi-octets (du moins la mienne le fait). Appuyez sur Ctrl+L aide également dans de tels cas (mais efface l'écran en même temps).