Preface
你可透過設定 提示字元變數名稱:PS1(1為數字1)來變更 Linux 登入 terminal 的提示符:
和 Linux 內的許多程序一樣,shell 提示符是可高度配置的,雖然我們把它相當多地看作是理所當然的, 但是我們一旦學會了怎樣控制它,shell 提示符是一個真正有用的設備。
解剖一個提示符
我們默認的提示符看起來像這樣:
注意它包含我們的 用戶名,主機名和當前工作目錄,但是它又是怎樣得到這些東西的呢?結果證明非常簡單。提示符是由一個環境變量定義的,叫做 PS1(是“prompt string one” 的簡寫)。我們可以通過 echo 命令來查看 PS1 的內容。
從輸出結果中,我們看到那個PS1 環境變量包含一些這樣的字符,比方說中括號,@符號,和美元符號, 但是剩餘部分就是在提示符中shell 會特殊對待得字符列表包括:
添加顏色
大多數終端仿真器程序支持一定的非打印字符序列來控制,比方說字符屬性(像顏色,黑體和可怕的閃爍) 和光標位置。我們會更深入地討論光標位置,但首先我們要看一下字體顏色:
字符顏色是由發送到終端仿真器的一個嵌入到了要顯示的字符流中的ANSI 轉義編碼來控制的。這個控制編碼不會“打印”到屏幕上,而是被終端解釋為一個指令。正如我們在上表看到的字符序列, 這個[ 和] 序列被用來封裝這些非打印字符。一個ANSI 轉義編碼以一個八進制 033(這個編碼是由退出按鍵產生的)開頭,其後跟著一個可選的字符屬性,在之後是一個指令。例如,把文本顏色設為正常(attribute = 0),黑色文本的編碼如下:
地下是一個可用的文本顏色列表, 並使用變數代表:
- txtblk='\e[0;30m' # Black - Regular
- txtred='\e[0;31m' # Red
- txtgrn='\e[0;32m' # Green
- txtylw='\e[0;33m' # Yellow
- txtblu='\e[0;34m' # Blue
- txtpur='\e[0;35m' # Purple
- txtcyn='\e[0;36m' # Cyan
- txtwht='\e[0;37m' # White
- bldblk='\e[1;30m' # Black - Bold
- bldred='\e[1;31m' # Red
- bldgrn='\e[1;32m' # Green
- bldylw='\e[1;33m' # Yellow
- bldblu='\e[1;34m' # Blue
- bldpur='\e[1;35m' # Purple
- bldcyn='\e[1;36m' # Cyan
- bldwht='\e[1;37m' # White
- unkblk='\e[4;30m' # Black - Underline
- undred='\e[4;31m' # Red
- undgrn='\e[4;32m' # Green
- undylw='\e[4;33m' # Yellow
- undblu='\e[4;34m' # Blue
- undpur='\e[4;35m' # Purple
- undcyn='\e[4;36m' # Cyan
- undwht='\e[4;37m' # White
- bakblk='\e[40m' # Black - Background
- bakred='\e[41m' # Red
- bakgrn='\e[42m' # Green
- bakylw='\e[43m' # Yellow
- bakblu='\e[44m' # Blue
- bakpur='\e[45m' # Purple
- bakcyn='\e[46m' # Cyan
- bakwht='\e[47m' # White
- txtrst='\e[0m' # Text Reset
Example
如果你要客製自己的 Terminal 提示符, 可以考慮將 PS1 設定設置在 /etc/bashrc 下:
Supplement
* Linux/Unix Command - tput
* 自定制shell 提示符
* 鳥哥 Linux 私房菜 - 認識與學習 BASH
* nixCraft - How to: Change / Setup bash custom prompt (PS1)
* Bash tips: Colors and formatting
沒有留言:
張貼留言