terminal - 为什么终端将转义表示为 ^[?
问题描述
据我了解,转义字符可以通过以下方式表示。
- 八进制:\033
- 十六进制:\x1B
- 十进制:27
- 统一码:\u001B
- 在我的终端:^[
在不同的数字系统中,前 4 个表示只是十进制的 27。但是最后一个表示^[
似乎与十进制 27 没有任何联系,这似乎是任意的。所以我想知道为什么^[
选择作为在终端中表示逃生的方式,这是怎么发生的?
解决方案
但最后一个表示
^[
似乎与十进制 27 没有任何联系
乍一看可能是这样,但实际上,有一个链接。
首先,您需要了解符号 like 中的插入符号表示^[
按住 control 键的同时按住-也是[如此。换句话说,转义键的作用(在终端中)与-完全相同。(至于为什么转义键会产生这个特殊字符:请参阅我答案的第二部分。)^[
ctrl[ctrl[
该字符[
在 ASCII 中编码为十进制 91 或 0x5b,但查看二进制表示最有用:0b01011011。 ^[
或转义键被编码为十进制 27 或 0b00011011。如果我们对齐这两个二进制数:
[ 0b01011011
^[ 0b00011011
我们可以看到这^[
只是[
第 7 位被清除的情况。实际上,添加控制键本质上只是清除了字符代码1的前三位。
所以^[
和 27 之间的联系是 91 - 64 = 27 :)
为什么
^[
选择作为在终端中表示逃生的方式
我完全不知道!
推荐阅读
- python - Pytorch 图像分割问题 BCELoss
- cypress - 网络请求未显示在 cypress 命令日志中
- excel - 将一列中所有填充值的单元格复制到一个单元格中
- mysql - 我的左连接联合右连接不太工作 - 我正在尝试模拟一个完整的外部连接
- reactjs - 获取响应组件的名称 onClick
- email - 是否可以在 Magento 2 中“本地化”交易电子邮件的内容
- python-3.7 - 我的系统或 python 终端上的第二行现在说:“-bash: zzzzz#: command not found”
- python - 如何根据以下说明正确设置 R 工作区
- react-native - 无法在 iOS 上运行排毒测试
- design-patterns - 不同参数的 Kotlin 模式构建