printf打印带颜色的字符
在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,那么后续的输出的字符显示都会是红色的。