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