Wie lösche ich die Formatierung von PS1 im Gnome-Terminal?

Wie lösche ich die Formatierung von PS1 im Gnome-Terminal?

Ich habe gnome-terminales so konfiguriert .bashrc, dass es benutzerdefinierte Farben hat:

PS1='${debian_chroot:+($debian_chroot)}\[\033[00;37m\][\[\033[00;32m\]\t\[\033[00;37m\]] \[\033[01;34m\]\u\[\033[00;37m\]@\[\033[01;34m\]\h\[\033[00;37m\]:\[\033[01;34m\]\w\[\033[01;32m\]$ '

Und das bedeutet, dass bei der Ausführung etwa Folgendes gilt:

Bildbeschreibung hier eingeben

Die Ausgabe sieht so aus, obwohl die erste Zeile weiß sein sollte und weiß war, bis ich den eingegebenen Befehl auch grün machte:

Bildbeschreibung hier eingeben

Wie kann ich also dafür sorgen, dass die Farbe des Ausgabetextes nicht davon beeinflusst wird, dass ich die Befehlsfarbe auf Grün eingestellt habe? Ich verwende Ubuntu GNOME 15.04 mit GNOME 3.16.

Informationsaktualisierung:

Mir ist aufgefallen, dass sudo rkhunter --nocolor --updatedie Ausgabe beim Ausführen vollständig grün ist.

Antwort1

Das Problem besteht darin, dass Sie den Befehl zwar in Grün einstellen, den Farb-Escape-Code jedoch nicht schließen. Daher werden alle nachfolgenden Zeilen, einschließlich der Ausgabe aller Befehle, auf die keine eigene Formatierung angewendet wurde, in dieser Farbe angezeigt. Als Workaround (Quelle), können Sie trapden Schließcode an das DEBUG-Signal ausgeben. Fügen Sie diese Zeile zu Ihrem~/bashrc

trap 'printf "\e[0m" "$_"' DEBUG

Das wird gedruckt \e[0m(wodurch der offene Farbcode geschlossen wird). Da es trapan das DEBUGSignal gepusht wird, wird es vor jedem Befehl ausgeführt, den Sie ausführen. Also zwischen dem Drücken Enterund dem tatsächlichen Ausführen des Befehls. Wie in erklärt man bash:

Wenn eine Sigspec DEBUG lautet, wird das Befehlsargument vor jedem einfachen Befehl, für Befehle, Case-Befehle, Select-Befehle, jeder Arithmetik für Befehle und vor der Ausführung des ersten Befehls in einer Shell-Funktion ausgeführt (siehe SHELL-GRAMMATIK oben).

verwandte Informationen