Terminal 为什么终端将escape表示为^[?

Terminal 为什么终端将escape表示为^[?,terminal,escaping,pty,Terminal,Escaping,Pty,据我所知,转义字符可以用以下方式表示 八进制:\033 十六进制:\x1B 小数点:27 unicode:\u001B 在我的终端:^[ 前4种表示法在不同的数字系统中只是小数点27。但最后一种表示法似乎与小数点27没有任何联系,它似乎是任意的。因此我想知道为什么选择了小数点27作为终端中表示转义的方式,以及这是如何发生的 但是最后一个表示法^[似乎与十进制数27没有任何联系 乍一看似乎如此,但实际上,两者之间存在着联系 首先,您需要了解,像^[这样的符号中的插入符号意味着按住控制键的同时按

据我所知,转义字符可以用以下方式表示

  • 八进制:\033
  • 十六进制:\x1B
  • 小数点:27
  • unicode:\u001B
  • 在我的终端:^[
前4种表示法在不同的数字系统中只是小数点27。但最后一种表示法似乎与小数点27没有任何联系,它似乎是任意的。因此我想知道为什么选择了小数点27作为终端中表示转义的方式,以及这是如何发生的

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

乍一看似乎如此,但实际上,两者之间存在着联系

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

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

 [  0b01011011
^[  0b00011011
我们可以看到
^[
只是一个清除了位7的
[
。事实上,添加控制键基本上只是清除字符代码的前三位

因此,
^[
和27之间的联系是91− 64=27:)


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

我完全不知道