在 rxvt-unicode 中定义颜色代码

在 rxvt-unicode 中定义颜色代码

使用终端中的一些node.js工具时,我在彩色输出方面遇到了一些问题。如您所见,一些使用颜色代码 90 的文本mochaurxvt这里将在终端中消失。

tput colors输出是:256

并使用这个命令:

(x=`tput op` y=`printf %76s`;for i in {0..256};do o=00$i;echo -e ${o:${#o}-3:3} `tput setaf $i;tput setab $i`${y// /=}(x=`tput op` y=`printf %76s`;for i in {0..256};do o=00$i;echo -e ${o:${#o}-3:3} `tput setaf $i;tput setab $i`${y// /=}$x;done)$x;done)

看来我有所有可用的颜色。

但是当我尝试回应这样的事情时:

echo '\e[0;90m shahin \e[m '

将会打印出一个空行!有没有办法手动定义这个颜色代码?

谢谢你们!

更新:我认为一些图像会更好地描述情况。这是finalterm终端中 echo 命令的图像:

在此输入图像描述

我在这里放置了结果urxvt

在此输入图像描述

这是结果 perl在同一台计算机上运行的脚本urxvt

在此输入图像描述

答案1

您使用了错误的转义序列。

它很接近(以 开头escape[,以 结束m),但参数错误。

至少有三个 SGR(选择图形再现)转义序列用于在 xterm 和类似终端中打印颜色:

  • ANSI(颜色 0-7),使用参数 30-37(前景)和 40-47(背景)
  • aixterm(颜色 8-15),使用参数 90-97(前景)和 100-107(背景)
  • 256colors(颜色0-255),使用代码38;5;范围(前景)和48;5;范围(背景)

因此,您选择了 aixterm 前景色 8。按照惯例,这些颜色显示为颜色 0-7 的更亮版本。 ANSI 颜色 0 是黑色的。亮黑色是...根据终端的不同,它可能是灰色的。它可能只是黑色。

也许你的意思是这样的:

echo '\e[0;38;5;90m shahin \e[m '

虽然这是便携式的:

printf '\033[0;38;5;90m shahin \033[m \n'

进一步阅读:

答案2

问题不在于颜色不可见,
它只是与终端背景相同,例如深灰色。

有一种颜色基本上是透明的,显示下面的终端默认颜色。但不确定是否使用了这种颜色 - 可能只是用于背景的“黑色”颜色实际上与用于前景的深灰色相同。

如果可能的话,打开一个终端,允许使用 gui(例如konsolegnome-terminal)轻松试验颜色设置,并清楚地显示您可以更改的内容。或者只是尝试一下rxvt-unicode是否合适。

我想你至少会知道哪里出了问题,即使不是解决方案。

如果还没有解决,请在此处提供您的新信息,然后让我们解决详细问题。



边注:

我没有让你的长命令通过复制和粘贴来工作,但它可能类似于
colortest-256

colortest来自Ubuntu 等的软件包

也尝试colortest-16一下,它可能有助于解释您的问题。
如果没有,请截图!

相关内容