Terminal

Linux VT 支持 8 種顏色,但實際有 16 種不同的顏色。為什麼會這樣?

  • July 31, 2018

根據 Wiki 的https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit文章,有 8 種“標準顏色”和 8 種“高強度顏色”。當我檢查 Linux 虛擬控制台 (tty) 的終端功能時,tput colors它顯示為 8。但是,如果我在 VT 中列印它們,我會得到 16 種不同的顏色。為什麼會這樣?

這是螢幕截圖:

在此處輸入圖像描述

我看到沒有 256 色支持。控制台只是混合現有的導致這種“效果”的。所以我不問為什麼它不支持 X 或類似的東西。

根據 Wiki 的https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit文章,有 8 種“標準顏色”和 8 種“高強度顏色”。當我通過 tput colors 檢查 Linux 虛擬控制台 (tty) 的終端功能時,它顯示為 8。但是,如果我在 VT 中列印它們,我會得到 16 種不同的顏色。為什麼會這樣?

如果仔細觀察,您會發現顏色 0-7 是 8 到 15 的較暗版本。

該方案基於早期的文本模式硬體,該硬體使用 4 位來確定紅色、綠色、藍色和強度,如下所示:

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

將您想要的值加起來。例如,淺紅色 = 8+4 = 12。

在您的範例中,位的排列方式不同,看起來像 1=red,2=green,4=blue。

在此方案中,有 3 個顏色位,因此 8 種不同的顏色(000 或黑色是一種顏色)具有 1 個可選擇的亮度或強度位。這就是“8種標準色和8種高強度色”的含義。

(這些位儲存在稱為“屬性記憶體”的記憶體部分中 - 其他 4 位可以選擇背景顏色並打開/關閉閃爍模式。)

至於為什麼你沒有看到 256 色,你的終端可能不在 256 色模式或類似的模式下。

引用自:https://unix.stackexchange.com/questions/459581