Linux VT 支持 8 种颜色,但实际有 16 种颜色。为什么会这样呢?

Linux VT 支持 8 种颜色,但实际有 16 种颜色。为什么会这样呢?

根据维基百科的https://en.wikipedia.org/wiki/ANSI_escape_code#8 位文章中有 8 种“标准颜色”和 8 种“高强度颜色”。当我检查 Linux 虚拟控制台 (tty) 的终端功能时,tput colors它显示为 8。但是,如果我在 VT 中打印它们,我会得到 16 种不同的颜色。为什么会这样呢?

这是屏幕截图:

在此输入图像描述

我看到不支持 256 色。控制台只是混合现有的造成这种“效果”。所以我不会问为什么它不支持 X 或类似的东西。

答案1

根据维基百科的https://en.wikipedia.org/wiki/ANSI_escape_code#8 位文章中有 8 种“标准颜色”和 8 种“高强度颜色”。当我通过 tput 颜色检查 Linux 虚拟控制台 (tty) 的终端功能时,它显示 8。但是,如果我在 VT 中打印它们,我会得到 16 种不同的颜色。为什么会这样呢?

如果仔细观察,您会发现颜色 0-7 是 8 到 15 的较暗版本。

该方案基于早期的文本模式硬件,使用 4 位来确定红、绿、蓝和强度,如下所示:

-----------------
| 8 | 4 | 2 | 1 |
-----------------
| I | R | G | B |
-----------------

将您想要的值相加。例如,浅红色 = 8+4 = 12。

在您的示例中,位的排列方式不同,看起来像 1=红色,2=绿色,4=蓝色。

在此方案中,有 3 个颜色位,因此 8 种不同的颜色(000 或黑色是一种颜色),具有 1 个可选择的亮度或强度位。这就是“8种标准颜色和8种高强度颜色”的含义。

(这些位存储在称为“属性内存”的内存部分中 - 其他 4 位可以选择背景颜色并打开/关闭闪烁模式。)

至于为什么您看不到 256 色,您的终端可能未处于 256 色模式或类似模式。

相关内容