首页 > 解决方案 > 为什么终端将转义表示为 ^[?

问题描述

据我了解,转义字符可以通过以下方式表示。

在不同的数字系统中,前 4 个表示只是十进制的 27。但是最后一个表示^[似乎与十进制 27 没有任何联系,这似乎是任意的。所以我想知道为什么^[选择作为在终端中表示逃生的方式,这是怎么发生的?

标签: terminalescapingpty

解决方案


但最后一个表示^[似乎与十进制 27 没有任何联系

乍一看可能是这样,但实际上,有一个链接。

首先,您需要了解符号 like 中的插入符号表示^[按住 control 键的同时按住-也是[如此。换句话说,转义键的作用(在终端中)与-完全相同。(至于为什么转义键会产生这个特殊字符:请参阅我答案的第二部分。)^[ctrl[ctrl[

该字符[在 ASCII 中编码为十进制 91 或 0x5b,但查看二进制表示最有用:0b01011011。 ^[或转义键被编码为十进制 27 或 0b00011011。如果我们对齐这两个二进制数:

 [  0b01011011
^[  0b00011011

我们可以看到这^[只是[第 7 位被清除的情况。实际上,添加控制键本质上只是清除了字符代码1的前三位。

所以^[和 27 之间的联系是 91 - 64 = 27 :)


为什么^[选择作为在终端中表示逃生的方式

我完全不知道!


推荐阅读