使用终端中的一些node.js
工具时,我在彩色输出方面遇到了一些问题。如您所见,一些使用颜色代码 90 的文本mocha
urxvt
这里将在终端中消失。
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(例如konsole
或gnome-terminal
)轻松试验颜色设置,并清楚地显示您可以更改的内容。或者只是尝试一下rxvt-unicode
是否合适。
我想你至少会知道哪里出了问题,即使不是解决方案。
如果还没有解决,请在此处提供您的新信息,然后让我们解决详细问题。
边注:
我没有让你的长命令通过复制和粘贴来工作,但它可能类似于
colortest-256
colortest
来自Ubuntu 等的软件包
也尝试colortest-16
一下,它可能有助于解释您的问题。
如果没有,请截图!