見字如晤。bash
開發工做中常常見到終端中各類命令輸出的彩色文字,例如 ls
命令就以不一樣顏色表示文件的不一樣類型。字體
而在咱們本身寫的程序輸出的信息倒是默認的黑色,本文將爲你介紹終端輸出帶顏色的文字的原理,讓咱們開發的程序輸出的控制檯信息有更強的可讀性!編碼
終端用於文本字符的輸入和輸出,ASCII編碼中有些字符是不能用來打印顯示的,好比'\a' 0x7
表明響鈴,'\n' 0x0A
表明換行,這些字符被稱爲控制符。spa
今天咱們認識一個新的控制符 '\e' 0x1B
,這個字符表明 ESC
,即鍵盤上 ESC
按鍵的做用。ESC
是單詞 escape 的縮寫,即逃逸的意思。文本中出現這個轉義字符,表明其後方的字符是ANSI Escape code編碼。3d
ANSI Escape code編碼中有專門控制字符顏色的控制符,例如:\e[37;44;4;1m
code
\e
表明開始ANSI Escape code[
表明轉義序列開始符 CSI,Control Sequence Introducer37;44;4;1
表明以;
分隔的文本樣式控制符,其中 37 表明文本前景色爲白色,44表明背景爲藍色,4表明下劃線,1表明加粗m
表明結束控制符序列運行命令:blog
echo -e "\e[37;44;4;1mMCC\e[0m"
將顯示藍色背景,白色文字,加粗帶下劃線的 MCC。-e
參數用於啓用 echo
命令控制符轉碼,結尾的 \e[0m
表明重置文本樣式:圖片
\e
表明開始ANSI Escape code[
表明轉義序列開始符 CSI,Control Sequence Introducer0
表明重置文本樣式m
表明結束控制符序列由於 \e
控制符的16進制碼爲 0x1B
, 8 進制碼爲 033
,因此如下表示方式等價:ip
\e[37;44;4;1mMCC\e[0m
\x1b[37;44;4;1mMCC\x1b[0m
\x1B[37;44;4;1mMCC\x1B[0m
\033[37;44;4;1mMCC\033[0m
編碼 | 說明 |
---|---|
0 | 重置、清除樣式 |
1 | 加粗 |
3 | 斜體 |
4 | 下劃線 |
5 | 閃爍 |
8 | 隱藏 |
30~37 | 前景色,參考下文 《1 位顏色編碼》 |
38 | 設置前景色,後跟 5;n 表明使用8位256顏色碼,後跟 2;r;g;b 表明24位RGB顏色碼 |
40~47 | 背景色《1 位顏色編碼》 |
48 | 設置背景色,後跟 5;n 表明使用8位256顏色碼,後跟 2;r;g;b 表明24位RGB顏色碼 |
90~97 | 亮色前景色,參考下文 《1 位顏色編碼》 |
100~107 | 亮色背景,參考下文 《1 位顏色編碼》 |
顏色 | 前景色編碼 | 背景色編碼 |
---|---|---|
黑色 | 30 | 40 |
紅色 | 31 | 41 |
綠色 | 32 | 42 |
黃色 | 33 | 43 |
藍色 | 34 | 44 |
品紅色 | 35 | 45 |
青色 | 36 | 46 |
白色 (灰) | 37 | 47 |
亮黑色 (灰) | 90 | 100 |
亮紅色 | 91 | 101 |
亮綠色 | 92 | 102 |
亮黃色 | 93 | 103 |
亮藍色 | 94 | 104 |
亮品紅色 | 95 | 105 |
亮青色 | 96 | 106 |
亮白色 | 97 | 107 |
\e[31m
紅色開發
\e[38;5;31m
8位表示的青色
\e[31;5;1;4m
閃爍的紅色加粗帶下劃線字體