來自: http://blog.chinaunix.net/u/19081/showart_1087051.html
在bash中,可以通過更改PS1環境變量的值來設置提示行。通常的提示符顏色單調,用戶可以通過在PS1中添加顏色代碼序列來設置提示符中不同信息以不同顏色顯示。
添加顏色相當容易;第一步是設計不帶顏色的提示行。然后,我們所要做的只是添加終端(而不是bash)可識別的專用轉義序列,以使它以彩色顯示文本的某些部分。標準Linux終端和X終端允許用戶設置前景(文字)顏色和背景顏色,如果需要,還可以啟用"bold"字符。有八種顏色可供我們選擇。
顏色是通過在PS1中添加專用序列來選擇的--基本上是夾在"\e["(轉義開方括號)和"m"之間數字值。如果指定一個以上的數字代碼,則用分號將它們分開。
下面是一個顏色代碼示例:
"\e[0m"
如果將數字代碼指定為零,則它就會通知終端將前景、背景和加粗設置重置為它們的默認值。您可能會在提示行結束時使用這個代碼,以使您鍵入的文字成為非彩色的。現在,讓我們看一下這些顏色代碼。
顏色表
前景 背景 顏色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色
代碼 意義
-------------------------
0 OFF
1 高亮顯示
4 underline
5 閃爍
7 反白顯示
8 不可見
要使用這個表,首先請查找您要使用的顏色,然后查找對應的前景編號(30-37)和背景編號(40-47)。例如,如果您喜歡黑底綠字,則可將編號分別設為32和40。然后打開您的提示行定義并在其中添加適當的顏色代碼。下面的定義:
export PS1="\w>; "
變為:
export PS1="\e[32;40m\w>; "
到現在為止,提示行盡管已經很不錯了,但仍不太完美。在bash顯示出工作目錄以后,我們需要使用"\e[0m"序列將顏色重新設置為正常值。
export PS1="\e[32;40m\w>; \e[0m"
這個定義將顯示一個漂亮的綠色提示行,但我們仍需要做一些掃尾工作。我們不需要包括"40"這個背景顏色設置,因為它將背景設置為黑色,而黑色是默認顏色。此外,綠色還很暗;我們通過添加一個"1"顏色代碼來修正這個問題,這將啟用更亮的加粗文字。
除了這個修改之外,我們還需要將全部非打印字符用專用的bash轉義序列"\["和"\]"括起來。這兩個序列通知bash,被括起來的字符不占用行上的任何空間,這樣就使自動換行能夠繼續正常工作。沒有這兩個轉義序列,盡管您有了一個非常漂亮的提示行,但是如果您鍵入的命令恰好到達終端的最右端,就會造成顯示混亂。
下面是我們最終的提示行:
export PS1="\[\e[32;1m\]\w>; \[\e[0m\]"
別擔心在同一個提示行中使用幾種顏色,就像下面這樣:
export PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\H>; \[\e[0m\]"