Ssh

我可以將本地機器的終端顏色設置為使用我 ssh 進入的機器的顏色嗎?

  • January 16, 2011

當我在終端中時,我有一個我喜歡的配色方案,但我從多個來源(本地、PuTTY、我的上網本等)進入我工作的機器,並且我想在整個過程中保持相同的配色方案. 這可能嗎?

我特別想在 PuTTY 中使用它;很難改變 PuTTY 顏色。

終端中的顏色分兩步確定:

  • 終端中執行的程序告訴終端使用某個顏色編號;
  • 終端將每個顏色編號轉換為顏色值。

Xterm 有一個轉義序列來更改與顏色編號相關的顏色值。我不記得 PuTTY 是否支持這個序列;我知道明蒂知道。

set_color_value () {
 printf "\\e]4;$1;$2\\a"
}
set_color_value 4 '#6495ed'  # set color 4 (blue) to CornflowerBlue

這些設置不會在終端重置後繼續存在。您可以通過將游標配置更改序列附加到終端的重置字元串來克服這個困難。

  • 在使用 ncurses 的基於 terminfo 的系統上,將終端的 terminfo 設置保存到帶有infocmp >>~/etc/terminfo.txt. 編輯描述以更改rs1(基本重置)順序,例如替換rs1=\Ecrs1=\Ec\E]4;4;#6495ed\E\\。對於某些程序和設置,您可能還需要更改rs2(完全重置)。tic ~/etc/terminfo.txt然後用(這寫在目錄下$TERMINFO,或者~/.terminfo如果未設置)編譯 terminfo 描述。
  • 在基於 termcap 的系統上,從您的 termcap 數據庫中獲取 termcap 設置(通常是/etc/termcap)。更改is(基本重置)和rs(完全重置)序列以附加您的設置,例如:is=\Ec\Ec\E]4;4;#6495ed\E\\:. 將TERMCAP環境變數設置為編輯後的值(以 開頭和結尾:)。

現在你可以把這樣的東西放在你的~/.profile

if [ "$(ps -p $PPID -o comm=)" = sshd ] &&
  [ "$TERM" = "xterm" ]; then
 set_color_value … # set color scheme
 TERMCAP=…  # if necessary
fi

引用自:https://unix.stackexchange.com/questions/5936