相信每一位Linux使用者都要面對 Bash。 雖然第一眼看上去非常枯燥,但是又很多方法能夠讓你的 shell 足夠的個性化。 shell 提示符的彩色增強讓能夠讓你的 shell 獨一無二, 而且還非常清晰易讀。
在本文中我以 Bash shell 爲例。因爲在不同的終端裏的轉義序列不完全相同, 所以在本文中我使用的是 ANSI 終端。
shell 彩色配置出現在 bash 的個人配置文件 ~/.bashrc 或者是全局配置文件 /etc/bashrc 裏面。 可以通過bashrc 裏面的 PS1 變量來設置提示符的外觀。
一般默認的情況下.bashrc裏面應該是:
~/.bashrc
export PS1=' \u@\h:\w\$ '
上面的意思是:用戶@主機:當前目錄 $
-->這也是大家都非常熟悉的shell提示符 。
轉義序列
要是通過彩色化提示符來增加個性化,就要用到轉義序列。 轉義序列就是一個讓 shell 執行一個特殊步驟的控制指令。 轉義序列通常都是以 ESC 開頭(這也是它的命名原因)。 在 shell 裏表示爲 ^[ .這種表示法需要一點時間去適應, 也可以用 \033 完成相同的工作(ESC 的 ASCII 碼用十進制表示就是 27,等於用八進制表示的 033)。
要直接在 shell 裏面輸入轉義序列我們需要先按 ctrl-v:CTRL-v ESC。
下面進入主題,說下該如何用shell的顏色。我用我自己的shell顏色設置詳細說明.
代碼:
PS1="\[\033[1;32;40m[\033[0;32;40m\u@\h:\033[1;35;40m\w\033[1;32;40m]\033[1;31;40m\$\033[1;32;40m \]"
最外邊的"\[ \]"是爲了把轉義序列的字符串括起來,防止轉義序列的文本顯示在 shell 裏佔用太多的空間。
\033 聲明瞭轉義序列的開始,然後是 [ 開始定義顏色。 後面的 0 定義了默認的字體寬度,接着的中間的數字定義字符顏色。最後面的數字定義了字符背景色。字母m是定義本身所必須的,字母m後面的字符就是你想改變的字符了。
可選顏色:紅色、綠色、黃色、藍色、洋紅、青色和白色。 他們對應的顏色代碼是:30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍色)、35(洋紅)、36(青色)、37(白色)。
用同樣色方法設置背景色,不過要把第一個數字“3”替換成“4”, 例如 40、41、42、43、44、45、46、47。
比如上面我的定義中: 最後顯示的結果是在$號之前的字符全部用一個淺綠色的中括弧擴起來。$字符 顯示爲紅色。後面的輸入顯示爲高亮淺綠色。在括弧裏面,用戶名@主機顯示爲深綠色,路徑顯示爲洋紅。
用代碼解釋:
Ps1 ="\[ -------------> 最外面的括弧
\033[1;32;40m[
----> 定義最右邊的" [ " ;
1:字體寬度,好像有加亮功能.
32:字符顏色。32表示綠色。
40:背景色,40表示黑色。
\033[0;32;40m\u@\h:
--------->定義右邊的 \u@\h: 這幾個字符顏色。
0: 默認字體寬度。
32:字符顏色。綠色。
40: 背景顏色。黑色。
\033[1;35;40m\w
---------> 定義右邊的 \w (路徑顏色) 。
1:字符寬度。加亮。
35:字符顏色。洋紅。
40:背景色。黑色。
\033[1;32;40m]
---------> 定義右邊的 ] 字符。跟前面的 [ 字符使用同一效果。
\033[1;31;40m\$
---------> 定義了 $ 字符 爲紅色。轉義字符,所以前面加了 \ .
顏色都跟前面差不多。相信大家都發現規律了。
\033[1;32;40m
----------> 這個定義了你在命令行要輸入命令顯示的顏色。
\]"
-----------> 字符串結束括弧。
這個就是上面例子的詳細定義內容。
其實我的是沒有關閉顏色轉義序列,讓自己輸入的字符也改變顏色,整天看這黑白屏幕不爽哇!!如果不想改變輸入顏色的話,用 \033[0m 關閉轉義序列, \033[0m 是 shell 的默認顏色。按照上面的例子來說就是在 \]" 前面加上 \033[0m 即可。
夠簡單吧?
看看root下的shell:
這個也不錯,是 Nico Golde的:
PS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"
|
這裏還有更多的顏色組合,是通過bash shell腳本實現的所有顏色組合。你可以挑選你自己喜歡的任意一種。
文本屬性
剛纔提到了,在第一個轉義序列後面的“0”是提示符的文本的默認顏色設置。 對於文本屬性來說,這些值是有意義的:0、1、22、4、24、5、25、7、27, 分別表示:默認值、粗體、非粗體、下劃線、非下劃線、閃爍、非閃爍、 反顯、非反顯。
通過下面這一段短小的腳本,我們可以看看色彩組合。
#!/bin/sh
############################################################
# Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de
# Last change: Mon Feb 16 16:24:41 CET 2004
############################################################
for attr in 0 1 4 5 7 ; do
echo "----------------------------------------------------------------"
printf "ESC[%s;Foreground;Background - \n" $attr
for fore in 30 31 32 33 34 35 36 37; do
for back in 40 41 42 43 44 45 46 47; do
printf '\033[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back
done
printf '\n'
done
printf '\033[0m'
done