terminfo / termcap `tput太字`/`tput md`:太字の移植性

terminfo / termcap `tput太字`/`tput md`:太字の移植性

次の色をサポートするポータブルシェルスクリプトがあるとします。

#!/bin/sh

set -o nounset

tput_init_linux () { set_fg_color='tput setaf'; reset_color=$(tput sgr0 2>/dev/null); }
tput_init_bsd   () { set_fg_color='tput AF';    reset_color=$(tput me 2>/dev/null);   }
tput_init_none  () { set_fg_color=':';          reset_color=;                         }

if tput setaf 1 >/dev/null 2>&1; then tput_init_linux || tput_init_none;
elif tput AF 1  >/dev/null 2>&1; then tput_init_bsd   || tput_init_none;
else tput_init_none; fi

no_color () { printf '%s' "$reset_color"; }

colorize ()
{
    #tput bold
    case "$1" in
        (red)     $set_fg_color 1 ;;
        (green)   $set_fg_color 2 ;;
        (yellow)  $set_fg_color 3 ;;
        (blue)    $set_fg_color 4 ;;
        (magenta) $set_fg_color 5 ;;
        (cyan)    $set_fg_color 6 ;;
        (white)   $set_fg_color 7 ;;
        (*) printf '%s\n' "[ERROR] This color ('$1') is not supported by the colorize() function. Quiting!" >&2; exit 1 ;;
    esac
}

print_ok     () { colorize green;  printf '%s' '[OK] ';        no_color; }
print_notice () { colorize cyan;   printf '%s' '[NOTICE] ';    no_color; }
print_debug  () { colorize yellow; printf '%s' '[DEBUG] ' >&2; no_color; }
print_error  () { colorize red;    printf '%s' '[ERROR] ' >&2; no_color; }

以下はやや愚かな使用例です。

grub_config_file=/boot/grub/grub.cfg
readonly grub_config_file

if [ ! -f "$grub_config_file" ]; then
    print_error; printf '%s\n' "GRUB config file not found at $grub_config_file. Aborting!" >&2
    exit 1
else
    print_ok; printf '%s\n' "GRUB config file was found at $grub_config_file. Searching for Windows..."
fi

今、私の質問は太字の文字についてです。

tput bold具体的には、terminfo / termcap /が移植可能かどうかはわかりません。tput mdそうでない場合、太字のテキストの制限は何ですか?

時間をいただきありがとうございます。

答え1

デフォルトの制限は回転時です。勇敢な 去る。一部の端末はECMA-48制御をサポートしています。SGR 22(太字/薄暗く、色に影響しません)。しかし、

  • terminfoまたはtermcapには事前定義された太字機能はありません(参照マニュアルページ)。
  • 太字を消すことと色を消すことにも違いはありません。

移植性のためにこれを考慮する必要があります(色をリセットします)。存在する大胆になると去る色には影響しません。)

関連情報