如果您看一下ANSI ASCII标准,则字符集的下部(前32个)保留为“控制字符”(有时称为“转义序列”)。这些是NUL字符,Life Feed,回车,Tab,Bell等内容。绝大多数Ctrl按键都可以通过与其他按键组合使用来模拟。
第27个(十进制)或\033
八进制序列或0x1b
十六进制序列是转义序列。它们都是相同控制序列的表示。不同的外壳,语言和工具以不同的方式引用此序列。其Ctrl序列被Ctrl- [,因此有时被表示为^[
,^
是用于手短Ctrl。
您可以通过继续他们进入控制字符序列作为命令行上的原始序列Ctrl- v。Ctrl- v对于大多数shell和程序,停止解释以下键序列,而是以原始格式插入。如果您使用Escape键或Ctrl- v来执行此操作,它将在大多数shell中显示为^[
。但是,尽管可以理解此序列,但它不会轻易剪切和粘贴,并且在某些协议或程序遇到时可能会简化为非控制字符序列。
为了解决这个问题,使其更易于使用,某些实用程序用\033
(通过八进制引用),十六进制引用\x1b
或特殊字符引用来表示“原始”序列\e
。这与\t
解释为Tab- 的方式非常相似-顺便说一句,也可以通过Ctrl- 输入i,或者也可以\n
换行或Enter键,也可以通过Ctrl- 输入m。
所以当吉尔斯说:
27 = 033 = 0x1b = ^ [= \ e
他说十进制ASCII 27,八33,十六进制1B,Ctrl- [并且\e
都是平等的,他的意思,他们都指的是同样的事情(语义)。
当Demizey说
^ [只是ESCAPE的表示形式,\ e被解释为实际的ESCAPE字符
他的意思是语义,但如果按Ctrl- v Ctrl- [这是完全一样的\e
,原始的插入顺序将最有可能的处理方式相同,但这并不总是有保证的,因此它建议使用编程方式更便携\e
或0x1b
或\033
视在使用的语言/外壳/工具上。