资讯专栏INFORMATION COLUMN

在终端中输出彩色文字

dreambei / 1466人阅读

摘要:开发工作中经常见到终端中各种命令输出的彩色文字,例如命令就以不同颜色表示文件的不同类型。文本中出现这个转义字符,代表其后方的字符是编码。

见字如晤。

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

而在我们自己写的程序输出的信息却是默认的黑色,本文将为你介绍终端输出带颜色的文字的原理,让我们开发的程序输出的控制台信息有更强的可读性!

ANSI Escape code

终端用于文本字符的输入和输出,ASCII编码中有些字符是不能用来打印显示的,比如"a" 0x7代表响铃," " 0x0A 代表换行,这些字符被称为控制符。

今天我们认识一个新的控制符 "e" 0x1B,这个字符代表 ESC ,即键盘上 ESC 按键的作用。ESC 是单词 escape 的缩写,即逃逸的意思。文本中出现这个转义字符,代表其后方的字符是ANSI Escape code编码。

ANSI Escape code编码中有专门控制字符颜色的控制符,例如:e[37;44;4;1m

e 代表开始ANSI Escape code

[ 代表转义序列开始符 CSI,Control Sequence Introducer

37;44;4;1 代表以; 分隔的文本样式控制符,其中 37 代表文本前景色为白色,44代表背景为蓝色,4代表下划线,1代表加粗

m 代表结束控制符序列

运行命令:

echo -e "e[37;44;4;1mMCCe[0m"

将显示蓝色背景,白色文字,加粗带下划线的 MCC。-e 参数用于启用 echo 命令控制符转码,结尾的 e[0m 代表重置文本样式:

e 代表开始ANSI Escape code

[ 代表转义序列开始符 CSI,Control Sequence Introducer

0 代表重置文本样式

m 代表结束控制符序列

因为 e 控制符的16进制码为 0x1B , 8 进制码为 033 ,所以以下表示方式等价:

e[37;44;4;1mMCCe[0m

x1b[37;44;4;1mMCCx1b[0m

x1B[37;44;4;1mMCCx1B[0m

33[37;44;4;1mMCC33[0m

常用文本样式控制符
编码 说明
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颜色码

示例

e[31m 红色

e[38;5;31m 8位表示的青色

e[31;5;1;4m 闪烁的红色加粗带下划线字体

参考资料

https://en.wikipedia.org/wiki...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90586.html

相关文章

  • NPM酷库:chalk,多彩的粉笔

    摘要:酷库,每天两分钟,了解一个流行库。在梁兴臣公众号文章在终端中输出彩色文字中介绍了在终端中删除彩色文字的原理,例如将在终端中输出蓝色带下划线的。安装使用将各种颜色和样式修饰符实现为各个函数,并且支持链式调用。 showImg(https://segmentfault.com/img/bV1jlX?w=500&h=231); NPM酷库,每天两分钟,了解一个流行NPM库。 在梁兴臣公众号文...

    1treeS 评论0 收藏0
  • SpringBoot 实战 (七) | 默认日志配置

    摘要:前言如题,今天介绍默认日志的配置。默认日志默认情况下,用来记录日志,并用级别输出到控制台。若要增加文件输出,需要在中配置或属性。后语以上默认日志的配置教程。 微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 前言 如题,今天介绍 springboot 默认日志的配置。 默认日志 Logback 默认情况下,Spring Boot 用 Logback 来记录日...

    Dionysus_go 评论0 收藏0
  • Python编码问题及文解决方案

    摘要:中国人民看到这样很不错,于是就把这种汉字方案叫做。结果扩展之后的编码方案被称为标准,包括了的所有内容,同时又增加了近个新的汉字包括繁体字和符号。 声明:文章借鉴自【彻底搞懂 python 中文乱码问题】 一. 各种编码的由来 1.1 ASCII编码 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为...

    kevin 评论0 收藏0
  • PHP 给图片制作水印的方法

    摘要:我们经常能在图片上看到一些水印,一般分为图片文字或者是两种一起的结合。那么给图片加水印就非常有必要了。怎么用实现给图片加水印呢先来看看效果使用库使用库来实现效果图像处理和手册正所谓授人以鱼不如授人以渔,光贴代码不讲实现过程的,都是耍流氓。 我们经常能在图片上看到一些水印,一般分为图片、文字或者是两种一起的结合。那为什么要加水印呢?目的是为了防止别人盗图、造假或者标注出处等,保护图片原作...

    sixgo 评论0 收藏0
  • C# 将彩色PDF转为灰度PDF

    摘要:本文以代码为例介绍如何实现将彩色文件转为灰度黑白的文件,即将文档里面的彩色图片或者文字等通过调用方法转为文档页面为灰色调无彩色效果的文档。将以下内容复制到控制台安装。转彩色为灰度这里转换主要用到以下步骤使用类加载文件。 ​本文以C#代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即将PDF文档里面的彩色图...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

最新活动
阅读需要支付1元查看
<