平时我们通过echo/print/puts/printf等等函数想标准输出设备输出内容是很多时候都只是为了输出文字,并不要求有控制样式(颜色背景等)。
但在某些情况下我们想让程序输出更为直观漂亮,这个时候我们就可以考虑使用ANSI的控制序列才操作了,当然前提是当前的终端支持ANSI标准。
我们先说一下ASCII码,标准的ASCII为128个字符,约定了个字符的编码,前32个为控制字符,可以看一下百度百科的相关介绍。
这32个控制字符里面,有个特殊的ESC(033/27/0x1B),该字符叫逃逸控制符,后面跟着逃逸序列,格式一般为ESC[xxxx

比如打印红色字

shell

echo -e "\033[31mHello World\033[0m"

python

print("\033[31mHello World\033[0m")

上述代码输出结果

image.png

以下是完整的 ANSI 控制序列整理,包括光标控制、文本属性、背景颜色、清屏、光标隐藏/显示等(空格不需要,只是为了更好看):

光标控制
ESC [ H 或 ESC [ 1 ; 1 H:移动光标到左上角。
ESC [ y ; x H:移动光标到指定位置(y行,x列)。
ESC [ A:光标上移一行。
ESC [ B:光标下移一行。
ESC [ C:光标右移一列。
ESC [ D:光标左移一列。
清除行
ESC [ 0 K:清除光标右侧的内容(从光标位置到行尾)。
ESC [ 1 K:清除光标左侧的内容(从行首到光标位置)。
ESC [ 2 K:清除整个行的内容。
文本属性
ESC [ 0 m:重置所有属性。
ESC [ 1 m:加粗文本。
ESC [ 3 1 m:红色文本。
ESC [ 3 2 m:绿色文本。
ESC [ 3 3 m:黄色文本。
ESC [ 3 4 m:蓝色文本。
ESC [ 3 5 m:紫色文本。
ESC [ 3 6 m:青色文本。
ESC [ 3 7 m:白色文本。
背景颜色
ESC [ 4 0 m:黑色背景。
ESC [ 4 1 m:红色背景。
ESC [ 4 2 m:绿色背景。
ESC [ 4 3 m:黄色背景。
ESC [ 4 4 m:蓝色背景。
ESC [ 4 5 m:紫色背景。
ESC [ 4 6 m:青色背景。
ESC [ 4 7 m:白色背景。
清屏
ESC [ 2 J:清除屏幕。
ESC [ 1 J:清除光标上方的内容。
ESC [ 0 J:清除光标下方的内容。
光标隐藏/显示
ESC [ ? 25 l:隐藏光标。
ESC [ ? 25 h:显示光标。
其他控制
ESC [ s:保存光标位置。
ESC [ u:恢复光标位置。
以上是 ANSI 控制序列的完整整理,涵盖了常用的控制功能。

RobinTang
3.9k 声望37 粉丝