Wenn ich Terminal öffne (unter Mac OS X 10.5.8) und eine lange Befehlszeile eingebe:
... der Text geht nicht in die nächste Zeile, wenn er umbrochen wird:
Manchmal, wenn ich einen Befehl eingebe und dann die Rücktaste (oder den Aufwärtspfeil oder ^ U) drücke:
... die gesamte Zeile wird nicht gelöscht und ich kann nicht weiter als bis zu einem bestimmten Punkt zurücksetzen:
Ist dies ein bekannter Bash-Fehler (unter Mac OS X)? Gibt es eine Lösung?
Update: Juliano war korrekt, das Problem wurde durch falsches Abgrenzen einer Konsolencodesequenz in meiner PS1-Variablen verursacht. Ändern:
export PS1='\[\033[1;34m\]\$\]\033[0m\] '
... in meinem .bashrc
an:
export PS1='\[\033[1;34m\]\$\[\033[0m\] '
...Problem gelöst.
\]
.\]
statt '[`Antworten:
Das Verhalten ist konsistent damit, dass Sie Konsolencodes in Ihrer Eingabeaufforderung haben (um die Farbe usw. zu ändern) und diese dann nicht richtig markieren, damit bash weiß, dass sie unsichtbar sind.
Tun Sie vor allem Folgendes:
Und dann nochmal versuchen. Wenn das Problem behoben ist, sind meine Vermutungen richtig.
Jede Konsolencode-Sequenz muss mit
\[
und\]
in der PS1-Variablen abgegrenzt werden. Sie sagen bash, dass alles, was sich dort befindet, die Cursorposition nicht verschiebt. Lesen Sie das Bash-Handbuch für weitere Informationen.quelle
Versuchen Sie http://www.kirsle.net/wizards/ps1.html, um eine bereinigte Eingabeaufforderung zu generieren. Es ist ziemlich beeindruckend. Sei einfach vorsichtig mit Klammern in deiner Eingabeaufforderung, es versucht ihnen zu entkommen oder so.
quelle
tput
Befehle - mit festen Zeilenumbrüchen, `` Zeilenumbrüchen und anderen Korrekturen für "history + backspacing", die mit anderen ANSI-Codes nicht behoben werden konnten.