Tom Hale Asked: 2018-06-18 18:02:48 +0800 CST2018-06-18 18:02:48 +0800 CST 2018-06-18 18:02:48 +0800 CST 检查终端是否支持 24 位/真彩色 772 在 shell 脚本中,如何以编程方式测试终端是否支持 24 位或真彩色? 相关:这个问题是关于打印用于眼球验证的 24 位/真彩色测试图案 linux terminal 2 个回答 Voted Best Answer Tom Hale 2018-06-18T18:11:42+08:002018-06-18T18:11:42+08:00 该消息来源说要检查是否$COLORTERM包含24bit或truecolor。 sh [ "$COLORTERM" = truecolor ] || [ "$COLORTERM" = 24bit ] bash/ zsh: [[ $COLORTERM =~ ^(truecolor|24bit)$ ]] MestreLion 2020-08-18T03:59:48+08:002020-08-18T03:59:48+08:00 只需使用tput colors. 我相信测试终端功能比解析$TERM或$COLORTERM自己测试更安全。 if (( $(tput colors 2>/dev/null) > 256 )); then echo "What a beautiful rainbow!!!" else echo "Back to the 80's VGA era anyone?" fi 当然,tput只输出在Terminfo 数据库中注册的广告能力,因此可能无法准确反映您的实际终端能力。 不幸的是,根据评论,许多终端仍然存在错误或过时的信息,特别是在 Windows 和 MacOS 等平台上。希望如果有足够的时间(和错误报告!),这些终端最终会$TERM适当地设置它们。毕竟,Terminfo 数据库支持 24 位颜色已经 4 年了。
该消息来源说要检查是否
$COLORTERM
包含24bit
或truecolor
。sh
bash
/zsh
:只需使用
tput colors
. 我相信测试终端功能比解析$TERM
或$COLORTERM
自己测试更安全。当然,
tput
只输出在Terminfo 数据库中注册的广告能力,因此可能无法准确反映您的实际终端能力。不幸的是,根据评论,许多终端仍然存在错误或过时的信息,特别是在 Windows 和 MacOS 等平台上。希望如果有足够的时间(和错误报告!),这些终端最终会
$TERM
适当地设置它们。毕竟,Terminfo 数据库支持 24 位颜色已经 4 年了。