在printf的格式化字符串中可以通過添加控制碼的方式來控制打印字符的顏色,shell腳本中echo命令加上-e選項亦可控制輸出字符的顏色。
帶格式控制的一般格式為:
“\033[控制碼1; 控制碼2;控制碼3...m字符串內容\033[控制碼m"
控制碼:
\033[0m 關閉所有屬性 :一般放在后面,這樣只會影響你輸入的字符串的格式
\033[1m 設置高亮度
\03[4m 下划線
\033[5m 閃爍
\033[7m 反顯
\033[8m 消隱
\033[30m -- \033[37m 設置前景色 : 這個是設置字體的顏色,顏色代碼見下
\033[40m -- \033[47m 設置背景色 : 這個是設置字體的背景色,顏色代碼見下
\033[nA 光標上移n行
\03[nB 光標下移n行
\033[nC 光標右移n行
\033[nD 光標左移n行
\033[y;xH設置光標位置
\033[2J 清屏
\033[K 清除從光標到行尾的內容
\033[s 保存光標位置
\033[u 恢復光標位置
\033[?25l 隱藏光標
\33[?25h 顯示光標
\033[1m 設置高亮度
\03[4m 下划線
\033[5m 閃爍
\033[7m 反顯
\033[8m 消隱
\033[30m -- \033[37m 設置前景色 : 這個是設置字體的顏色,顏色代碼見下
\033[40m -- \033[47m 設置背景色 : 這個是設置字體的背景色,顏色代碼見下
\033[nA 光標上移n行
\03[nB 光標下移n行
\033[nC 光標右移n行
\033[nD 光標左移n行
\033[y;xH設置光標位置
\033[2J 清屏
\033[K 清除從光標到行尾的內容
\033[s 保存光標位置
\033[u 恢復光標位置
\033[?25l 隱藏光標
\33[?25h 顯示光標
字體顏色代碼:30-37
30:黑
31:紅
32:綠
33:黃
34:藍色
35:紫色
36:深綠
37:白色
背景顏色代碼:40-47
40:黑
41:深紅
42:綠
43:黃色
44:藍色
45:紫色
46:深綠
47:白色
了解了上面相關的控制碼描述后,我們就根據自己所需來控制輸出的字符格式。
實際應用中我們一般是將需要的輸出格式定義成宏:
比如:
#define COLOR_NONE "\033[0m" //表示清除前面設置的格式
#define RED "\033[1;31;40m" //40表示背景色為黑色, 1 表示高亮
#define BLUE "\033[1;34;40m"
#define GREEN "\033[1;32;40m"
#define YELLOW "\033[1;33;40m"
#define RED "\033[1;31;40m" //40表示背景色為黑色, 1 表示高亮
#define BLUE "\033[1;34;40m"
#define GREEN "\033[1;32;40m"
#define YELLOW "\033[1;33;40m"
使用:printf(RED"Hello World"COLOR_NONE); 就會打出高亮的紅色字的Hello World!!
如果不加COLOR_NONE,那么后續的輸出的字符顯示都會是紅色的。