如何将彩色字符打印到支持它的Linux终端?
如何判断终端是否支持颜色代码?
您需要输出ANSI颜色代码。请注意,并非所有终端都支持此功能。如果不支持颜色序列,则会显示垃圾。
例:
cout << "\033[1;31mbold red text\033[0m\n";
此处\033是ESC字符ASCII27。其后是[,然后是零个或多个数字,以分隔;,最后是字母m。数字描述从该点开始要切换到的颜色和格式。
\033
[
;
m
前景色和背景色的代码为:
foreground background black 30 40 red 31 41 green 32 42 yellow 33 43 blue 34 44 magenta 35 45 cyan 36 46 white 37 47
此外,您可以使用以下这些:
reset 0 (everything back to normal) bold/bright 1 (often a brighter shade of the same colour) underline 4 inverse 7 (swap foreground and background colours) bold/bright off 21 underline off 24 inverse off 27
请参阅Wikipedia上的表格,以获取其他不那么受支持的代码。
要确定您的终端是否支持颜色序列,请读取TERM环境变量的值。应该指定使用的特定终端类型(例如vt100,gnome- terminal,xterm,screen,…)。然后在terminfo数据库中查找; 检查colors功能。
TERM
vt100
gnome- terminal
xterm
screen
colors