Linux中带颜色输出的printf使用简介(\033)

时间:2023-03-09 17:38:41
Linux中带颜色输出的printf使用简介(\033)

昨晚懒得FQ, 百度了一下linux中printf输出颜色的方法, 结果搜索结果质量让人倍感伤心. 越来越不想用bd了.
还是Google一下吧, 手气真好, 第一个内容就很清楚明了!

我还是直接简单翻译一下就OK.

有一些通常被称作控制字符的特殊字符, 当在被控制台终端读取时, 它们会影响文本的显示方式.

这些控制字符的通用格式如下:

Esc[{attr1};...;{attrn}m

其中:

Esc 是转义字符, 其值为"\033";
[ 是常量的左中括号;
{attr1};...{attrn} 是若干属性, 通常是由一个有特定意义的数字代替, 每个属性之间用分号分隔;
m 就是字面常量字符m;

可用属性列表:

通用格式控制:

0 重围所有属性
1 高亮/加粗
2 暗淡
4 下划线
5 闪烁
7 反转
8 隐藏

前景色:

30 黑色
31 红色
32 绿色
33 黄色
34 蓝色
35 品红
36 青色
37 白色

背景色:

40 黑色
41 红色
42 绿色
43 黄色
44 蓝色
45 品红
46 青色
47 白色

比如要输出的字体前景为红色:

 printf("\033[31mThis text is red \033[0mThis text has default color\n");

如果同时还要加上黄色的背景:

printf("\033[31;43mThis text is red with yellow background \033[0mThis text has default color\n");

效果图: (示例解析程序: https://github.com/movsb/common/blob/master/sources/DataProcessor.cpp#L129, 可能会改变)

Linux中带颜色输出的printf使用简介(\033)

更详细的链接:
  http://www.cplusplus.com/forum/unices/36461/
  http://ascii-table.com/ansi-escape-sequences.php
  http://ascii-table.com/ansi-escape-sequences-vt-100.php