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에는 미리 정의된 굵은 기능이 없습니다(참조매뉴얼 페이지).
  • 굵은 글씨를 끄는 것과 색상을 끄는 것 사이에도 차이가 없습니다.

이식성을 위해 이를 고려해야 합니다(색상을 다시 설정).존재하다네가 대담해지면떠나다색상에 영향을 주지 않습니다.)

관련 정보