Ich habe ein Farbschema, das mir gefällt, wenn ich mich in einem Terminal befinde, aber ich ssh in den Computer, an dem ich arbeite, aus mehreren Quellen (lokal, PuTTY, mein Netbook usw.) und ich möchte das gleiche Farbschema beibehalten . Ist das möglich?
Ich möchte es besonders in PuTTY; Es ist schwierig, PuTTY-Farben zu ändern.
Akzeptierte Antwort:
Farben in Terminals werden in zwei Schritten bestimmt:
- das im Terminal laufende Programm weist das Terminal an, eine bestimmte Farbnummer zu verwenden;
- das Terminal übersetzt jede Farbnummer in einen Farbwert.
Xterm hat eine Escape-Sequenz, um den mit einer Farbnummer verknüpften Farbwert zu ändern. Ich erinnere mich nicht, ob PuTTY diese Sequenz unterstützt; Ich weiß, dass Mintty das tut.
set_color_value () {
printf "\e]4;$1;$2\a"
}
set_color_value 4 '#6495ed' # set color 4 (blue) to CornflowerBlue
Diese Einstellungen überleben einen Terminal-Reset nicht. Sie können diese Schwierigkeit überwinden, indem Sie die Sequenz zum Ändern der Cursorkonfiguration an die Reset-Zeichenfolge Ihres Terminals anhängen.
- Speichern Sie auf einem Termininfo-basierten System mit ncurses die Termininfo-Einstellungen Ihres Terminals in einer Datei mit
infocmp >>~/etc/terminfo.txt
. Bearbeiten Sie die Beschreibung, um denrs1
zu ändern (Grundreset) Ablauf, z.B. ersetzen Siers1=Ec
vonrs1=EcE]4;4;#6495edE\
. Bei einigen Programmen und Einstellungen müssen Sie möglicherweise denrs2
ändern (vollständiger Reset) ebenfalls. Kompilieren Sie dann die terminfo-Beschreibung mittic ~/etc/terminfo.txt
(dies schreibt unter das Verzeichnis$TERMINFO
, oder~/.terminfo
falls nicht gesetzt). - Auf einem Termcap-basierten System holen Sie sich die Termcap-Einstellungen aus Ihrer Termcap-Datenbank (normalerweise
/etc/termcap
). Ändern Sieis
(Grundreset) undrs
(vollständiger Reset) Sequenzen zum Anhängen Ihrer Einstellungen, z.:is=EcEcE]4;4;#6495edE\:
. Legen Sie dasTERMCAP
fest Umgebungsvariable auf den bearbeiteten Wert (beginnend und endend mit:
).
Jetzt können Sie so etwas in Ihr ~/.profile
einfügen :
if [ "$(ps -p $PPID -o comm=)" = sshd ] &&
[ "$TERM" = "xterm" ]; then
set_color_value … # set color scheme
TERMCAP=… # if necessary
fi