在 xterm 上输出 8 种以上颜色的文本

在 xterm 上输出 8 种以上颜色的文本

我不好意思问这个问题,因为关于这个话题的帖子太多了,但其中的讨论远远超出了我的能力范围,我希望有人能给出一个非常简单的答案。我知道这/usr/bin/xterm实际上可以支持 256 种颜色(尽管返回tput colors8)。但我无法生成超过 8 种自定义颜色。对我来说,关于这个主题最容易理解的帖子是 @alex 的,这个线程。

他举了这个例子:

fg_black="$(tput setaf 0)"
fg_red="$(tput setaf 1)"
fg_green="$(tput setaf 2)"
fg_yellow="$(tput setaf 3)"
fg_blue="$(tput setaf 4)"
fg_magenta="$(tput setaf 5)"
fg_cyan="$(tput setaf 6)"
fg_white="$(tput setaf 7)"
reset="$(tput sgr0)"

进而

echo -e "${fg_red}  Red  ${fg_green} Bull ${reset}"

正如您所期望的那样,红色代表红色,公牛代表绿色。

由于xterm可以支持 8 种以上的颜色,我曾认为,例如,

fg_purple="$(tput setaf 125)"

应该给我一个紫色的颜色

echo -e "${fg_purple} 紫色 ${fg_green} 牛 ${reset}"

会返回紫色的公牛。但我无论如何都无法得到 7 以外的任何数字来产生与 xterm 默认前景色不同的颜色。有没有简单的方法来实现这一点?

谢谢您的任何建议。

答案1

我目前正在开始学习如何使用 tput。我不确定您是否可以一次使用所有 256 种颜色,但有一些功能可以定义自定义颜色。首先,您可以测试是否可以更改颜色,您可以执行以下操作:tput ccc && echo YES(ccc 代表“可以更改”)。

所有相关信息都可以在 中找到man terminfo。据我所知,这似乎是最完整的参考资料。

相关内容