1.linux 命令提示符個性化

在 ANSI 相容終端(例如 xterm、rxvt、konsole 等)裡, 可以用彩色顯示文字而不僅僅是黑白。 本文示範瞭如何使用粗體和彩色的文字。

    相信每一位Linux使用者都要面對 Bash。 雖然第一眼看上去非常枯燥,但是又很多方法能夠讓你的 shell 足夠的個性化。 shell 提示符的彩色增強讓能夠讓你的 shell 獨一無二, 而且還非常清晰易讀。

在本文中我以 Bash shell 為例。因為在不同的終端裡的轉義序列不完全相同, 所以在本文中我使用的是 ANSI 終端。 

  shell 彩色配置出現在 bash 的個人配置檔案 ~/.bashrc 或者是全域性配置檔案 /etc/bashrc 裡面。 可以通過bashrc 裡面的 PS1 變數來設定提示符的外觀。

一般預設的情況下.bashrc裡面應該是:

                 ~/.bashrc

                  export    PS1=' \[email protected]\h:\w\$ '

                  上面的意思是:使用者@主機:當前目錄 $

                   -->這也是大家都非常熟悉的shell提示符 。

下面簡單說說環境下預設的特殊符號所代表的意義:

/d :代表日期,格式為weekday month date,例如:"Mon Aug 1"

/H :完整的主機名稱。例如:我的機器名稱為:fc4.linux,則這個名稱就是fc4.linux

/h :僅取主機的第一個名字,如上例,則為fc4,.linux則被省略

/t :顯示時間為24小時格式,如:HH:MM:SS

/T :顯示時間為12小時格式

/A :顯示時間為24小時格式:HH:MM

/u :當前使用者的賬號名稱

/v :BASH的版本資訊

/w :完整的工作目錄名稱。家目錄會以 ~代替

/W :利用basename取得工作目錄名稱,所以只會列出最後一個目錄

/# :下達的第幾個命令

/$ :提示字元,如果是root時,提示符為:# ,普通使用者則為:$



轉義序列

要是通過彩色化提示符來增加個性化,就要用到轉義序列。 轉義序列就是一個讓 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\[email protected]\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\[email protected]\h:

                                                --------->定義右邊的 \[email protected]\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 即可。

2.ubuntu 修改目錄的顯示顏色

因為ubuntu下的/etc/目錄裡沒有DIR_COLORS, 所以費了點勁兒

1. 利用dircolors命令,檢視我們的系統當前的檔名稱顯示顏色的值,然後利用管道重定向到使用者目錄下的任意一個檔案(這裡我們建立了一個.dir_colors檔案)

     命令1: cd ~

    命令2: dircolors -p > .dir_colors

2. 用vim開啟.dir_colors檔案,然後找到“DIR 01;34”   //這裡的01表示高亮度顯示,34表示藍色,33表示黃色

    修改為 “DIR 01;33”,儲存退出

3. 為了將修改之後的配置檔案匯入到dircolors中,我們採取如下的方案

    開啟使用者目錄下的.bashrc檔案,找到類似“eval 'dircolors -b '”(如果沒有自行新增),

   修改為 eval 'dircolors -b .dir_colors'   儲存退出   //這裡的.dir_colors就是我們前面自己建立的檔案

4. 為了讓修改生效,退出,並重新進入系統

命令: exit

5. 就可以按照你的意思來顯示目錄了

.