unix改變shell顯示顏色

來源:互聯網
上載者:User

標籤:文字   article   war   stop   error   執行   int   lin   exe   

編寫shell指令碼的時候。通過改變shell的顯示顏色,不但可以改變使用shell終端的體驗,並且更為有用的是,可以通過改變顯示內容的顏色來區分正常輸出。warning和error等不同關注層級的輸出內容。

1、逸出序列(Escape sequence)

An escape sequence is a series of characters used to change the state of computers and their attached peripheral devices. These are also known as control sequences, reflecting their use in device control. Some control sequences are special characters that always have the same meaning. Escape sequences use an escape character to change the meaning of the characters which follow it, meaning that the characters can be interpreted as a command to be executed rather than as data.

簡單地說。就是逸出序列可以改變電腦和外設的狀態。這裡用的就是利用逸出字元來改變顯示器的顯示顏色。

2、echo命令

echo命令中有-e選項。通過這個選項。能夠在該條命令中開啟對反斜線轉義的解釋。後面的選項中追加適當的逸出序列能夠改變echo命令輸出的顯示顏色。echo中文字顯示顏色相關的參數主要有三個Style,Frontground和Background。每一個參數有7個值詳細的格式例如以下:

Style           Foreground      Background1st Digit       2nd Digit       3rd Digit0 - Reset       30 - Black      40 - Black1 - FG Bright   31 - Red        41 - Red2 - Unknown     32 - Green      42 - Green3 - Unknown     33 - Yellow     43 - Yellow4 - Underline   34 - Blue       44 - Blue5 - BG Bright   35 - Magenta    45 - Magenta(洋紅色)6 - Unknown     36 - Cyan       46 - Cyan(藍綠色)7 - Reverse     37 - White      47 - White

通過將命令echo -e "\e[Style;Foreground;BackgroundmTHINGSTOPRINT"中的Style、Foreground和Background換成上面的數字就能夠改變後面THINGSTOPRINT的顯示顏色。比方。$ echo -e "\e[1;32;43mHello World! "的執行結果1。


圖1

註:這裡之所以Hello World!最後的歎號後面加一個空格,是由於unix shell中歎號是保留字元,用來調用曆史命令。比方!cmd就運行上一條運行過的cmd開頭的命令。而!cmd:p則是僅僅是將上一條cmd開頭的命令喚出顯示出來。而不運行。

能夠發現這種話,興許全部行的shell顯示顏色都會被改變,這往往不是我們想要的,所以一般來說,我們會在這種命令的末尾將這些顯示設定給Reset。同一時候。為了不被上一次命令影響,也會在之前設定style的值來進行開始設定之前的reset。(當然,假設要將style設定成underline或者FGorBG Bright之類的值得時候。就沒法在開始設定之前進行reset了,可是,最後的reset是不管怎樣都是必要的,除非你想接下來全部的顯示一直採用當前的設定。)以下幾條命令的執行結果例如以2。

命令:

echo -e "\e[1;32;43mHello World! \e[0m" echo -e "\e[0;32;43mHello World! \e[0m" echo -e "\e[4;32;43mHello World! \e[0m" echo -e "\e[5;32;43mHello World! \e[0m"


圖2 執行結果

3、列印全部顯示效果的指令碼

指令碼test.sh的內容:#/bin/bashfor TYLE in 0 1 2 3 4 5 6 7; do   for FG in 30 31 32 33 34 35 36 37;   do      for BG in 40 41 42 43 44 45 46 47;      do         CTRL="\033[${STYLE};${FG};${BG}m"         echo -en "${CTRL}"         echo -n "${STYLE};${FG};${BG}"         echo -en "\033[0m"      done      echo   done   echodone#Resetecho -e "\033[0m"

註:這裡改指令碼中用到了echo的-n選項。它的作用就是控制不要再輸出內容的後面追加換行,與之相應的僅僅有一個echo的命令就是簡單地輸出一個空行。達到換行的目的。

sh test.sh執行該指令碼,就能夠看到彩虹般的結果。3(結果有點長,這裡僅僅截取了一部分)。


圖3 彩虹



unix改變shell顯示顏色

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.