17 votes

Correction des bogues d'affichage des retours à la ligne et des retours arrière de bash sous Mac OS X ?

Lorsque j'ouvre Terminal (sur Mac OS X 10.5.8) et que je tape une longue ligne de commande : alt text

...le texte ne passe pas à la ligne suivante lorsqu'il s'enroule : alt textalt text

De même, parfois, lorsque je tape une commande et qu'ensuite je fais un retour arrière (ou une flèche vers le haut ou ^U) : alt text

...la ligne entière n'est pas effacée et je ne peux pas revenir en arrière au-delà d'un certain point : alt textalt text

S'agit-il d'un bogue connu de bash (sur Mac OS X) ? Existe-t-il un correctif ?

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. Changement :

export PS1='\[\033[1;34m\]\$\]\033[0m\] '

...dans mon .bashrc à :

export PS1='\[\033[1;34m\]\$\[\033[0m\] '

...a résolu le problème.

1 votes

+1 pour les plus belles captures d'écran d'un terminal que j'ai jamais vues.

2 votes

Les deux lignes de code que vous avez montrées dans votre mise à jour sont identiques.

0 votes

Bien vu, @Magne. Cela fait quatre ans que je n'ai pas regardé ça, donc je ne m'en souviens pas précisément, mais je suppose que le "avant" manquait un \] .

21voto

Dot Net Pro UK Points 761

Le comportement est cohérent avec le fait d'avoir des codes de console dans votre invite (pour changer la couleur, etc.) et de ne pas les marquer correctement pour que bash sache qu'ils sont invisibles.

Avant toute autre chose, faites ceci :

PS1='\w\$ '

Et puis réessayer. Si le problème est résolu, alors mes soupçons sont corrects.

Chaque séquence de code de console doit être délimitée par \[ y \] dans la variable PS1. Ils indiquent à bash que ce qui s'y trouve ne déplace pas la position du curseur. Lisez le manuel de bash pour plus d'informations.

0 votes

C'était le problème. Merci ! Je vais mettre à jour ma question avec les détails.

0 votes

Et si ça ne résout pas le problème ?

4voto

Terri Smiley Points 1

Pour aider à générer une invite aseptisée, essayez http://www.kirsle.net/wizards/ps1.html c'est assez génial. Fais juste attention aux parenthèses dans ton invite, il essaie de s'en échapper ou quelque chose comme ça.

0 votes

+1 Bien que la réponse de @Juliano soit techniquement correcte, c'est ce lien qui définit la bonne réponse. tput qui a corrigé la nouvelle ligne, la nouvelle ligne `` et d'autres corrections de l'historique et de l'espacement arrière que l'utilisation d'autres codes ANSI n'a pas permis de corriger.

0 votes

Cet outil est génial ! Merci de l'avoir partagé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X