Bash

無法將亮度應用於終端的背景顏色

  • February 18, 2020

我的終端模擬器中的顏色有問題。我LXTerminal用作終端模擬器和LXDE桌面環境。

以下命令應該在灰色背景上列印紅色文本:

printf "\n\033[1;31;40m"hello"\033[00m\n\n"

但這不起作用。缺少灰色背景(紅色文本可以)。在我的舊機器 ( Gnome/Gnome Terminal) 上一切正常

我已經嘗試安裝其他幾個終端仿真器,但問題仍然存在。我什至不確定這個問題是否與終端仿真器或其他問題有關。在控制台(CTRL+ALT+F1)中,背景灰色在任何一台機器上都不起作用)

此問題僅限於灰色背景。所有其他顏色都可以正常工作,例如以下在綠色背景上列印紅色文本。

printf "\n\033[1;31;42m"hello"\033[00m\n\n"

我將不勝感激任何幫助。我什至不知道從哪裡開始故障排除。

每個終端仿真器都支持八種標準 ANSI 顏色。大多數終端仿真器還具有標準 ANSI 顏色的八種明亮變體。

但是,轉義碼映射到的實際顏色值不是標準化的,實際上它們在終端仿真器之間通常略有不同。因此,如果您確實printf "\e[31;47mTest\n"在白色背景上列印紅色文本,您得到的實際紅色和白色色調可能會因您使用的終端仿真器而異。

所以這部分解釋了這個問題:顏色值不是標準的,並且LXTerminal可能有不同的預設調色板,你不習慣。如果您在設置中環顧四周,通常您可以將配色方案配置為您喜歡的任何顏色。

您面臨的另一個問題是粗體屬性的實際作用也不是標準化的。有三種可能:可以讓字型加粗,可以讓前景色更亮,或者既可以讓前景色更亮,又可以讓字型加粗。

同樣,這裡的預設行為因終端仿真器而異,如果您能找到正確的設置,您通常可以更改它。Grep 用於提及“大膽”或“明亮”的內容。

如果你想使用明亮的顏色,那麼你可以使用所謂的 aixterm 顏色轉義碼來代替粗體。這些不是標準的,但我所知道的每個現代終端仿真器都支持它們。與粗體不同的是,它們總是使用明亮的顏色,而且它們可以用來顯示明亮的背景顏色。

例如,如果您想在明亮的白色背景上列印明亮的紅色文本,您可以這樣做:printf "\e[91;107mTest\n".

作為參考,這裡是所有顏色轉義碼的表格:

|    ANSI |    ANSI |    ANSI    |                | Aixterm | Aixterm 
|   Color | FG Code | BG Code    | Bright Color   | FG Code | BG Code 
+---------+---------+--------    +----------------+---------+-------- 
|   Black |      30 |      40    |   Bright Black |      90 |     100 
|     Red |      31 |      41    |     Bright Red |      91 |     101 
|   Green |      32 |      42    |   Bright Green |      92 |     102 
|  Yellow |      33 |      43    |  Bright Yellow |      93 |     103 
|    Blue |      34 |      44    |    Bright Blue |      94 |     104 
| Magenta |      35 |      45    | Bright Magenta |      95 |     105 
|    Cyan |      36 |      46    |    Bright Cyan |      96 |     106 
|   White |      37 |      47    |   Bright White |      97 |     107 

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