如何使用终端允许的 256 种颜色中的任意一种打印文本?

如何使用终端允许的 256 种颜色中的任意一种打印文本?

我想编写一个程序,利用 Linux 终端的所有 256 种文本颜色。然而,迄今为止,我只找到了少数颜色代码,其格式为“\033[1;NUMmNUM\033[1;m”。然而,这些转义码只允许两到三打颜色,不是Linux 终端应该允许的 256。如何在我的curses应用程序中显示其他颜色?

答案1

你可以去设置里看看TERM。有可能它被设置为小于有能力的细绳。要测试颜色,您可以运行 GNUmsgcat。尝试例如:

echo $TERM
msgcat --color=test
TERM=xterm-256color
msgcat --color=test

或者使用@伊格纳西奥巴斯克斯-艾布拉姆斯的循环而不是 msgcat。

欲了解更多信息如何以及要设置的内容看看例如:

答案2

停止使用转义码并使用setafterminfo 功能。

$ for i in $(seq 0 $(tput colors) ) ; do tput setaf $i ; echo -n "█" ; done ; tput setaf 15 ; echo

答案3

TERM告诉tput(以及使用终端数据库的其他应用程序)您的终端(假定)支持多少种颜色以及如何为其设置前景 ( setaf) 和背景 ( ) 。setab

示例脚本已关闭,但未正确重置:

for i in $(seq 0 $(tput colors) ) ; do tput setaf $i ; echo -n "█" ; done ; echo ; tput op

下面是 xterm 的截图来说明:

tput 和 256colors 的示例

无论如何,msgcat使用终端数据库,但随后对终端的颜色功能进行一些硬编码的假设。其中一些需要重新考虑,例如,注意到编码错误,例如这条线:

               (strlen (term) >= 4 && memcmp (term, "rxvt", 7) == 0)

相关内容