Linux如何在控制台输出带颜色的字体

Linux有一个特殊的转义字符\033,他就是用来帮忙在控制台输出一下花里胡哨的东西的

格式如下:

echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"

其中echo -e的意思是:将转义后的内容输出到屏幕上; 

例如:

echo -e "\033[40;33m Hello World \033[0m"

其中40的位置代表底色, 33的位置是代表字的颜色,\033就是转义开始,\033[0m是什么下面会说,'m'后面到\033[0m的前面就是需要输出到控制台上显示的字符串,所以Hello World!最终的输出会满足背景为40,颜色为33的字体;

我们输出一下:

因为40是黑色,这里和我的背景色重合了不明显,下面就是颜色对应的代码:

\033[X;X m …… \033[0m                 #X;X表示下面的数字

字颜色:30-----------37
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色

字背景颜色范围:40----47
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色

字体加亮颜色:90------------97
90:黑
91:红
92:绿
93:黄
94:蓝色
95:紫色
96:深绿
97:白色

背景加亮颜色范围:100--------------------107
100:黑
101:深红
102:绿
103:黄色
104:蓝色
105:紫色
106:深绿
107:白色

===============================================ANSI控制码的说明
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m -- \33[37m 设置前景色
\033[40m -- \33[47m 设置背景色
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标

\x1b[2J\x1b[$;1H  $表示行位

需要注意的是ANSI的控制码的0是不能省略的

例如:\033[0m是不能写成\33[0m的;

演示

比如我们要输出黄色背景蓝色的字体:

echo -e "\033[43;34m Hello World \033[0m"

 

如果我们的ANSI控制码省略了0,会这样:

 

首先他这个\33[0m是直接输出了,说明没有被转义,而是被当作字符串了,我们知道ANSI控制码\033[0m是关闭所有属性的意思,既然没有被转义,说明我们并没有关闭所有属性,只有当检测到\033[0m的时候才会关闭这个黄色背景蓝色字体;

如下:

还有就是只有"\033[0m"是关闭所有属性,不要误以为ANSI控制码都能关闭所有属性,比如我们这样写:

echo -e "\033[43;34m Hello World \033[4m"

可能有人会觉得,一个\033对应一个\033[4m这样也可以正确输出,实际上:

 

它不仅没有关闭黄色背景蓝色字体,反而还加了一个下划线属性;

如果仅仅是想要输出一个黄色背景蓝色字体的并且带下划线的字符串,可以这样写:

echo -e "\033[43;34m Hello World \033[4m \033[0m"

记得写上\033[0m关闭所有属性即可:

还有一点需要注意,比如我们想输出黄色背景蓝色字体的Hello World!,注意这里带了!

如果我们还按原来那样写:

echo -e "\033[43;34m Hello World! \033[0m"

 

提示找不到! \033[0m;他把!和\033[0m视为一个整体了,解决方法如下:

把他们的距离拉开大一点就行了:

不过这样的话,我们的背景框好像输出的有点长了 

可以写程序:

 

以上就是文章全部的内容了,感谢观看!

转载文章:关于linux特殊含义的转义符\033 - Khazix - 博客园

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值