转义码主要用于控制终端的输出行为,有四个基本类别:
- 光标:允许操控屏幕上光标的:移动、显隐、滚动限制、部分屏幕的使用
- 属性:设置或清除文本的属性
- 颜色:更改当前文本的前景色和背景色
- 其他转义:清除屏幕、清除屏幕部分、重置终端、设置制表符
一些 ANSI 转义序列
序列 | 名称 | 作用 |
---|
\eN | SS2 - Single Shift Two | 从其中一个代替的字符集选择一个字集 |
\eO | SS3 - Single Shift Three | 同上 |
\eP | DCS - 设备控制字符串 | 控制设备。在 xterm 中,该序列的使用包括定义用户的自定义密钥,以及请求或设置 Termcap/Terminfo 数据 |
\e[ | CSI - 控制序列导入器 | 大部分有用的序列,参阅下面的光标、颜色、滚动 |
\e\ | ST - 结束字符串 | 终止其他控件(包括 APC、DCS、OSC、PM 和 SOS )中的字符串 |
\e] | OSC - 操作系统命令 | 启动操作系统使用的控制字符串。 OSC 和 CSI 序列相似,但不限于整数参数 |
\eX | SOS - 字符串开始 | |
\e^ | PM - 私有消息 | |
\e_ | APC - 应用程序命令 | |
\ec | RIS - 重置为初始状态 | 将设备重置为原始状态。可能包括(如果适用的话):重置图形格式,清除制表符,重置为默认字体等等。 |
光标和滚动转义序列
光标显隐
在 shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
tivis (注意 ⚠️ : Terminal 的条目不支持) | \e[?25l | 隐藏光标 |
tvvis (注意 ⚠️ : Terminal 的条目不支持) | \e[?25h | 显示光标 |
光标位置设置
在 shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
cup r c | \e[r;c;H | 光标设置到 r 行 c 列 |
-- | \e[6n | 报告光标位置(shell 脚本不支持) |
sc | \e7 或 \e[s | 保存当前光标的位置 (wiki 百科说 \e[s 也可以,在我的 mac 不可用) |
rc | \e8 或 \e[u | 恢复当前光标的位置 (wiki 百科说 \e[u 也可以,在我的 mac 不可用) |
cuu r | \e[rA | 光标向上 r 行 |
cud r | \e[rB | 光标向下 r 行 |
cuf c | \e[cC | 光标向右 c 列 |
cub c | \e[cD | 光标向左 c 列 |
cnl c | \e[cE | 光标向下 c 列(默认 1)的开头 |
cha c | \e[cF | 光标向上 c 列(默认 1)的开头 |
el n | \e[nS | 整页向上滚动,新行添加到底部 |
su n | \e[nT | 整页向下滚动,新行添加到顶部 |
hvp r c | \e[r;cF | 光标位置设定,同 cup |
-- | \e[?7l | 当光标达到屏幕的右边缘时禁用自动换行 |
-- | \e[?7h | 启用换行 |
do | \eD | 将光标向下移动一行 |
up | \eM | 将光标向上移动一行 |
`` | `` | |
屏幕滚动行为
在 shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
-- | \e[r | 启用全屏滚动 |
-- | \e[S;Er | 启用从 S 行到 E 行的屏幕部分滚动,并将光标移动到此区域的顶部 |
属性和颜色转义序列
重置属性
shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
me | \e[m 或 \e[0m | 将所有属性重置为默认值 |
属性设置
shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
bold | \e[1m | 启用粗文本显示 |
dim | \e[2m | 启用浅文本显示 |
so | \e[3m | 启用突出显示,在终端不受支持 |
us | \e[4m | 启用下划线文本显示 |
blink (部分终端不支持) | \e[5m | 闪烁 |
-- | \e[6m | 快速闪烁或删除线(终端不支持) |
mr | \e[7m | 启用反向显示 |
invis | \e[8m | 启用隐藏文本 |
-- | \e[9m | 闲置 (部分设备上为删除线) |
-- | \e[10 - 19m | 字体选择,大部分终端不支持 |
清除属性
shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
-- | \e[20m | "Fraktur"(尖角体)字体,大部分终端并不支持 |
-- | \e[21m | 闲置 |
se | \e[22m | 禁用粗文本、浅文本显示 |
se | \e[23m | 禁用突出显示 |
ue | \e[24m | 禁用带下划线的显示 |
-- | \e[25m | 禁用闪烁和删除线 |
-- | \e[26m | 闲置 |
-- | \e[27m | 禁用反向显示 |
-- | \e[28m | 禁用隐藏显示 |
-- | \e[29m | 闲置 |
前景色配置
shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
setaf 0 | \e[30m | 将前景色设置为黑色 |
setaf 1 | \e[31m | 将前景色设置为红色 |
setaf 2 | \e[32m | 将前景色设置为绿色 |
setaf 3 | \e[33m | 将前景色设置为黄色 |
setaf 4 | \e[34m | 将前景色设置为蓝色 |
setaf 5 | \e[35m | 将前景色设置为杨红色 |
setaf 6 | \e[36m | 将前景色设置为青色 |
setaf 7 | \e[37m | 将前景色设置为白色 |
-- | \e[38m | 闲置 |
setaf 9 | \e[39m | 将前景色设置为默认色 |
背景色设置
shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
setab 0 | \e[40m | 将背景色设置为黑色 |
setab 1 | \e[41m | 将背景色设置为红色 |
setab 2 | \e[42m | 将背景色设置为绿色 |
setab 3 | \e[43m | 将背景色设置为黄色 |
setab 4 | \e[44m | 将背景色设置为蓝色 |
setab 5 | \e[45m | 将背景色设置为杨红色 |
setab 6 | \e[46m | 将背景色设置为青色 |
setab 7 | \e[47m | 将背景色设置为白色 |
-- | \e[48m | 闲置 |
setab 9 | \e[49m | 将背景色设置为默认色 |
其他转义序列
重置终端
shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
reset | \ec | 将前景色和背景色设置为默认值,清除屏幕,并将光标移动到默认位置 |
整屏滚动
清除屏幕
shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
cd | \e[J 或 \e[0J | 使用当前背景色清除到屏幕底部 |
-- | \e[1J | 使用当前背景色清理到顶部 |
cl | \e[2J | 将屏幕清除为当前背景色。在部分终端上,还会将光标的位置重置到 home 位置 |
c | \e[3J | 将清除整个屏幕并删除回滚缓冲区中的所有行(该特性是 xterm,其他终端也支持 ) |
清除行
shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
ce | \e[K 或 \e[0K | 清除当前行到末尾 |
cb | \e[1K | 清除行到开头 |
-- | \e[2K | 清除当前行 |
制表符
shell 脚本使用 tput xx | 转义序列 | 描述 |
---|
hts | \e[W 或 \e[0W | 在光标位置设置水平制表符 |
-- | \e[1W | 当前行设置垂直制表符 |
-- | \e[ 2 - 6 W | 冗余代码 |
-- | \e[g 或 \e[0g | 清除当前光标位置的水平制表符 |
-- | \e[1g | 清除当前行的垂直制表符 |
-- | \e[2g | 仅清除当前行的水平和垂直制表位 |
tbc | \e[3g | 清除所有的说平选项卡 |
参考文档