BSD(和 Linux)tput - 基本可互操作的颜色设置

BSD(和 Linux)tput - 基本可互操作的颜色设置

任何人都可以在 *带 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) 打开突出模式,您可以在后面看到手册页不一定等于大胆的:

如果您的终端具有一种或多种显示属性,则可以用多种不同的方式表示这些属性。您应该选择一种显示形式 突出模式,代表一种良好的、高对比度、易于观察的格式,用于突出显示错误消息和其他引人注目的内容。 (如果有选择的话,反向视频半亮是好的,或者反向视频)进入和退出的序列 突出模式 给出为smsormso, 分别。如果代码更改为或更改为突出模式 在屏幕上留下一个甚至两个空白,就像 TVI 912 和 Teleray 1061 所做的那样,然后 xmc应该告诉我们还剩下多少个空格。

相关内容