Mar*_*ter 8 bash terminal-emulator terminal
我的终端模拟器中的颜色有问题。我LXTerminal用作我的终端模拟器和LXDE我的桌面环境。
以下命令应该在灰色背景上打印红色文本:
printf "\n\033[1;31;40m"hello"\033[00m\n\n"
Run Code Online (Sandbox Code Playgroud)
但这不起作用。缺少灰色背景(红色文本可以)。在我的旧机器 ( Gnome/Gnome Terminal) 上一切正常
我已经尝试安装其他几个终端模拟器,但问题仍然存在。我什至不确定这个问题是否与终端模拟器有关,还是其他什么。在控制台 (CTRL+ALT+F1) 中,背景灰色在任何一台机器上都不起作用)
此问题仅限于灰色背景。所有其他颜色都可以正常工作,例如以下在绿色背景上打印红色文本。
printf "\n\033[1;31;42m"hello"\033[00m\n\n"
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何帮助。我什至不知道从哪里开始故障排除。
Mat*_*att 11
每个终端仿真器都支持八种标准的 ANSI 颜色。大多数终端仿真器还具有标准 ANSI 颜色的八种明亮变体。
然而,转义码映射到的实际颜色值并没有标准化,实际上它们在终端仿真器之间通常略有不同。因此,如果您printf "\e[31;47mTest\n"要在白色背景上打印红色文本,根据您使用的终端仿真器,您获得的实际红色和白色色调可能会有所不同。
所以这部分解释了这个问题:颜色值不是标准的,并且LXTerminal它的调色板可能有你不习惯的不同默认值。如果您在设置中环顾四周,通常可以将配色方案配置为您喜欢的任何颜色。
您面临的另一个问题是,bold 属性的实际作用也没有标准化。有三种可能:可以使字体加粗,可以使前景色更亮,或者既可以使前景色更亮,又可以使字体变粗。
同样,这里的默认行为因终端模拟器而异,如果您能找到正确的设置,通常可以更改它。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
Run Code Online (Sandbox Code Playgroud)
1开头的属性1;31;40打开“粗体”(又名“明亮”)模式,但某些终端仅将其应用于前景色。我不知道是什么原因(更改 $TERM 变量没有区别),因为它们确实支持前景中的 16 种颜色。1 0(来自40:4 = 背景,0 = 颜色)实际上是黑色,但“亮黑色”是灰色。这里有两个解决方案:
颜色 7(白色)可能会变成灰色,而不是白色(对于真正的白色,您需要“亮白色”,这意味着您实际上不能拥有的背景是白色)。
如果需要,您应该可以在 LXDE 中使用 gnome 终端。只需安装它并开始gnome-terminal(我相信这是它的命令名称)。然后你必须配置任何启动器来使用它而不是 lx 终端。
1这是我的猜测:请注意,设置粗体会将亮度应用于前景色并添加粗体强调。因此,您不能在不应用粗体的情况下使用明亮的前景色。大概是在单色终端很常见的时候,只是简单地将粗体设置为强调,例如:\\033[1mBlah blah\\033[0m很常见——实际上这仍然有效,但它也会使您的前景色变亮。如果我们认为这也使背景变亮是不可取的(因为它应该是粗体的),那么我们将确保实现没有这样做。那好吧。
| 归档时间: |
|
| 查看次数: |
4318 次 |
| 最近记录: |