| 在 ANSI 兼容終端(例如 xterm、rxvt、konsole 等)里, 可以用彩色顯示文本而不僅僅是黑白。 本文示范了如何使用粗體和彩色的文字。 ??? 相信每一位Linux使用者都要面對 Bash。 雖然第一眼看上去非??菰?#xff0c;但是又很多方法能夠讓你的 shell 足夠的個(gè)性化。 shell 提示符的彩色增強(qiáng)讓能夠讓你的 shell 獨(dú)一無二, 而且還非常清晰易讀。 在本文中我以 Bash shell 為例。因?yàn)樵诓煌慕K端里的轉(zhuǎn)義序列不完全相同, 所以在本文中我使用的是 ANSI 終端。? ??shell 彩色配置出現(xiàn)在 bash 的個(gè)人配置文件?~/.bashrc?或者是全局配置文件?/etc/bashrc?里面。 可以通過bashrc?里面的 PS1 變量來設(shè)置提示符的外觀。 一般默認(rèn)的情況下.bashrc里面應(yīng)該是: ? ? ? ? ? ? ? ?? ~/.bashrc ????????????????? export ?? PS1=' \u@\h:\w\$ ' ? ? ? ? ? ? ? ? ? 上面的意思是:用戶@主機(jī):當(dāng)前目錄 $ ? ? ? ? ? ? ? ? ?? -->這也是大家都非常熟悉的shell提示符 。
其中PS1的定義中個(gè)常用的參數(shù)的含義如下: \d?: \H?: \h?: \t?: \T?: \A?: \u?: \v?: \w?: \W?: \ \$?: ? 轉(zhuǎn)義序列 要是通過彩色化提示符來增加個(gè)性化,就要用到轉(zhuǎn)義序列。 轉(zhuǎn)義序列就是一個(gè)讓 shell 執(zhí)行一個(gè)特殊步驟的控制指令。 轉(zhuǎn)義序列通常都是以 ESC 開頭(這也是它的命名原因)。 在 shell 里表示為 ^[ .這種表示法需要一點(diǎn)時(shí)間去適應(yīng), 也可以用 \033 完成相同的工作(ESC 的 ASCII 碼用十進(jìn)制表示就是 27,等于用八進(jìn)制表示的 033)。 要直接在 shell 里面輸入轉(zhuǎn)義序列我們需要先按 ctrl-v:CTRL-v ESC。? 下面進(jìn)入主題,說下該如何用shell的顏色。我用我自己的shell顏色設(shè)置詳細(xì)說明. ? 代碼: ? ? ? ? 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 \]" 最外邊的"\[ ?? \]"是為了把轉(zhuǎn)義序列的字符串括起來,防止轉(zhuǎn)義序列的文本顯示在 shell 里占用太多的空間。 \033 聲明了轉(zhuǎn)義序列的開始,然后是 [ 開始定義顏色。 后面的 0 定義了默認(rèn)的字體寬度,接著的中間的數(shù)字定義字符顏色。最后面的數(shù)字定義了字符背景色。字母m是定義本身所必須的,字母m后面的字符就是你想改變的字符了。 ?可選顏色:紅色、綠色、黃色、藍(lán)色、洋紅、青色和白色。 他們對應(yīng)的顏色代碼是:30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍(lán)色)、35(洋紅)、36(青色)、37(白色)。 用同樣色方法設(shè)置背景色,不過要把第一個(gè)數(shù)字“3”替換成“4”, 例如 40、41、42、43、44、45、46、47。 比如上面我的定義中: 最后顯示的結(jié)果是在$號之前的字符全部用一個(gè)淺綠色的中括弧擴(kuò)起來。$字符 顯示為紅色。后面的輸入顯示為高亮淺綠色。在括弧里面,用戶名@主機(jī)顯示為深綠色,路徑顯示為洋紅。 用代碼解釋: Ps1 ="\[ -------------> 最外面的括弧 ? ? ? ? ? ? ? ?? \033[1;32;40m[ ?????????? ----> 定義最右邊的" [ " ; ??????? 1:字體寬度,好像有加亮功能. ? ? ? ? 32:字符顏色。32表示綠色。 ? ? ? ? 40:背景色,40表示黑色。 ?????????????? \033[0;32;40m\u@\h: ? ? ? ? --------->定義右邊的 \u@\h:? 這幾個(gè)字符顏色。 ? ? ? ? ? ?? 0: 默認(rèn)字體寬度。 ? ? ? ? ? ? 32:字符顏色。綠色。 ? ? ? ? ??? 40:? 背景顏色。黑色。 ? ? ? ? ? ? ?? \033[1;35;40m\w ? ? ? ? ---------> 定義右邊的 \w? (路徑顏色) 。 ? ? ? ? ? ? 1:字符寬度。加亮。 ? ? ? ? ?? 35:字符顏色。洋紅。 ? ? ? ? ?? 40:背景色。黑色。 ? ? ? ? ? ? ? ? ? ?? \033[1;32;40m] ? ? ? ---------> 定義右邊的? ]? 字符。跟前面的 ? [ ? 字符使用同一效果。 ? ? ? ? ? ? ? ? ? ?? \033[1;31;40m\$ ? ? ? ---------> 定義了? $? 字符 為紅色。轉(zhuǎn)義字符,所以前面加了 \ . ? ? ? ? ? 顏色都跟前面差不多。相信大家都發(fā)現(xiàn)規(guī)律了。 ? ? ? ? ? ? ? ? ? ? ? \033[1;32;40m ? ? ? ----------> 這個(gè)定義了你在命令行要輸入命令顯示的顏色。 ? ? ? ? ? ? ? ? ? ? ?? \]" ? ?? -----------> 字符串結(jié)束括弧。 這個(gè)就是上面例子的詳細(xì)定義內(nèi)容。 其 實(shí)我的是沒有關(guān)閉顏色轉(zhuǎn)義序列,讓自己輸入的字符也改變顏色,整天看這黑白屏幕不爽哇!!如果不想改變輸入顏色的話,用 \033[0m 關(guān)閉轉(zhuǎn)義序列, \033[0m 是 shell 的默認(rèn)顏色。按照上面的例子來說就是在 \]" 前面加上 \033[0m 即可。 |