Frage

Ich werde von Linux verwendet, um eine farbige Eingabeaufforderung in meinen Shells zu haben, und möchte dies auch in meinem OS X -Terminal implementieren. Der Terminal reagiert jedoch unterschiedlich. Wenn ich meinen normalen PS1 -Code benutze, wird die rechte Seite einer Zeile an einem seltsamen Punkt abgeschnitten (sicherlich nicht das rechte Ende des Terminalfensters). Und auch die nächste Zeile zeigt sich nicht in der nächsten Zeile, sondern in derselben Zeile.

Erwartete Reaktion:

erik2:~[06:46 am]$ expectedexpectedexpectedexpectedexpectedexpectedexpect
edexpected_

Wirkliche Reaktion:

ectedexpected_am]$ expectedexpectedexpectedexpectedexp

Ist das normal für Terminal? Gibt es eine Alternative? Habe ich gerade etwas falsch codiert? Schauen Sie sich meinen PS1 -Code an:

export PS1="\033[0;34m\u:\W\e[0;32m[\@]\e[m\033[0;34m$\033[m "
War es hilfreich?

Lösung

Sie müssen den nicht druckenden Teilen der Eingabeaufforderung entkommen, indem Sie sie mit ihnen umgeben \[…\].

export PS1="\[\033[0;34m\]\u:\W\[\e[0;32m\][\@]\[\e[m\033[0;34m$\033[m\] "

Andernfalls wird Readline über den verbleibenden Platz in der Befehlszeile verwirrt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit apple.stackexchange
scroll top