
Ich habe gnome-terminal
es 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:
Die Ausgabe sieht so aus, obwohl die erste Zeile weiß sein sollte und weiß war, bis ich den eingegebenen Befehl auch grün machte:
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 --update
die 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 trap
den 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 trap
an das DEBUG
Signal 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).