Go语言在Linux终端输出彩色字符
文章目录
Linux终端输出颜色
开发工作中经常见到终端中各种命令输出的彩色文字,例如 ls 命令就以不同颜色表示文件的不同类型。

而在我们自己写的程序输出的信息却是默认的黑色,本文将为你介绍终端输出带颜色的文字的原理,让我们开发的程序输出的控制台信息有更强的可读性!
ANSI Escape code
终端用于文本字符的输入和输出,ASCII编码中有些字符是不能用来打印显示的,比如’\a’ 0x7代表响铃,’\n’ 0x0A 代表换行,这些字符被称为控制符。
今天我们认识一个新的控制符 ‘\e’ 0x1B,这个字符代表 ESC ,即键盘上 ESC 按键的作用。ESC 是单词 escape 的缩写,即逃逸的意思。文本中出现这个转义字符,代表其后方的字符是ANSI Escape code编码。
ANSI Escape code编码中有专门控制字符颜色的控制符,例如:\e[37;44;4;1m
|
|
运行命令:
|
|
将显示蓝色背景,白色文字,加粗带下划线的 MCC。-e 参数用于启用 echo 命令控制符转码,结尾的 \e[0m 代表重置文本样式:
|
|
因为 \e 控制符的16进制码为 0x1B , 8 进制码为 033 ,所以以下表示方式等价:
|
|
常用文本样式控制符
| 编码 | 说明 |
|---|---|
| 0 | 重置、清除样式 |
| 1 | 加粗 |
| 3 | 斜体 |
| 4 | 下划线 |
| 5 | 闪烁 |
| 8 | 隐藏 |
| 30~37 | 前景色,参考下文 《1 位颜色编码》 |
| 38 | 设置前景色,后跟 5;n代表使用8位256颜色码,后跟 2;r;g;b代表24位RGB颜色码 |
| 40~47 | 背景色《1 位颜色编码》 |
| 48 | 设置背景色,后跟 5;n代表使用8位256颜色码,后跟 2;r;g;b代表24位RGB颜色码 |
| 90~97 | 亮色前景色,参考下文 《1 位颜色编码》 |
| 100~107 | 亮色背景,参考下文 《1 位颜色编码》 |
1 位颜色编码
| 颜色 | 前景色编码 | 背景色编码 |
|---|---|---|
| 黑色 | 30 | 40 |
| 红色 | 31 | 41 |
| 绿色 | 32 | 42 |
| 黄色 | 33 | 43 |
| 蓝色 | 34 | 44 |
| 品红色 | 35 | 45 |
| 青色 | 36 | 46 |
| 白色 (灰) | 37 | 47 |
| 亮黑色 (灰) | 90 | 100 |
| 亮红色 | 91 | 101 |
| 亮绿色 | 92 | 102 |
| 亮黄色 | 93 | 103 |
| 亮蓝色 | 94 | 104 |
| 亮品红色 | 95 | 105 |
| 亮青色 | 96 | 106 |
| 亮白色 | 97 | 107 |
8位 256颜色码

示例
|
|
Go语言在终端输出颜色
Go语言要打印彩色字符与Linux终端输出彩色字符类似,以黑色背景高亮绿色字体为例:
|
|
其中0x1B是标记,[开始定义颜色,1代表高亮,40代表黑色背景,32代表绿色前景,0m代表恢复默认颜色。显示效果为:
下面代码遍历全部显示效果。
|
|
第三方库fatih/color
实际开发过程中,可以选择fatih/color库.
文章作者 Forz
上次更新 2019-04-18