Bash

術語中的“顏色”是否總是意味著我可以使用顏色?

  • March 20, 2016

以下是否應該始終表明我可以使用轉義序列並對tput事物進行著色?

if [[ $TERM == *"color"* ]]; then
 true
else
 false
fi

否:終端描述的名稱無關緊要。 TERM是終端描述的名稱。有很多,而且大多數支持顏色的終端名稱中都沒有“顏色”。例如,沒有理由不能將終端描述命名為“無顏色”。

使用終端描述的程序會查看其中列出的*功能。*當然,有很多硬編碼的程序會假設終端描述的名稱。

根據ncurses FAQ My terminal doesn’t identify color,終端描述應該說終端支持多少種顏色,以及如何設置前景色和背景色。

您可以使用tput獲取顏色的數量:

colors=$(tput colors)
if [ $colors -gt 1 ]

因為缺少的colors能力會帶來tput回報-1

引用自:https://unix.stackexchange.com/questions/270904