任何人都可以在 *带 GUI 的 BSD请确认以下内容在 BSD 系统上是否正确运行?
我试图创建一个虚拟的 *BSD 测试盒,但最终没有成功。因此,我耗尽了一些可用资源来tput
在 *BSD 上获得正确的序列...谢谢!
#!/bin/sh
if tput setaf > /dev/null 2>&1; then
# Linux tput
tput_number_of_colors=$(tput colors)
tput_cmd_set_fg_color='tput setaf'
tput_bold=$(tput bold)
tput_reset=$(tput sgr0)
elif tput AF > /dev/null 2>&1; then
# BSD tput
tput_number_of_colors=$(tput Co)
tput_cmd_set_fg_color='tput AF'
tput_bold=$(tput smso)
tput_reset=$(tput me)
else
# black & white console, or no tput
tput_number_of_colors=2
tput_cmd_set_fg_color=
tput_bold=
tput_reset=
fi
tput_test ()
# this function uses the above to test tput capability of the terminal
{
{ command -v tput && [ "$tput_number_of_colors" -ge 8 ] && $tput_cmd_set_fg_color 1 && echo "$tput_bold"; } > /dev/null 2>&1
}
if tput_test; then
# example of bold color definition
color_red=$tput_bold$($tput_cmd_set_fg_color $color_red_id)
fi
答案1
不:s/smso/so/
(termcap 名称始终为 2 个字符)。这术语信息(5)手册页是回答您的问题的地方。
手册页显示了这一点:
enter_bold_mode bold md turn on bold (extra
bright) mode
以便md
将用于打开大胆的模式。 smso
(术语信息)或so
(termcap) 打开突出模式,您可以在后面看到手册页不一定等于大胆的:
如果您的终端具有一种或多种显示属性,则可以用多种不同的方式表示这些属性。您应该选择一种显示形式 突出模式,代表一种良好的、高对比度、易于观察的格式,用于突出显示错误消息和其他引人注目的内容。 (如果有选择的话,反向视频加半亮是好的,或者反向视频)进入和退出的序列 突出模式 给出为
smso
和rmso
, 分别。如果代码更改为或更改为突出模式 在屏幕上留下一个甚至两个空白,就像 TVI 912 和 Teleray 1061 所做的那样,然后xmc
应该告诉我们还剩下多少个空格。