如何在支持彩色字符的Linux终端上打印彩色字符?

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

推荐答案

你需要输出ANSI colour codes.请注意,并非所有终端都支持此功能;如果不支持 colored颜色 序列,则会出现垃圾.

例子:

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

这里,\033是ESC字符,ASCII 27.它的后面是[,然后是以;分隔的零或多个数字,最后是字母m.这些数字描述了从那时起要切换到的 colored颜色 和格式.

前景色和背景色的代码如下:

         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

其他支持较少的代码请参见table on Wikipedia.


要确定终端是否支持 colored颜色 序列,请读取TERM环境变量的值.它应该指定使用的特定端子类型(例如vt100gnome-terminalxtermscreen等).然后在terminfo database中查找;判断colors的性能.

Linux相关问答推荐

是否有例外情况需要在.gitconfig中使用?

Linux在所有多行中用新值替换整个列

我需要从 Ubuntu 中删除 .txt 文件中以白色间距分隔的行的白色间距

ln命令报错target not a directory

matlab中linux和windows上regexp()的不同行为

如何在守护进程中使用 popen() 和 pclose() 获取通过管道执行的 shell 命令的正确退出代码?

如何用 Sed 替换 Match 后的 2 个连续行

RealUID,保存的 UID,有效的 UID.这是怎么回事?

如何增加 /proc/pid/cmdline 4096 字节限制?

关于 putenv() 和 setenv() 的问题

为什么这个命令会杀死我的 shell?

带有 curl 的 Linux 脚本来判断 Web 服务是否已启动

Linux 和 I/O 完成端口?

如何在没有空格的情况下打印 awk?

Linux下的签名可执行文件

限制程序在 Linux 中运行的时间

基于shell中正则表达式的 colored颜色 突出显示输出

我可以使用 awk 将所有小写字母转换为大写吗?

Linux:删除多个文件的文件扩展名

如何用逗号而不是空格分割列表