1. 前言
大部分 coder 已经习惯了命令行枯燥的黑底白字,而且任何编程语言入门的第一行代码都是教我们如何在标准输出(大部分情况就是命令行终端或控制台)打印一行“非黑即白”的 hello world! 。以至于很多不懂编程的“大佬”都觉得程序猿们都TM奇了个葩了,整天对着一块黑屏,瞎JB敲来敲去,还TM当个宝似的。那么本文将告诉你,这不仅仅是一块黑屏,它还能黑得五彩斑斓,亮瞎?眼。。。哈哈哈。。。下图为本文最终能达到的效果,提前贴出来,以表示我没有在吹?B。
2. ANSI 转义序列 (ANSI Escape sequences)
要在黑白电视机般的命令行终端显示五彩斑斓的文字,就不得不先知道它的实现机制,即用于设置文本属性和颜色的 ANSI 转义序列
。
2.1 什么是 ANSI 转义序列 ?
ANSI 转义序列有些地方也叫 ANSI 转义码(ANSI Escape codes)。它是由 ASCII 码字符组成的序列,用于实现在命令行终端改变图形显示和控制光标移动。
它的前两个字符固定是:
- 转义字符
Esc
,ASCII 码为 27 (十六进制:0x1b
)
- 左中括号字符
[
,ASCII 码为 91 (十六进制:0x5b
)
后跟控制键盘和显示功能的字母数字码(区分大小写)。这里我们只讨论与显示相关的转义序列,即设置图形显示模式。
2.2 使用 ANSI 转义序列设置图形显示模式
格式(注意以字符m
收尾):
Esc[Value;...;Valuem
支持设置的显示模式包含文本属性,前景色和背景色。
2.2.1 文本属性
Value |
文本属性 |
0 |
重置所有属性 |
1 |
粗体显示 |
4 |
下划线 |
5 |
文字闪烁 |
7 |
反向显示 |
8 |
隐藏 |
2.2.2 前景色
Value |
颜色 |
30 |
黑 |
31 |
红 |
32 |
绿 | </