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