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
\61
是1
ASCII 中字符的八进制代码,所以\e[\61m
or\33[\61m
或\33\133\61\155
or\33[1m
是<ESC>[1m
。
$ 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
。这些1
和49
数字旨在以十进制字符串表示形式表示,而不是字节值。