摘要:開(kāi)發(fā)工作中經(jīng)常見(jiàn)到終端中各種命令輸出的彩色文字,例如命令就以不同顏色表示文件的不同類(lèi)型。文本中出現(xiàn)這個(gè)轉(zhuǎn)義字符,代表其后方的字符是編碼。
見(jiàn)字如晤。
開(kāi)發(fā)工作中經(jīng)常見(jiàn)到終端中各種命令輸出的彩色文字,例如 ls 命令就以不同顏色表示文件的不同類(lèi)型。
而在我們自己寫(xiě)的程序輸出的信息卻是默認(rèn)的黑色,本文將為你介紹終端輸出帶顏色的文字的原理,讓我們開(kāi)發(fā)的程序輸出的控制臺(tái)信息有更強(qiáng)的可讀性!
ANSI Escape code終端用于文本字符的輸入和輸出,ASCII編碼中有些字符是不能用來(lái)打印顯示的,比如"a" 0x7代表響鈴," " 0x0A 代表?yè)Q行,這些字符被稱(chēng)為控制符。
今天我們認(rèn)識(shí)一個(gè)新的控制符 "e" 0x1B,這個(gè)字符代表 ESC ,即鍵盤(pán)上 ESC 按鍵的作用。ESC 是單詞 escape 的縮寫(xiě),即逃逸的意思。文本中出現(xiàn)這個(gè)轉(zhuǎn)義字符,代表其后方的字符是ANSI Escape code編碼。
ANSI Escape code編碼中有專(zhuān)門(mén)控制字符顏色的控制符,例如:e[37;44;4;1m
e 代表開(kāi)始ANSI Escape code
[ 代表轉(zhuǎn)義序列開(kāi)始符 CSI,Control Sequence Introducer
37;44;4;1 代表以; 分隔的文本樣式控制符,其中 37 代表文本前景色為白色,44代表背景為藍(lán)色,4代表下劃線(xiàn),1代表加粗
m 代表結(jié)束控制符序列
運(yùn)行命令:
echo -e "e[37;44;4;1mMCCe[0m"
將顯示藍(lán)色背景,白色文字,加粗帶下劃線(xiàn)的 MCC。-e 參數(shù)用于啟用 echo 命令控制符轉(zhuǎn)碼,結(jié)尾的 e[0m 代表重置文本樣式:
e 代表開(kāi)始ANSI Escape code
[ 代表轉(zhuǎn)義序列開(kāi)始符 CSI,Control Sequence Introducer
0 代表重置文本樣式
m 代表結(jié)束控制符序列
因?yàn)?e 控制符的16進(jìn)制碼為 0x1B , 8 進(jìn)制碼為 033 ,所以以下表示方式等價(jià):
e[37;44;4;1mMCCe[0m
x1b[37;44;4;1mMCCx1b[0m
x1B[37;44;4;1mMCCx1B[0m