以下内容是否应该始终表明我可以使用转义序列并对tput
事物进行着色?
if [[ $TERM == *"color"* ]]; then
true
else
false
fi
答案1
否:终端描述的名称无关。 TERM
是终端描述的名称。有很多,而且大多数支持颜色的终端名称中都没有“颜色”。例如,没有理由不能将终端描述命名为“无颜色”。
使用终端描述的程序查看能力列于其中。当然,有很多硬编码程序会假设有关终端描述名称的信息。
根据 ncurses FAQ我的终端无法识别颜色,终端描述应该说明终端支持多少种颜色,以及如何设置前景色和背景色。
您可以使用tput
获取颜色数量:
colors=$(tput colors)
if [ $colors -gt 1 ]
因为缺少colors
能力会导致tput
返回-1
。