为什么 ANSI 颜色转义以 'm' 而不是 ']' 结尾?

Why do ANSI color escapes end in 'm' rather than ']'?

ANSI 终端颜色转义可以在大多数编程语言中使用 3[...m 完成。 (您可能需要在某些语言中执行 \e\x1b

我一直觉得奇怪的是他们如何以 3[ 开头,但以 m 结尾是否有一些历史原因(也许 ] 被映射到现在被 ASCII table 中的 m 占用的位置?)还是任意字符选择?

它并非完全随意,而是遵循委员会制定的方案,并记录在 ECMA-48 中(与 ISO 6429 相同)。除了开头的 Escape 字符外,后面的字符由范围指定。

虽然Escape[被广泛使用(这个叫做控制序列引入子CSI),还有其他的控制序列(比如Escape],操作系统命令OSC)。这些序列可能有参数,和一个最后一个字节

题目中,使用CSImfinal byte,恰好告诉终端该序列应该做什么。给定的参数是数字列表。另一方面,对于 OSC,command-type 在开头,参数受限较少(它们可能是任何可打印字符的字符串)。