linux ANSI控制码

ANSI/3.64控制码标准 ANSI控制码均以 Esc[ 作为控制码的开始标志,其中,Esc 的ansi码为 27-十进制,33-八进制,所以在c中,可以使用 \033 表示。

详见 维基百科

在linux终端使用echo输出带颜色的字符,需要使用ANSI控制码。ANSI控制码开始的标志都为ESC[,在这里ESC对应ASCII码表的033(八进制),所以echo命令使用-e选项启用转义,用”\033”来输入ESC。如下命令echo的参数中:

echo -e "\033[42;36;5msomething here\033[0m"

\ 转义
033[ ANSI控制码的起始标志
42 字体背景颜色码,范围是40-49,42表示绿色。
;  用来分隔属性
36 字体颜色码,范围是30-39,36表示深绿色。
5 闪烁
m 控制标记,前面的为属性,后面的为字符
something here 打印的文本
0 控制码,表示关闭所有控制属性,如果不关闭,终端会继续使用上面的属性。

以m为标记的,是控制字符显示相关的设置,如果有多项设置,可以使用分号将两个数字连接起来,也可以使用连续多个\033[nm。

控制字符,ASCII 码小于 32 的字符都是控制字符。

ANSI控制码

控制码 作用
0 关闭所有属性
1 设置高亮度
4 下划线
5 闪烁
7 反显
8 消隐
22 设置正常亮度
24 关闭下划线
25 不闪烁
30 - 37 设置前景色
40 - 47 设置背景色
nA 光标上移n行
nB 光标下移n行
nC 光标右移n行
nD 渔村左移n行
2J 清屏
K 清除从光标到行尾的内容
s 保存光标位置
u 恢复光标位置
?25l 隐藏光标
?25h 显示光标

前景颜色 30 - 37

控制码 颜色
30 黑色
31 红色
32 绿色
33 黄色
34 蓝色
35 紫色
36 深绿色
37 白色
39 默认前景色

背景颜色 40 - 47

控制码 颜色
40 黑色
41 红色
42 绿色
43 黄色
44 蓝色
45 紫色
46 深绿色
47 白色
49 默认背景色