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