在終端中輸出彩色文字

見字如晤。bash

開發工做中常常見到終端中各類命令輸出的彩色文字,例如 ls 命令就以不一樣顏色表示文件的不一樣類型。字體

圖片描述

而在咱們本身寫的程序輸出的信息倒是默認的黑色,本文將爲你介紹終端輸出帶顏色的文字的原理,讓咱們開發的程序輸出的控制檯信息有更強的可讀性!編碼

ANSI Escape code

終端用於文本字符的輸入和輸出,ASCII編碼中有些字符是不能用來打印顯示的,好比'\a' 0x7表明響鈴,'\n' 0x0A 表明換行,這些字符被稱爲控制符。spa

今天咱們認識一個新的控制符 '\e' 0x1B,這個字符表明 ESC ,即鍵盤上 ESC 按鍵的做用。ESC 是單詞 escape 的縮寫,即逃逸的意思。文本中出現這個轉義字符,表明其後方的字符是ANSI Escape code編碼。3d

ANSI Escape code編碼中有專門控制字符顏色的控制符,例如:\e[37;44;4;1mcode

  • \e 表明開始ANSI Escape code
  • [ 表明轉義序列開始符 CSI,Control Sequence Introducer
  • 37;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 Introducer
  • 0 表明重置文本樣式
  • 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 位顏色編碼》

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

8位 256顏色碼

圖片描述

示例

\e[31m 紅色開發

\e[38;5;31m 8位表示的青色

\e[31;5;1;4m 閃爍的紅色加粗帶下劃線字體

參考資料

https://en.wikipedia.org/wiki...

相關文章
相關標籤/搜索