Lorsque j'ouvre Terminal (sur Mac OS X 10.5.8) et que je tape une longue ligne de commande:
... le texte ne passe pas à la ligne suivante lorsqu'il s'enroule:
De plus, parfois lorsque je tape une commande, puis retour arrière (ou flèche vers le haut ou ^ U):
... toute la ligne n'est pas effacée et je ne peux pas revenir en arrière au-delà d'un certain point:
S'agit-il d'un bogue bash connu (sur Mac OS X)? Y a-t-il une solution?
Mise à jour: Juliano était correct, le problème était dû à une délimitation incorrecte d'une séquence de code de console dans ma variable PS1. En changeant:
export PS1='\[\033[1;34m\]\$\]\033[0m\] '
... dans mon .bashrc
à:
export PS1='\[\033[1;34m\]\$\[\033[0m\] '
...résolu le problème.
\]
.\]
au lieu de '['Réponses:
Le comportement consiste à avoir des codes de console dans votre invite (pour changer la couleur, etc.) et à ne pas les marquer correctement pour que bash sache qu'ils sont invisibles.
Avant toute chose, procédez comme suit:
Et puis réessayez. Si le problème est résolu, mes soupçons sont corrects.
Chaque séquence de code de console doit être délimitée avec
\[
et\]
dans la variable PS1. Ils disent à bash que tout ce qui s'y trouve ne déplace pas la position du curseur. Lisez le manuel bash pour plus d'informations.la source
Pour aider à générer une invite filtrée, essayez http://www.kirsle.net/wizards/ps1.html, c'est assez génial. Soyez juste prudent avec les crochets dans votre invite, il essaie de leur échapper ou quelque chose.
la source
tput
commandes correctes - ce qui a corrigé les sauts de ligne, les sauts de ligne et autres "historique + retour en arrière" que l'utilisation d'autres codes ANSI ne pouvait pas corriger.