最近写的程序会在终端给出大量输出, 如果都是黑底白字那这一大堆字刷刷刷往上冒一会就能把人看眼晕, 但我发现了一个很实用而简单的技巧: 让特定类型的输出显示为特定的颜色!
比如这样:
[MESSAGE] Turning left
[DEBUG] target: 4
[Error] target not found
[MESSAGE] Turning left
[MESSAGE] Diving
[INFO] depth: 9m
[MESSAGE] Diving
[INFO] depth: 10m
[MESSAGE] Forward
[MESSAGE] Turing right
能极大的增强终端信息的可读性!😆
这应该是Linux终端的特性, (我并不清楚是否兼容Windows命令行), shell, python, C++的彩色文字语法几乎是一样的.
颜色表
前景色 (字体颜色) 代码 | 背景色代码 | 颜色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 紅色 |
32 | 42 | 綠色 |
33 | 43 | 黃色 |
34 | 44 | 藍色 |
35 | 45 | 紫紅色 |
36 | 46 | 青藍色 |
37 | 47 | 白色 |
字体效果表
代码 | 效果 |
---|---|
0 | 默认 |
1 | 高亮(加粗) |
4 | 下划线 |
5 | 闪烁 |
7 | 反色 |
8 | 不可见 |
常见问题
语法
shell语法
举例:
1 | echo "\e[31;43;1mError\!\e[0m" |
💡 如果上面这条命令不是彩色的, 执行echo -e "\e[31;43;1mError\!\e[0m"
运行上面这条命令会输出一个黄底红色粗体字的"Error!". 前景色, 背景色和字体效果的代码没有先后顺序之分. 建议每个\e[a;b;c
都接一个\e[0m
将字体效果恢复默认, 不然后续输出还是带特殊效果的.
python语法
在print()
中使用的示例:
1 | print("\033[31;43;1mError!\033[0m") |
或者可以通过python执行shell命令:
1 | import os |
C++语法
在C++中使用的语法和在python中是一样的:
1 | std:cout << "\033[31;43;1m" << "Error!" << "\033[0m" << std:endl; |
一个小技巧是可以单独写一个color_print.h
, 内容示例:
1 |
然后在要显示彩色输出的cpp文件中引用这个头文件, 打印语句示例:
1 | print(BOLDRED, "Error!"); |
因为是宏替换因此context
字段其实可以随意填, 比如有一个变量depth
, 用下面语句来打印深度是可以的:
1 | print(BOLDGREEN, "depth: " << depth << "m") |
超好用!😆