O valor de $TERM
não fornece muitas informações sobre o número de cores suportadas. Muitos terminais se anunciam 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 OSC 4 ; c ; ? BEL
sequência de controle . Se o número da 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 responde nada. Aqui está um trecho do bash / zsh para consultar se a cor 42 é suportada (redirecione de / para o 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, terminal Xfce4, ...) suportam essa sequência de controle; rxvt, konsole, screen e tmux não.
Eu não sei de uma maneira mais direta.