我在用:
setterm --foreground blue --background white --blink on
结果是文本在亮白色上显示为蓝色。但是,文本周围的背景是灰色的。如何让整个背景变成亮白色?
答案1
这取决于终端。通常,您不能使用“ANSI 颜色”来执行此操作,因为(而一些终端将粗体视频属性解释为“明亮的颜色”),没有标准的方法来改变背景的亮度。
某些终端支持转义序列来更改调色板终端使用的独立于“ANSI 颜色”。例如,Xterm 使用动态色彩功能,它允许更改默认的前景色和背景色(以及一些其他可能性,例如光标颜色)。这些总结在操作系统控制的部分XTerm 控制序列:
OSC Ps;铂ST OSC Ps;铂贝尔 设置文本参数。对于颜色和字体,如果 Pt 是“?”,则 控制序列引起一个响应,其中包括 trol 序列将设置相应的值。这 dtterm 控制序列允许您确定图标名称 和窗口标题。 ... 可以使用 1 0 设置或查询的 10 种颜色(如下) 到 1 9 表示动态颜色,因为相应的 ing 控制序列是设置 xterm 的第一个方法 动态颜色,即在启动后。他们不是 与 ANSI 颜色相同。这些控件可能被禁用 使用allowColorOps 资源。至少有一个参数是 预计 Pt。每个连续的参数都会改变下一个参数 列表中的颜色。 Ps的值告诉了起点 在列表中。颜色由名称或 RGB 指定 根据 XParseColor 的阳离子。 ... Ps = 1 0 -> 将 VT100 文本前景色更改为 Pt。 Ps = 1 1 -> 将 VT100 文本背景颜色更改为 Pt。 Ps = 1 2 -> 将文本光标颜色更改为 Pt。 Ps = 1 3 -> 将鼠标前景色更改为 Pt。 Ps = 1 4 -> 将鼠标背景颜色更改为 Pt。 Ps = 1 5 -> 将 Tektronix 前景色更改为 Pt。 Ps = 1 6 -> 将 Tektronix 背景颜色更改为 Pt。 Ps = 1 7 -> 将突出显示背景颜色更改为 Pt。 Ps = 1 8 -> 将 Tektronix 光标颜色更改为 Pt。 Ps = 1 9 -> 将突出显示前景色更改为 Pt。
由于缺乏该功能,其他一些终端允许更改“ANSI 颜色”的值。同样,在 xterm 中,仍在操作系统控件集中:
Ps=4; C;规格 -> 将颜色编号 c 更改为颜色规格 - 由规格确定。这可以是名称或 RGB 规范 XParseColor。可以给出任意数量的 c/spec 对。这 颜色编号对应 ANSI 颜色 0-7,它们明亮 版本 8-15,以及 88 色的其余部分(如果支持) 或 256 色表。
虽然其他一些终端仿真器可能实现其中之一或两者,但通常它们不会对此进行记录。您必须进行试验以确定它们是否适用于其他终端。
与后者相同(修改调色板中的值),Linux 控制台支持可以更改其 16 色调色板的控制序列。 Xterm 不支持该控件,因为它不遵循格式标准 (ECMA-48)。
这xterm控制程序支持其中一些转义序列,特别是动态色彩。但你可以制作一个脚本,例如,
#!/bin/sh
printf '\033]%s;%s\007' $1 $2
并使用该脚本设置颜色
myscript 11 rgb:ff/ff/ff
进一步阅读:
答案2
根据您的终端模拟器,可能可以在终端的配色方案中重新定义颜色“白色”:
echo -en "\e]PFffffff"
setterm --foreground blue --background white --blink on
答案3
如果你的终端背景是深色的,我认为你可以使用以下命令轻松地在整个终端上获得白色背景:
setterm --inversescreen on