無法將亮度應用於終端的背景顏色
我的終端模擬器中的顏色有問題。我
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