?? colour-ls.txt
字號:
Linux 終端機(jī)下的彩色顯示 作者: Thorbjo/rn Ravn Andersen, ravn@dit.ou.dk譯者: Chou-Kai Wang, stylon@ms2.hinet.net v1.4, 7 August 1997 _________________________________________________________________ 雖然大部份的 Linux 發(fā)行版本都附有一個用來把目錄的內(nèi)容列出來,而且可以利 用彩色來增強(qiáng)輸出在視覺上的效果的'ls'指令,不過要把他設(shè)定的合你意卻不是 件容易的事。這份文件說明了設(shè)定一些已經(jīng)內(nèi)附在你的 Linux 發(fā)行版本的軟體, 來達(dá)到這個目地的好幾種不同的方法,還有在那□可以找到一些在大部份版本的 Unix □都會用到,但是卻常常不被附在 Slackware 或 RedHat Linux □的軟體 。這份文件的 HTML 版本也可以在我的原始檔案這□ [1]http://www.mip.ou.dk/~ravn/colour-ls 找的到。 _________________________________________________________________ 1. 簡介2. 快速入門:給沒有那麼多耐心的讀者3. 這樣就好了嗎?4. 有那些顏色可以選擇呢?5. 如何設(shè)定 ls 的彩色輸出6. 如何改變系統(tǒng)的預(yù)設(shè)值: 前景白色而背景是黑色 * 6.1 Xterm * 6.2 虛擬主控臺 * 6.3 遠(yuǎn)端登入 7. 軟體 _________________________________________________________________ 1. 簡介 這些年來彩色的顯示器已經(jīng)相當(dāng)普遍,使用者也開始使用一些以彩色來表示例如 :程式語言□的保留字,或是拼錯的字,來給使用者一些視覺上的回饋。 自從 Linux 的文字模式控制臺支援彩色後,原來的 GNU ls 也很快的被修改成支 援輸出彩色的訊息而且被附在 Slackware 2.0 版□。 這些改良原來版本的綴補(bǔ) 檔案已經(jīng)被整合到標(biāo)準(zhǔn)版的 GNU ls 里,現(xiàn)在也應(yīng)該是所有新的 Linux 發(fā)行版本 的一部份了。 現(xiàn)在這版本的文件是把最初的版本改寫了許多部份後更新而來的,包括了一些關(guān) 於 xterm 和 如何利用綴補(bǔ)檔來更新核心的資訊。 這份文件里的資訊都在 Redhat 4.1 □驗(yàn)證過,而且主要是在Slackware 2.0.2 版及核心版本 1.1.54 的環(huán)境□搜集而來的。 核心的綴補(bǔ)檔的資訊是在 slackware 2.2.0,1.2.13 版的核心,并且以 tcsh 為預(yù)設(shè)的 shell的環(huán)境□取 得的, 而後來也在 2.0.27 的核心□驗(yàn)證過。如果你使用其它的設(shè)定或是 unix 版本,我會很感激你告訴我你的作業(yè)系統(tǒng)及版本, 還有它是否支援彩色的顯示。 2. 快速入門:給沒有那麼多耐心的讀者 如果你有個 新版的 Linux,對你使用者目錄下的這些檔案作這些修改,下次你登 入的時候就會生效了。 ~/.bashrc: alias ls="ls --color"~/.cshrc: alias ls 'ls --color' 這樣就好啦! 你也許還會想要作:``eval `dircolors $HOME/.colourrc`'', 來設(shè)定你自己想 要的顏色。這個檔案可以用 ``dircolors -p >$HOME/.colourrc'' 來制造出來, 而且□面有許多的注解方便你更改設(shè)定。 3. 這樣就好了嗎? 首先你需要知道你使用的 ls 是不是可以適當(dāng)?shù)奶幚聿噬敵觥T?Linux 的文字 模式控制臺試試看這個指令(在 xterm □也可以): % ls --color (這□的 % 是 shell 的提示符號): 如果你看到了表示你的 ls 不能接受這個選項(xiàng)的錯誤訊息,那你應(yīng)該安裝新版本 的 GNU fileutils 軟體。如果你使用的發(fā)行版本沒有提供新的升級軟體,那麼就 從 GNU 的映射站臺取得這個軟體并且直接從原始碼安裝。 如果你并沒有看到錯誤訊息,那麼你使用的 ls 便可以接受這個選項(xiàng)。但很不幸 的,有一些在 Slackware (其它的發(fā)行版本也有可能) □附的早期版本是有臭□ 的。在 Redhat 4.1 □面附的 3.13 版的 ls 就沒有問題。 % ls --versionls - GNU fileutils-3.13 如果你在 Linux 的文字模式終端機(jī)□執(zhí)行 ``ls -- color'',那麼它的輸出應(yīng)該 依照系統(tǒng)的預(yù)設(shè)值而有適當(dāng)?shù)牟噬夷悻F(xiàn)在可以開始決定是不是需要改變?nèi)?/span> 何的設(shè)定。 如果你在 xterm □執(zhí)行上面的過程,也許你還是沒辦法看到輸出變成彩色。就跟 ls 一樣,原來的 xterm 并不支援應(yīng)用程式的彩色輸出,而較新的版本有支援。 如果你的 xterm 不支援彩色,那麼請參考這個文件的結(jié)尾拿到較新版本的 xterm,同時你也只好切換到文字模式并且繼續(xù)下面的步驟。 4. 有那些顏色可以選擇呢? 下面的 shell 命令稿(感謝許多把 bash 的版本寄給我的人)顯示出現(xiàn)在使用的主 控臺能夠支援的各種顏色組合。如果沒有顏色出現(xiàn),那麼你的主控臺就不支援 ANSI 的顏色選擇。 #!/bin/bash# 顯示 ANSI 的彩色#esc="\033["echo -n " _ _ _ _ _40 _ _ _ 41_ _ _ _42 _ _ _ 43"echo "_ _ _ 44_ _ _ _45 _ _ _ 46_ _ _ _47 _"for fore in 30 31 32 33 34 35 36 37; do line1="$fore " line2=" " for back in 40 41 42 43 44 45 46 47; do line1="${line1}${esc}${back};${fore}m Normal ${esc}0m" line2="${line2}${esc}${back};${fore};1m Bold ${esc}0m" done echo -e "$line1\n$line2"done 前景的顏色號碼是在左邊那一排,背景的則是在上方。如果你要粗體的字元和高 亮度就在參數(shù)□加一個 "1",所以前景是白色而背景是藍(lán)色就成了 "37;44;1"。 整個的 ANSI 顏色選擇序列就是ESC [ 3 7 ; 4 4 ; 1 m 。 注: 背景不可以是高亮度,所以黃色(高亮度的棕色)只能用來作前景。這是硬體 上的限制。 顏色代碼: 0 - 黑色 4 - 藍(lán)色 3# 是背景顏色 1 - 紅色 5 - 粉紅色 4# 是前景顏色 2 - 綠色 6 - 青色 3 - 黃色 7 - 白色 ;1 是粗體和高亮度5. 如何設(shè)定 ls 的彩色輸出 如果你想要修改 ls 內(nèi)定的標(biāo)準(zhǔn)顏色,你需要用下面的指令在你的 HOME 目錄下 制造這一個檔案 cd ; dircolors -p > .coloursrc 在你編輯完這個注解的很詳細(xì)的檔案以後,你必需要把它讀進(jìn)你的環(huán)境變數(shù) LS_COLORS □,通常都是這樣作的 eval `dircolors .colourrc` 然後你要把前面這一行放進(jìn)你的 .bashrc 或 .cshrc 或 .tcshrc (依照你使用的 shell 而定)□。更詳細(xì)的用法請看 dircolors(1) 的使用說明。 6. 如何改變系統(tǒng)的預(yù)設(shè)值: 前景白色而背景是黑色 你需要告訴你的終端機(jī)驅(qū)動程式你想要的另一個預(yù)設(shè)值。要如何作并沒有一個標(biāo) 準(zhǔn)的方法,不過如果你是用 Linux 的話,你有 setterm 這個程式可以用。 "setterm" 使用終端機(jī)資料庫□的資料來設(shè)定屬性。要選擇屬性的話要這樣作 setterm -foreground black -background white -store "-store" 參數(shù)把現(xiàn)在所作的改變設(shè)定成預(yù)設(shè)值。這需要你現(xiàn)在使用的的終端機(jī)種 類(在 TERM 環(huán)境變數(shù)□)在 termcap 資料庫□有足夠詳細(xì)的紀(jì)錄。如果 setterm 因?yàn)槟撤N因素不能正常的工作,你還有其它的選擇。 6.1 Xterm 你要有至少一種下列的 xterm,而且要支援彩色。 xterm -fg white -bg blue4color_xterm -fg white -bg blue4color-xterm -fg white -bg blue4nxterm -fg white -bg blue4 這□的 'color_xterm' 支援彩色版的 'ls'。這□的顏色選擇是模彷 SGI 上面使 用的顏色。 6.2 虛擬主控臺 你也可以修改核心,這樣就可以一勞永逸的用控制碼來改變虛擬主控臺的預(yù)設(shè)值 。如果你自己編譯核心的話,我建議利用 kernel 的綴補(bǔ)檔。 核心的原始碼是在 /usr/src/linux/drivers/char/console.c ,大概在 1940 行 ,這是你應(yīng)該修改的地方 def_color = 0x07; /* white */ ulcolor = 0x0f; /* bold white */ halfcolor = 0x08; /* grey */ def_color = 0x17; /* white */ ulcolor = 0x1f; /* bold white */ halfcolor = 0x18; /* grey */ 這邊的十六進(jìn)位數(shù)字是給顯示卡用的: 最左邊的位元(上面□例的 "1")是背景 ; 最右邊的位元是前景。0 = 黑色,1 = 藍(lán)色,2 = 綠色,3 = 青色, 4 = 紅色, 5 = 紫色,6 = 棕色/黃色,7 = 白色。把數(shù)字加 8 可以得到高亮度的顏色。在 大部份的情況下,高亮度的背景色 == 閃爍的字加上普通的背景。 由 [2]sjlam1@mda023.cc.monash.edu.au 所提供 你也可以使用下面的 ANSI 控制碼提供一個執(zhí)行時期的主控臺預(yù)設(shè)值。(在核心原 始碼□找到的) ESC [ 8 ] 這個控制碼把預(yù)設(shè)值設(shè)成目前的前景及背景顏色。然後重設(shè)屬性的控制碼(ESC [ m)讓這預(yù)設(shè)值馬上就取代黑白色成為使用中的顏色。 每次你重開機(jī)的時侯你都需要再把這些字串送給主控臺。依照你的 Linux 主機(jī)用 途不同,有好幾個檔案可以達(dá)成這個目的。 /etc/issue 在 Slackware □這就是 "Welcome to Linux xx.yy" 訊息所在的檔案,如果你的 主機(jī)是個人使用的話,從這個檔案下手是不錯的選擇(但對於用 telnet 遠(yuǎn)端登入 使用系統(tǒng)的人就可能有點(diǎn)討厭)。 這個檔案在每次開機(jī)的時侯都會被制造出來, 原來的內(nèi)容則被覆蓋,所以你必需要修改開機(jī)檔案(在 Slackware □是 /etc/rc.d/rc.S,Redhat□是 /etc/rc.d/rc.local)□面的下列幾行: echo ""> /etc/issue echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue 改成 ESCAPE="在這□放入 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 這□的控制碼會把游標(biāo)歸位、設(shè)定顏色(在這□的前景是白色而背景是藍(lán)色)、把 這個設(shè)定存起來并且把螢?zāi)簧掀渌糠萸宄簟?這□的改變會在下次重開機(jī)時生 效。別忘了在 emacs 要打入 ESC 字元要按 C-q 鍵而在 vi □要按 control-v, 因?yàn)楹茱@然的執(zhí)行以上程式的 sh 并不了解 /033 這種用法。 /etc/profile 或 .profile if [ "$TERM" = "console" ]; then echo "\033[37;44m\033[8]" ## 或使用 setterm。 setterm -foreground white -background blue -store fi /etc/login 或 .login if ( "$TERM" == "console" ) then echo "\033[37;44m\033[8]"# 或使用 setterm。 setterm -foreground white -background blue -store endif [ 譯者注: Linux 的主控臺下的 $TERM 環(huán)境變數(shù)已經(jīng)是 "linux" 而不是 "console" 了 ] 6.3 遠(yuǎn)端登入 你應(yīng)該可以用上面示□過的 setterm 程式。當(dāng)然,遠(yuǎn)端的機(jī)器必需要能夠得到足 夠的資訊來操作你的終端機(jī),而且你的終端機(jī)模擬程式要能夠支援彩色。 在我的 經(jīng)驗(yàn)□其它平臺上最好的 vt100 終端機(jī)模擬程式有下列幾種: * MS-DOS: MS-Kermit (免費(fèi), 不是 Microsoft 的產(chǎn)品) * Windows 95/NT: Kermit/95 (共享軟體) * OS/2: Kermit/95 (共享軟體)。 請注意標(biāo)準(zhǔn)的 telnet 支援彩色而且可以在 本地端設(shè)定。 關(guān)於 kermit 的細(xì)節(jié)請看 [3]http://www.columbia.edu/kermit/ 7. 軟體 以上所有的用法都假設(shè)你使用的是 GNU/Linux。如果你是使用其它的作業(yè)環(huán)境(比 如說是執(zhí)行 X 的 Sun 工作站等等)你還是可以拿到并且自己編譯這些軟體。 彩色版的 xterm 是從標(biāo)準(zhǔn)的 xterm 原始碼而發(fā)展來的,而用來修改標(biāo)準(zhǔn) xterm 的綴補(bǔ)檔可以從任何一個 X11R6 的站臺獲得。 聽說 R6.3 內(nèi)附的 xterm 有支援 彩色,不過我沒有測試過。 ftp://ftp.denet.dk/pub/X11/contrib/utilities/color-xterm-R6pl5-patch.gz 如果你是用舊版的 X 的話請看內(nèi)附的文件。注意: 我自己并沒有測試過! 'ls' 是內(nèi)附在 GNU 的 fileutils 軟體□而你可以從 prep.mit.edu 或其它的映 射站臺拿到。請拿最新的 3.13 版本。 ftp://ftp.denet.dk/pub/gnu/fileutils-3.XX.tar.gz 我自己曾經(jīng)在 Solaris,SunOS,Irix 上成功編譯過 color-ls。 我很歡迎對於這篇文章的回應(yīng)。我的電子郵件地址是 [4]ravn@dit.ou.dk -- Thorbjo/rn Ravn AndersenReferences 1. http://www.mip.ou.dk/~ravn/colour-ls 2. mailto:sjlam1@mda023.cc.monash.edu.au 3. http://www.columbia.edu/kermit/ 4. mailto:ravn@dit.ou.dk
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -