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; }