在linux终端中,字符颜色和显示方式是由转义序列
控制的,是文本模式下的系统显示功能,与具体开发语言并无关系(这就代表,任何开发语言都能够使用这个方法)。
一、转义序列是啥
转义序列以控制字ESC
开头,该字符的ASCII码十进制表示为27,十六进制为0x1B,八进制表示为033.多数的转义序列超过两个字符,所以通常以ESC
和左括号[
开头。该起始序列称为控制序列引导符(CSI,Control Sequence Intro),通常由\033[
或者\e[
代替。
通过转义序列设置终端显示属性时,可以采用下列格式
\033[ Param {;Param;...} m
或者
\e[ Param {;Param;...}m
其中,\033[
或者\e[
引导转义序列,m
表示设置属性并结束转义。Param
为属性值,{...}
表示参数是可以多选的,多个参数之间用分号隔开,不限制顺序。
二、详细说明
1、常用例子
先举个最常用的例子:将字体颜色显示为红色
echo -e "\e[31m 红色字 \e[0m"
-e
:在echo的时候需要用到-e
选项,用于激活特殊字符的解释器。
\e[
:引导转义序列
33m
:设置红色前景
红色字
:输出字符串
\e[0m
:用于恢复默认终端输出属性, 否则影响后续输出
2、具体编码说明
显示方式
0:默认值
1:粗体/高亮
2:设置一半亮度
4:下划线
5:闪烁
7:反显、翻转前景色和背景色
22:非粗体
24:无下滑线
25:无闪烁
27:关闭反显
前景色(字体颜色)
30:黑色前景色
31:红色前景色
32:绿色前景色
33:黄色前景色
34:蓝色前景色
35:紫色前景色
36:粉色前景色
37:白色前景色
背景色
40:黑色背景色
41:红色背景色
42:绿色背景色
43:黄色背景色
44:蓝色背景色
45:紫色背景色
46:粉色背景色
47:白色背景色
可以发现显示方式、前景色、背景色的编码都是不一样的,所以可以用这三种属性的编码参数进行组合,多个参数之间用分号隔开,并且编码的前后顺序没有关系。
再来举一个例子收尾:背景色为黄色,前景色为红色,显示方式为闪烁
echo -e "\e[5;43;31m 哈哈哈 \e[0m"
参考文章:
https://www.cnblogs.com/fengliu-/p/10128088.html
https://blog.csdn.net/william_djj/article/details/84563109
https://www.jianshu.com/p/2ef7d816bee4