我不好意思问这个问题,因为关于这个话题的帖子太多了,但其中的讨论远远超出了我的能力范围,我希望有人能给出一个非常简单的答案。我知道这/usr/bin/xterm
实际上可以支持 256 种颜色(尽管返回tput colors
8)。但我无法生成超过 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
。据我所知,这似乎是最完整的参考资料。