字符转义序列 `\033[\061m` 在哪里记录为粗体?

nwp*_*nwp 6 colors escape-characters console

我正在尝试编写一个程序来运行像 gcc 这样的控制台程序并以彩色显示其输出。我使用openpty而不是pipe假装是一个字符设备,现在得到携带颜色信息的ANSI 转义码。我尝试了一些程序,他们有时会给我代码CSI [ 49 m。无论维基百科的xterm转义码文档(搜索Ps = 4 9)同意代码CSI [ 49 m意味着我应该使用默认的背景颜色。

然而,debian 的 xterm 和 zsh 以及 ubuntu 的 linux 控制台不同意。
printf '\033[\061mTest\n\033[\060m'在像 xterm 这样的控制台中执行应该使用默认背景颜色打印“测试”(\033转义并escape + [制作一个 CSI(控制序列介绍器)并且\061是八进制的 49 十进制),但它实际上以粗体打印“测试”(以及\061最后似乎意味着“不再大胆”,但在维基百科和 xterm 颜色代码文档中都没有记录)。上面提到的所有控制台都同意这一点。

各种控制台和标准的颜色代码列表,但没有一个列出CSI 49 m来表示“粗体”。

这种不一致从何而来?我在哪里可以找到与 xterm、zsh 或 linux 控制台使用的颜色代码相对应的颜色代码列表?

Sté*_*las 12

\611ASCII 中字符的八进制代码,所以\e[\61mor\33[\61m\33\133\61\155or\33[1m<ESC>[1m

那是CSI 1 m。见维基百科xterm文档

$ printf '\e[\61m' | od -An -vto1 -tc
 033 133 061 155
 033   [   1   m
$ tput bold | od -An -vto1 -tc
 033 133 061 155
 033   [   1   m
Run Code Online (Sandbox Code Playgroud)

对于默认背景颜色,您需要\e[49m,而不是\e[\61m。这些149数字旨在以十进制字符串表示形式表示,而不是字节值。