(2 Antworten)
Vor 4 Jahren geschlossen.
Ich habe Folgendes zu meinem ~/.bashrc
hinzugefügt :
export PS1="\e[0;35m[\[email protected]\h \W]\$ \e[m "
echo -e "\e[0;35mYOU ARE ON THE LIVE SERVER !!\e[0m"
Leider wird es jetzt jedes Mal, wenn ich etwas langes in Bash einfüge, squiffy und Ghost tab
Zeichen erscheinen überall auf dem Bildschirm und Linien fressen sich gegenseitig auf, weiß jemand warum?
Akzeptierte Antwort:
Ich hatte in der Vergangenheit auch das Problem, dass ANSI-Farbcodes die Befehlszeilennavigation durcheinander brachten; Sie müssen die ANSI-Codes um \[ \]
setzen damit die Befehlsshell weiß, wie (nicht) sie als Teil der Eingabezeichenfolge berücksichtigt werden sollen.
Wie in:
export PS1="\[\e[0;35m\][\[email protected]\h \W]\$\[\e[m\] "
echo -e "\[\e[0;35m\]YOU ARE ON THE LIVE SERVER !!\[\e[0m\]"
Eine Erklärung, warum die Shell \[
benötigt und \]
:Um den Prompt an den richtigen Positionen in der Zeichenmatrix eines Terminals zu zeichnen, muss die Shell die korrekte Länge des Prompt-Strings kennen, das ist die Menge an druckbarem Zeichen, ich. e. keine Steuerzeichen oder Zeichenfolgen.
Die Shell weiß jedoch nicht, welche Zeichenfolgen das Terminal für druckbar hält. Daher muss man der Shell Hinweise geben, um zwischen druckbaren und nicht druckbaren Sequenzen zu unterscheiden, was der Zweck von \[
ist und \]
.