Linux終端下的顏色設定

來源:互聯網
上載者:User

在 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提示符 。

逸出序列


是通過彩色化提示符來增加個人化,就要用到逸出序列。 逸出序列就是一個讓 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 即可。

夠簡單吧?

看看root下的shell:


這個也不錯,是 Nico Golde的:

PS1="/[/033[0;37;44m/u@/033[0;32;43m/h:/033[0;33;41m/w$/033[0m/]"



nico@ ebrain: ~$

這裡還有更多的顏色組合,是通過bash shell指令碼實現的所有顏色組合。你可以挑選你自己喜歡的任意一種。

 

 

文字屬性

剛才提到了,在第一個逸出序列後面的“0”是提示符的文本的預設顏色設定。 對於文字屬性來說,這些值是有意義的:0、1、22、4、24、5、25、7、27, 分別表示:預設值、粗體、非粗體、底線、非底線、閃爍、非閃爍、 反顯、非反顯。

通過下面這一段短小的指令碼,我們可以看看色彩組合。

#!/bin/sh

############################################################

# Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de

# Last change: Mon Feb 16 16:24:41 CET 2004

############################################################


for attr in 0 1 4 5 7 ; do

echo "----------------------------------------------------------------"

printf "ESC[%s;Foreground;Background - /n" $attr

for fore in 30 31 32 33 34 35 36 37; do

for back in 40 41 42 43 44 45 46 47; do

printf '/033[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back

done

printf '/n'

done

printf '/033[0m'

done

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.