O valor de $TERM
não fornece muita informação sobre o número de cores suportadas. Muitos terminais anunciam-se como xterm
e podem suportar qualquer número de cores (2, 8, 16, 88 e 256 são valores comuns).
Você pode consultar o valor de cada cor com a sequência de controle OSC 4 ; c ; ? BEL
. Se o número de cor c
for suportado e se o terminal entender essa sequência de controle, o terminal responderá com o valor da cor. Se o número da cor não for suportado ou se o terminal não entender essa sequência de controle, o terminal não responderá a nada. Aqui está um snippet bash / zsh para consultar se a cor 42 é suportada (redirecionamento para / do terminal, se necessário):
printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported
Entre os terminais populares, o xterm e os terminais baseados na biblioteca VTE (terminal Gnome, Terminator, Xfce4-terminal,…) suportam esta sequência de controle; rxvt, konsole, screen e tmux não.
Eu não sei de uma maneira mais direta.