史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 網路疑難應用技術研討區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2004-08-10, 04:26 PM   #1
飛鳥
協調管理員
 
飛鳥 的頭像
榮譽勳章
UID - 23073
在線等級: 級別:72 | 在線時長:5513小時 | 升級還需:108小時級別:72 | 在線時長:5513小時 | 升級還需:108小時
註冊日期: 2003-01-07
VIP期限: 無限期
住址: 史萊姆團隊
文章: 7199
精華: 11
現金: 837 金幣
資產: 260029 金幣
預設 Linux 終端機下的彩色顯示

雖然大部份的 Linux 發行版本都附有一個用來把目錄的內容列出來,而且可以利
用彩色來增強輸出在視覺上的效果的'ls'指令,不過要把他設定的合你意卻不是
件容易的事。這份文件說明了設定一些已經內附在你的 Linux 發行版本的軟體,
來達到這個目地的好幾種不同的方法,還有在那□可以找到一些在大部份版本的
Unix □都會用到,但是卻常常不被附在 Slackware 或 RedHat Linux □的軟體
。這份文件的 HTML 版本也可以在我的原始檔案這□
[1]http://www.mip.ou.dk/~ravn/colour-ls 找的到。
_________________________________________________________________
1. 簡介
2. 快速入門:給沒有那麽多耐心的讀者
3. 這樣就好了嗎?
4. 有那些顔色可以選擇呢?
5. 如何設定 ls 的彩色輸出
6. 如何改變系統的預設值: 前景白色而背景是黑色
* 6.1 Xterm
* 6.2 虛擬主控台
* 6.3 遠端登入
7. 軟體
_________________________________________________________________
1. 簡介
這些年來彩色的顯示器已經相當普遍,使用者也開始使用一些以彩色來表示例如
:程式語言□的保留字,或是拼錯的字,來給使用者一些視覺上的回饋。
自從 Linux 的文字模式控制臺支援彩色後,原來的 GNU ls 也很快的被修改成支
援輸出彩色的訊息而且被附在 Slackware 2.0 版□。 這些改良原來版本的綴補
檔案已經被整合到標準版的 GNU ls 堙A現在也應該是所有新的 Linux 發行版本
的一部份了。
現在這版本的文件是把最初的版本改寫了許多部份後更新而來的,包括了一些關
於 xterm 和 如何利用綴補檔來更新核心的資訊。
這份文件堛爾穈T都在 Redhat 4.1 □驗證過,而且主要是在Slackware 2.0.2
版及核心版本 1.1.54 的環境□搜集而來的。 核心的綴補檔的資訊是在
slackware 2.2.0,1.2.13 版的核心,並且以 tcsh 爲預設的 shell的環境□取
得的, 而後來也在 2.0.27 的核心□驗證過。如果你使用其他的設定或是 unix
版本,我會很感激你告訴我你的作業系統及版本, 還有它是否支援彩色的顯示。
2. 快速入門:給沒有那麽多耐心的讀者
如果你有個 新版的 Linux,對你使用者目錄下的這些檔案作這些修改,下次你登
入的時候就會生效了。
~/.bashrc:
alias ls="ls --color"
~/.cshrc:
alias ls 'ls --color'
這樣就好啦!
你也許還會想要作:``eval `dircolors $HOME/.colourrc`'', 來設定你自己想
要的顔色。這個檔案可以用 ``dircolors -p >$HOME/.colourrc'' 來製造出來,
而且□面有許多的注解方便你更改設定。
3. 這樣就好了嗎?
首先你需要知道你使用的 ls 是不是可以適當的處理彩色輸出。在 Linux 的文字
模式控制臺試試看這個指令(在 xterm □也可以):
% ls --color
(這□的 % 是 shell 的提示符號):
如果你看到了表示你的 ls 不能接受這個選項的錯誤訊息,那你應該安裝新版本
的 GNU fileutils 軟體。如果你使用的發行版本沒有提供新的升級軟體,那麽就
從 GNU 的映射站臺取得這個軟體並且直接從原始碼安裝。
如果你並沒有看到錯誤訊息,那麽你使用的 ls 便可以接受這個選項。但很不幸
的,有一些在 Slackware (其他的發行版本也有可能) □附的早期版本是有臭□
的。在 Redhat 4.1 □面附的 3.13 版的 ls 就沒有問題。
% ls --version
ls - GNU fileutils-3.13
如果你在 Linux 的文字模式終端機□執行 ``ls -- color'',那麽它的輸出應該
依照系統的預設值而有適當的彩色,而且你現在可以開始決定是不是需要改變任
何的設定。
如果你在 xterm □執行上面的過程,也許你還是沒辦法看到輸出變成彩色。就跟
ls 一樣,原來的 xterm 並不支援應用程式的彩色輸出,而較新的版本有支援。
如果你的 xterm 不支援彩色,那麽請參考這個文件的結尾拿到較新版本的
xterm,同時你也只好切換到文字模式並且繼續下面的步驟。
4. 有那些顔色可以選擇呢?
下面的 shell 命令稿(感謝許多把 bash 的版本寄給我的人)顯示出現在使用的主
控台能夠支援的各種顔色組合。如果沒有顔色出現,那麽你的主控台就不支援
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
前景的顔色號碼是在左邊那一排,背景的則是在上方。如果你要粗體的字元和高
亮度就在參數□加一個 "1",所以前景是白色而背景是藍色就成了 "37;44;1"。
整個的 ANSI 顔色選擇序列就是
ESC [ 3 7 ; 4 4 ; 1 m

注: 背景不可以是高亮度,所以黃色(高亮度的棕色)只能用來作前景。這是硬體
上的限制。
顔色代碼:
0 - 黑色 4 - 藍色 3# 是背景顔色
1 - 紅色 5 - 粉紅色 4# 是前景顔色
2 - 綠色 6 - 青色
3 - 黃色 7 - 白色 ;1 是粗體和高亮度
5. 如何設定 ls 的彩色輸出
如果你想要修改 ls 內定的標準顔色,你需要用下面的指令在你的 HOME 目錄下
製造這一個檔案
cd ; dircolors -p > .coloursrc
在你編輯完這個注解的很詳細的檔案以後,你必需要把它讀進你的環境變數
LS_COLORS □,通常都是這樣作的
eval `dircolors .colourrc`
然後你要把前面這一行放進你的 .bashrc 或 .cshrc 或 .tcshrc (依照你使用的
shell 而定)□。更詳細的用法請看 dircolors(1) 的使用說明。
6. 如何改變系統的預設值: 前景白色而背景是黑色
你需要告訴你的終端機驅動程式你想要的另一個預設值。要如何作並沒有一個標
准的方法,不過如果你是用 Linux 的話,你有 setterm 這個程式可以用。
"setterm" 使用終端機資料庫□的資料來設定屬性。要選擇屬性的話要這樣作
setterm -foreground black -background white -store
"-store" 參數把現在所作的改變設定成預設值。這需要你現在使用的的終端機種
類(在 TERM 環境變數□)在 termcap 資料庫□有足夠詳細的紀錄。如果
setterm 因爲某種因素不能正常的工作,你還有其他的選擇。
6.1 Xterm
你要有至少一種下列的 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'。這□的顔色選擇是模彷 SGI 上面使
用的顔色。
6.2 虛擬主控台
你也可以修改核心,這樣就可以一勞永逸的用控制碼來改變虛擬主控台的預設值
。如果你自己編譯核心的話,我建議利用 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 可以得到高亮度的顔色。在
大部份的情況下,高亮度的背景色 == 閃爍的字加上普通的背景。 由
[2]sjlam1@mda023.cc.monash.edu.au 所提供
你也可以使用下面的 ANSI 控制碼提供一個執行時期的主控台預設值。(在核心原
始碼□找到的)
ESC [ 8 ]
這個控制碼把預設值設成目前的前景及背景顔色。然後重設屬性的控制碼(ESC [
m)讓這預設值馬上就取代黑白色成爲使用中的顔色。
每次你重開機的時侯你都需要再把這些字串送給主控台。依照你的 Linux 主機用
途不同,有好幾個檔案可以達成這個目的。
/etc/issue
在 Slackware □這就是 "Welcome to Linux xx.yy" 訊息所在的檔案,如果你的
主機是個人使用的話,從這個檔案下手是不錯的選擇(但對於用 telnet 遠端登入
使用系統的人就可能有點討厭)。 這個檔案在每次開機的時侯都會被製造出來,
原來的內容則被覆蓋,所以你必需要修改開機檔案(在 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
這□的控制碼會把游標歸位元、設定顔色(在這□的前景是白色而背景是藍色)、把
這個設定存起來並且把螢幕上其他部份清除掉。 這□的改變會在下次重開機時生
效。別忘了在 emacs 要打入 ESC 字元要按 C-q 鍵而在 vi □要按 control-v,
因爲很顯然的執行以上程式的 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 環境變數已經是 "linux" 而不是
"console" 了 ]
6.3 遠端登入
你應該可以用上面示□過的 setterm 程式。當然,遠端的機器必需要能夠得到足
夠的資訊來操作你的終端機,而且你的終端機類比程式要能夠支援彩色。 在我的
經驗□其他平臺上最好的 vt100 終端機類比程式有下列幾種:
* MS-DOS: MS-Kermit (免費, 不是 Microsoft 的産品)
* Windows 95/NT: Kermit/95 (共用軟體)
* OS/2: Kermit/95 (共用軟體)。 請注意標準的 telnet 支援彩色而且可以在
本地端設定。
關於 kermit 的細節請看 [3]http://www.columbia.edu/kermit/
7. 軟體
以上所有的用法都假設你使用的是 GNU/Linux。如果你是使用其他的作業環境(比
如說是執行 X 的 Sun 工作站等等)你還是可以拿到並且自己編譯這些軟體。
彩色版的 xterm 是從標準的 xterm 原始碼而發展來的,而用來修改標準 xterm
的綴補檔可以從任何一個 X11R6 的站臺獲得。 聽說 R6.3 內附的 xterm 有支援
彩色,不過我沒有測試過。
ftp://ftp.denet.dk/pub/X11/contrib/u...R6pl5-patch.gz
如果你是用舊版的 X 的話請看內附的文件。注意: 我自己並沒有測試過!
'ls' 是內附在 GNU 的 fileutils 軟體□而你可以從 prep.mit.edu 或其他的映
射站臺拿到。請拿最新的 3.13 版本。
ftp://ftp.denet.dk/pub/gnu/fileutils-3.XX.tar.gz
我自己曾經在 Solaris,SunOS,Irix 上成功編譯過 color-ls。
我很歡迎對於這篇文章的回應。我的電子郵件位址是 [4]ravn@dit.ou.dk
--
Thorbjo/rn Ravn Andersen
References
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 v
__________________
http://flybird017.googlepages.com/quok.gif http://flybird020.googlepages.com/new321.gif
寶貝你我的地球
, 請 少開電器,減少溫室氣體排放外,多種植植物,減少列印, 多用背面,丟棄時做垃圾分類。

http://netgames123.googlepages.com/tobikeways.jpg

飛鳥 目前離線  
送花文章: 11706, 收花文章: 3363 篇, 收花: 16453 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
100個最佳Linux站點 psac 網路疑難應用技術研討區 6 2005-03-03 08:31 AM
100個最佳Linux站點 飛鳥 網路疑難應用技術研討區 7 2004-07-03 11:43 PM
理解 GNU/Linux psac 網路疑難應用技術研討區 13 2004-04-16 12:17 PM
100個最佳Linux站  aacced 網路疑難應用技術研討區 0 2003-11-14 06:49 PM


所有時間均為台北時間。現在的時間是 07:50 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1