一尘不染

如何将彩色文本输出到Linux终端?

linux

如何将彩色字符打印到支持它的Linux终端?

如何判断终端是否支持颜色代码?


阅读 222

收藏
2020-06-02

共1个答案

一尘不染

您需要输出ANSI颜色代码。请注意,并非所有终端都支持此功能。如果不支持颜色序列,则会显示垃圾。

例:

 cout << "\033[1;31mbold red text\033[0m\n";

此处\033是ESC字符ASCII27。其后是[,然后是零个或多个数字,以分隔;,最后是字母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环境变量的值。应该指定使用的特定终端类型(例如vt100gnome- terminalxtermscreen,…)。然后在terminfo数据库中查找;
检查colors功能。

2020-06-02