| 在 ANSI 兼容終端(例如 xterm、rxvt、konsole 等)里, 可以用彩色顯示文本而不僅僅是黑白。 本文示范了如何使用粗體和彩色的文字。 ??? 相信每一位Linux使用者都要面對 Bash。 雖然第一眼看上去非常枯燥,但是又很多方法能夠讓你的 shell 足夠的個性化。 shell 提示符的彩色增強讓能夠讓你的 shell 獨一無二, 而且還非常清晰易讀。 在本文中我以 Bash shell 為例。因為在不同的終端里的轉義序列不完全相同, 所以在本文中我使用的是 ANSI 終端。? ??shell 彩色配置出現在 bash 的個人配置文件?~/.bashrc?或者是全局配置文件?/etc/bashrc?里面。 可以通過bashrc?里面的 PS1 變量來設置提示符的外觀。 一般默認的情況下.bashrc里面應該是: ? ? ? ? ? ? ? ?? ~/.bashrc ????????????????? export ?? PS1=' \u@\h:\w\$ ' ? ? ? ? ? ? ? ? ? 上面的意思是:用戶@主機:當前目錄 $ ? ? ? ? ? ? ? ? ?? -->這也是大家都非常熟悉的shell提示符 。
其中PS1的定義中個常用的參數的含義如下: \d?: \H?: \h?: \t?: \T?: \A?: \u?: \v?: \w?: \W?: \ \$?: ? 轉義序列 要是通過彩色化提示符來增加個性化,就要用到轉義序列。 轉義序列就是一個讓 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 即可。 |