unix改变shell显示颜色
編寫shell腳本的時候。通過改變shell的顯示顏色,不但可以改變使用shell終端的體驗(yàn),并且更為有用的是,可以通過改變顯示內(nèi)容的顏色來區(qū)分正常輸出。warning和error等不同關(guān)注級別的輸出內(nèi)容。
1、轉(zhuǎn)義序列(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.
簡單地說。就是轉(zhuǎn)義序列可以改變電腦和外設(shè)的狀態(tài)。這里用的就是利用轉(zhuǎn)義字符來改變顯示器的顯示顏色。
2、echo命令
echo命令中有-e選項(xiàng)。通過這個選項(xiàng)。能夠在該條命令中開啟對反斜杠轉(zhuǎn)義的解釋。后面的選項(xiàng)中追加適當(dāng)?shù)霓D(zhuǎn)義序列能夠改變echo命令輸出的顯示顏色。echo中文字顯示顏色相關(guān)的參數(shù)主要有三個Style,Frontground和Background。每一個參數(shù)有7個值詳細(xì)的格式例如以下:
Style Foreground Background 1st Digit 2nd Digit 3rd Digit 0 - Reset 30 - Black 40 - Black 1 - FG Bright 31 - Red 41 - Red 2 - Unknown 32 - Green 42 - Green 3 - Unknown 33 - Yellow 43 - Yellow 4 - Underline 34 - Blue 44 - Blue 5 - BG Bright 35 - Magenta 45 - Magenta(洋紅色) 6 - Unknown 36 - Cyan 46 - Cyan(藍(lán)綠色) 7 - Reverse 37 - White 47 - White通過將命令echo -e "\e[Style;Foreground;BackgroundmTHINGSTOPRINT"中的Style、Foreground和Background換成上面的數(shù)字就能夠改變后面THINGSTOPRINT的顯示顏色。比方。$ echo -e "\e[1;32;43mHello World! "的執(zhí)行結(jié)果如圖1。
圖1
注:這里之所以Hello World!最后的嘆號后面加一個空格,是由于unix shell中嘆號是保留字符,用來調(diào)用歷史命令。比方!cmd就運(yùn)行上一條運(yùn)行過的cmd開頭的命令。而!cmd:p則是僅僅是將上一條cmd開頭的命令喚出顯示出來。而不運(yùn)行。
能夠發(fā)現(xiàn)這種話,興許全部行的shell顯示顏色都會被改變,這往往不是我們想要的,所以一般來說,我們會在這種命令的末尾將這些顯示設(shè)置給Reset。同一時候。為了不被上一次命令影響,也會在之前設(shè)置style的值來進(jìn)行開始設(shè)置之前的reset。(當(dāng)然,假設(shè)要將style設(shè)置成underline或者FGorBG Bright之類的值得時候。就沒法在開始設(shè)置之前進(jìn)行reset了,可是,最后的reset是不管怎樣都是必要的,除非你想接下來全部的顯示一直採用當(dāng)前的設(shè)置。)以下幾條命令的執(zhí)行結(jié)果例如以下圖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 執(zhí)行結(jié)果
3、打印全部顯示效果的腳本
腳本test.sh的內(nèi)容: #/bin/bash for TYLE in 0 1 2 3 4 5 6 7; dofor FG in 30 31 32 33 34 35 36 37;dofor BG in 40 41 42 43 44 45 46 47;doCTRL="\033[${STYLE};${FG};${BG}m"echo -en "${CTRL}"echo -n "${STYLE};${FG};${BG}"echo -en "\033[0m"doneechodoneecho done #Reset echo -e "\033[0m"注:這里改腳本中用到了echo的-n選項(xiàng)。它的作用就是控制不要再輸出內(nèi)容的后面追加換行,與之相應(yīng)的僅僅有一個echo的命令就是簡單地輸出一個空行。達(dá)到換行的目的。
sh test.sh執(zhí)行該腳本,就能夠看到彩虹般的結(jié)果。如圖3(結(jié)果有點(diǎn)長,這里僅僅截取了一部分)。
圖3 彩虹
轉(zhuǎn)載于:https://www.cnblogs.com/lytwajue/p/6840463.html
總結(jié)
以上是生活随笔為你收集整理的unix改变shell显示颜色的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux cp命令 拷贝文件
- 下一篇: [转载]Java-集合框架完全解析