在终端中输出彩色文字

见字如晤。bash

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

图片描述

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

ANSI Escape code

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

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

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

  • \e 表明开始ANSI Escape code
  • [ 表明转义序列开始符 CSI,Control Sequence Introducer
  • 37;44;4;1 表明以; 分隔的文本样式控制符,其中 37 表明文本前景色为白色,44表明背景为蓝色,4表明下划线,1表明加粗
  • m 表明结束控制符序列

运行命令:blog

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

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

  • \e 表明开始ANSI Escape code
  • [ 表明转义序列开始符 CSI,Control Sequence Introducer
  • 0 表明重置文本样式
  • m 表明结束控制符序列

由于 \e 控制符的16进制码为 0x1B , 8 进制码为 033 ,因此如下表示方式等价:ip

  • \e[37;44;4;1mMCC\e[0m
  • \x1b[37;44;4;1mMCC\x1b[0m
  • \x1B[37;44;4;1mMCC\x1B[0m
  • \033[37;44;4;1mMCC\033[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...

相关文章
相关标签/搜索