Wenn ich einen Remote-Server anschalte, möchte ich, dass sich die Farben des Terminals ändern. Ich verwende setterm
für meine Remote ~ / .bashrc-Datei, um dies zu erledigen. Bei I exit
werden die Terminalfarben jedoch nicht auf die lokalen Farben zurückgesetzt.
Ich habe das Problem gelöst, bin mir aber nicht sicher, ob es die beste Lösung ist. Das könnte ich mir einfallen lassen.
Im ~ / .bash_logout auf dem Remote-Server habe ich Folgendes angegeben:
echo -e "\033[0m"
/usr/bin/clear
Nur aus Neugier: Kennt jemand einen besseren Weg? (Ich habe die echo -e "\033[0m"
Zeile von http://edoceo.com/liber/linux-bash-shell )
tput
stattdessen die Farben zu ändern. Schlag es nach.PS1
)?Antworten:
Besser:
tput sgr0
ist normalerweise das Äquivalent vonecho -en "\e[0m"
Der Unterschied besteht darin, dass sich die Verwendung von tput anpasst, wenn der Terminaltyp nicht ANSI ist - und er ordnungsgemäß eingerichtet wurde.
man 5 terminfo
für mehr Codes zu verwenden.Dort finden Sie "Zurücksetzen",
tput reset
sollte also funktionieren.(Die TEST-Ausdrucke sollten vertauschte Hintergrund- / Vordergrundfarben haben, können hier nicht angezeigt werden - nur "emuliert")
Habe eine andere Option dafür gefunden , eine weniger geekige Art:
Das Paket util-linux (unter Ubuntu) enthält
setterm
(Shell-Dienstprogramm).Geben
setterm --help
Sie ein und finden Sie die verfügbaren Optionen.Die IST-Ausgabe von
tput sgr0
... hängt davon ab, wie Ihr Terminal eingerichtet ist, z
für die oben genannten.
Weitere Informationen finden Sie hier: https://en.wikipedia.org/wiki/Terminfo
Programmiererhandbuch für ncurses - Google Books
Hinweis: ncurses bietet Schnittstellen für termcap, terminfo und natürlich curses.
quelle
echo -e "\e \033 \x1b " | od -t x1z
- Was ist am besten lesbar?tput sgr0
gibt etwas anderes zurück als\e[0m
, sieh dir das an:a=$(tput sgr0); set | grep ^a=
und sieh dir das Ergebnis an. Können Sie auch bitte angeben, für was die entsprechendesetterm
Option ist\e[0m
?\e[0m
oder gleich\e[m
für ANSI Typ - Terminals, könnte tput sgr0 geben Ihnen etwas ganz anderes , wenn Ihr Terminal ist nicht ANSI. Sie können selbst für ANSI-Terminals nicht sicher sein, da das von Ihnen tatsächlich verwendete Terminal möglicherweise in der terminfo-Datenbank anders eingerichtet wurde.TERM=ansi a=$(tput sgr0); set | grep ^a=
und das Ergebnis ista=$'\E[0;10m'
. Dies sieht anders aus als\e[0m
\e(B\e[m
- rechnen Sie mit Unterschieden!Ich glaube, Sie suchen nach "Reset" -Konsolenbefehl
quelle
Möglicherweise finden Sie dies in der entfernten .bash_logout-Datei angemessener:
Es kann gut sein, dies in jedem .bash_logout als allgemeine bewährte Methode (und vielleicht sogar in ~ / .profile) zu haben.
quelle
Wenn Sie die gewünschten Farben in das ~ / .bashrc des Remote-Kontos einfügen, sollte dies beim Anmelden wirksam werden und beim Beenden zu Ihren lokalen Einstellungen zurückkehren.
quelle