전통적인 색상 이름(예: 빨간색, 녹색, 파란색 등)을 통해 메시지를 색상으로 표시합니다.

전통적인 색상 이름(예: 빨간색, 녹색, 파란색 등)을 통해 메시지를 색상으로 표시합니다.

Ubuntu 18.04 및 GNU bash, 버전 4.4.20(1) 릴리스(x86_64-pc)를 사용하는 WSL.

메시지를 표시하고 싶어요전통적으로 명명된 색상-red, 또는 -green, 또는 -blue이와 유사한 인수로 (최종 사용자가 기계 구문을 사용하여 색상을 정의할 필요가 없습니다.).

printf나는 현대 버전의 or 조차도 echo이것을 할 수 없다고 생각합니다 .

나는 쉘이 내장되어 있고 아무것도 설치하지 않는 것을 선호합니다.

답변1

세텀 괜찮나요?

setterm -foreground red

답변2

먼저 색상 단어를 변수로 정의한 다음 printf 또는 echo와 함께 사용할 수 있습니다.

RED='\033[0;31m'
NONE='\033[0m'  # reset colour attribues
printf "${RED}This is in red ${NONE}\n"

일부 색상 코드는 다음과 같습니다.

Black        0;30     Dark Gray     1;30
Red          0;31     Light Red     1;31
Green        0;32     Light Green   1;32
Brown/Orange 0;33     Yellow        1;33
Blue         0;34     Light Blue    1;34
Purple       0;35     Light Purple  1;35
Cyan         0;36     Light Cyan    1;36
Light Gray   0;37     White         1;37

답변3

내 코드 샘플은 아래와 같습니다. 잠자리에 들 준비가 되었습니다. 모든 것이 명확해졌으면 좋겠습니다.

tput_init_linux () { set_fg_color='tput setaf'; reset_color=$(tput sgr0 2>/dev/null); } # terminfo
tput_init_bsd   () { set_fg_color='tput AF';    reset_color=$(tput me   2>/dev/null); } # termcap
tput_init_none  () { set_fg_color=':';          reset_color=;                         } # the null command (:) ignores everything after it

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 ()
{
    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; }

관련 정보