Terminal ANSI Escape sequences 终端 ANSI 转义序列(终端指令)

前言

最近试图用Python 实现一个 SSH Terminal,数据的发送不难,问题出在对象的返回值上,在执行某些命令的时候会返回一些 类似“x1b[22;34H\x1b[1K \x1b” 的数据。
略微做了点研究,这些数据是Terminal的一种控制指令,代表了诸如颜色,提示音,清屏,光标移动 等等含义。这里对找到的资料做了一个小结。
控制字符及转义字符通常会直接执行而不显示在终端屏幕上,但如果要自己写一个类似终端的控制,则需要对这些转义字符进行妥善处理。丢弃或者按其本意创建相应函数。

ANSI

其原名叫AESC,后更名为ANSI, ECMA-48 是ANSI 的第一个标准,后改为支持ISO 6429国际标准,其大体内容是一样的。本文例举的字符命令基本以ECMA-48为准,可能有部分存在偏差(在不同的标准下部分指令不兼容)。
ANSI 主要用来控制终端上的光标位置,颜色及其他选项。

控制字符

Hex 字符 描述
\x00 \0 Null
\x05 ENQ 触发应答消息
\x07 \a Bell 响铃,当你在terminal中做某些无效操作的时候,返回\x07
\x08 \b BackSpace 退格键(发送退格键,if 在行首返回\x07 else 返回\x08\x1b[K,具体含义见后续)
\x09 \t Horizontal Tab 横向跳至下一个制表位,若后面没有制表位,则跳至行尾
\x0a \n Line Feed 光标下移一行(终端中表现为换行)
\x0b \v Vertical Tab 竖向跳至下一个制表位(终端中表现为换行)
\x0c \f Form Feed 光标跳转至下一页头部(终端中表现为换行)
\x0d \r Carriage Return 回车换行
\x0e SO 激活 G1 字符集
\x0f SI 激活 G0 字符集
\0x11 \q DC1 继续传送
\0x13 \s DC3 忽略除XOFF 和 XON 以外的一切字符
\x18 CAN 实质 Ctrl+X 中断转义序列/进程
\x1a \z SUB(EOF) 实质 Ctrl+Z 中断转义序列/进程
\x1b \e Escape 开始一个新的转义序列
\x7f DEL 忽略
\x9b CSI 控制序列;等同于 ESC[ (\x1b[)

ESC 非转义控制序列

ESC 描述
\x1bc RIS 重绘屏幕,清屏,类似linux命令clear(注意大小写)
\x1bD IND 光标下移一行,不改变其列
\x1bE NEL 换新的一行,类似 ‘\n’
\x1bH HTS 设置当前列为制表位,类似 ‘\t’
\x1bM RI 反转换行,光标上移一行,不改变其列
\x1bZ DECID DEC私有定义,ubuntu内核释义为返回字符ESC[?6c
\x1b7 DECSC 存储当前状态(光标位置,属性,字
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值