有没有可靠的方法来检查我的终端模拟器支持多少种颜色?
如果echo $TERM
打印xterm
,那么明确地告诉我我的终端模拟器支持多少种颜色?我怎样才能可靠地检查这些信息?
答案1
的值$TERM
并没有提供有关支持的颜色数量的太多信息。许多终端将自己标榜为xterm
,并且可能支持任意数量的颜色(2、8、16、88 和 256 是常见值)。
您可以使用以下命令查询每种颜色的值OSC 4 ; c ; ? BEL
控制序列。如果支持颜色编号c
,并且终端理解该控制序列,则终端将回复颜色值。如果不支持颜色编号或者终端不理解此控制序列,则终端不会做出任何响应。这是一个 bash/zsh 片段,用于查询是否支持颜色 42(如有必要,重定向到/从终端):
printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported
在流行的终端中,xterm 和基于 VTE 库的终端(Gnome-terminal、Terminator、Xfce4-terminal 等)支持此控制序列; rxvt、konsole、screen 和 tmux 没有。
我不知道有更直接的方法。
答案2
您可以使用
$ tput colors
ncurses-bin
在我的 debian 安装中,tput 是默认安装的包的一部分。
答案3
有一个perl脚本,256colors2.pl,这将在您的终端上显示所有颜色。