你需要告訴你的終端機驅動程式你想要的另一個預設值。要如何作並沒有一個標準的方法,不過如果你是用 Linux 的話,你有 setterm 這個程式可以用。
"setterm" 使用終端機資料庫�堛爾禤い茬]定屬性。要選擇屬性的話要這樣作
setterm -foreground black -background white -store
"-store" 參數把現在所作的改變設定成預設值。這需要你現在使用的的終端機種類(在 TERM 環境變數��)在 termcap 資料庫�埵釣為鷒埴茠漪鶹�。如果 setterm 因為某種因素不能正常的工作,你還有其它的選擇。
你要有至少一種下列的 xterm,而且要支援彩色。
xterm -fg white -bg blue4
color_xterm -fg white -bg blue4
color-xterm -fg white -bg blue4
nxterm -fg white -bg blue4
這�堛� 'color_xterm' 支援彩色版的 'ls'。這�堛疑C色選擇是模彷 SGI 上面使用的顏色。
你也可以修改核心,這樣就可以一勞永逸的用控制碼來改變虛擬主控台的預設值。如果你自己編譯核心的話,我建議利用 kernel 的綴補檔。
核心的原始碼是在 /usr/src/linux/drivers/char/console.c ,大概在 1940 行,這是你應該修改的地方
def_color = 0x07; /* white */
ulcolor = 0x0f; /* bold white */
halfcolor = 0x08; /* grey */
def_color = 0x17; /* white */
ulcolor = 0x1f; /* bold white */
halfcolor = 0x18; /* grey */
這邊的十六進位數字是給顯示卡用的: 最左邊的位元(上面範例的 "1")是背景 ; 最右邊的位元是前景。0 = 黑色,1 = 藍色,2 = 綠色,3 = 青色, 4 = 紅色, 5 = 紫色,6 = 棕色/黃色,7 = 白色。把數字加 8 可以得到高亮度的顏色。在大部份的情況下,高亮度的背景色 == 閃爍的字加上普通的背景。 由 sjlam1@mda023.cc.monash.edu.au 所提供
你也可以使用下面的 ANSI 控制碼提供一個執行時期的主控台預設值。(在核心原始碼�塈鋮鴘�)
ESC [ 8 ]
這個控制碼把預設值設成目前的前景及背景顏色。然後重設屬性的控制碼(ESC [ m)讓這預設值馬上就取代黑白色成為使用中的顏色。
每次你重開機的時侯你都需要再把這些字串送給主控台。依照你的 Linux 主機用途不同,有好幾個檔案可以達成這個目的。
在 Slackware �堻o就是 "Welcome to Linux xx.yy" 訊息所在的檔案,如果你的主機是個人使用的話,從這個檔案下手是不錯的選擇(但對於用 telnet 遠端登入使用系統的人就可能有點討厭)。 這個檔案在每次開機的時侯都會被製造出來,原來的內容則被覆蓋,所以你必需要修改開機檔案(在 Slackware �堿O /etc/rc.d/rc.S,Redhat�堿O /etc/rc.d/rc.local)�堶悸漱U列幾行:
echo ""> /etc/issue
echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue
改成
ESCAPE="在這�堜韙J ESC 碼"
echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue
echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue
這�堛滷惆蹐X會把遊標歸位、設定顏色(在這�堛澈e景是白色而背景是藍色)、把這個設定存起來並且把螢幕上其它部份清除掉。
這�堛漣幭傮|在下次重開機時生效。別忘了在 emacs 要打入 ESC 字元要按 C-q 鍵而在 vi �堶n按 control-v,因為很顯然的執行以上程式的 sh 並不了解 /033 這種用法。
if [ "$TERM" = "console" ]; then
echo "\033[37;44m\033[8]" #
# 或使用 setterm。
setterm -foreground white -background blue -store
fi
if ( "$TERM" == "console" ) then
echo "\033[37;44m\033[8]"
# 或使用 setterm。
setterm -foreground white -background blue -store
endif
[ 譯者注: Linux 的主控台下的 $TERM 環境變數已經是 "linux" 而不是 "console" 了 ]
你應該可以用上面示範過的 setterm 程式。當然,遠端的機器必需要能夠得到足夠的資訊來操作你的終端機,而且你的終端機模擬程式要能夠支援彩色。 在我的經驗�堥銗戎郊x上最好的 vt100 終端機模擬程式有下列幾種:
關於 kermit 的細節請看 http://www.columbia.edu/kermit/