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