Делюсь кодом для раскраски сообщений выводимых через echo, который использую в своём проекте.
Использовать так:
. colours.sh
echo Bla bla bla | msg -2 --foreground "Light Red" --highlight
Где -1 это STDOUT, соответственно -2 для STDERR.
Можно указать --foreground, --background, --highlight и --bold.
Коды цветов связаны напрямую с mIRC, т.е. условно скажем, если в линуксовой консоли 0 (нулевой) это чёрный, 1 (первый) это красный, то в mIRC порядок немножечко другой, и красный там это 4 цвет. Если вы хоть раз в жизни пользовались IRC клиентом, то знаете, о чём речь. Порядок цветов именно такой, какой используется в IRC, просто мне так удобнее потому что в отличии от линуксовой консоли цвета mIRC я помню наизусть )) Но можете изменить порядок цветов как вам надо. Цвета можно использовать указывая их номер или их полное название, описание цветов в IRC тут: https://www.mirc.com/colors.html
echo "Bla Bla Bla" | msg -1 --foreground 9 --background 1
9 это зелный текст, 1 это чёрный фон.
Надеюсь это кому-нибудь окажется полезным.
#! /bin/sh -
msg() {
STDOUT=""
STDERR=""
fore=""
back=""
ctrl=""
sgr0=""
while test "$1"; do
case "$1" in
"-1") STDOUT="yes" ;;
"-2") STDERR="yes" ;;
"--foreground") fore="$2" ; shift ; ;;
"--background") back="$2" ; shift ; ;;
"--highlight") ctrl="$ctrl$SWITCH_HIGHLIGHT" ; ;;
"--bold") ctrl="$ctrl$SWITCH_BOLD" ; ;;
esac
shift
done
case "$fore" in
"00"|"0"|"White") fore="$FOREGROUND_00" ;;
"01"|"1"|"Black") fore="$FOREGROUND_01" ;;
"02"|"2"|"Blue") fore="$FOREGROUND_02" ;;
"03"|"3"|"Green") fore="$FOREGROUND_03" ;;
"04"|"4"|"Light Red") fore="$FOREGROUND_04" ;;
"05"|"5"|"Brown") fore="$FOREGROUND_05" ;;
"06"|"6"|"Purple") fore="$FOREGROUND_06" ;;
"07"|"7"|"Orange") fore="$FOREGROUND_07" ;;
"08"|"8"|"Yellow") fore="$FOREGROUND_08" ;;
"09"|"9"|"Light Green") fore="$FOREGROUND_09" ;;
"10"|"Cyan") fore="$FOREGROUND_10" ;;
"11"|"Light Cyan") fore="$FOREGROUND_11" ;;
"12"|"Light Blue") fore="$FOREGROUND_12" ;;
"13"|"Pink") fore="$FOREGROUND_13" ;;
"14"|"Grey") fore="$FOREGROUND_14" ;;
"15"|"Light Grey") fore="$FOREGROUND_15" ;;
*) fore="$FOREGROUND_DEFAULT" ;;
esac
case "$back" in
"00"|"0"|"White") back="$BACKGROUND_00" ;;
"01"|"1"|"Black") back="$BACKGROUND_01" ;;
"02"|"2"|"Blue") back="$BACKGROUND_02" ;;
"03"|"3"|"Green") back="$BACKGROUND_03" ;;
"04"|"4"|"Light Red") back="$BACKGROUND_04" ;;
"05"|"5"|"Brown") back="$BACKGROUND_05" ;;
"06"|"6"|"Purple") back="$BACKGROUND_06" ;;
"07"|"7"|"Orange") back="$BACKGROUND_07" ;;
"08"|"8"|"Yellow") back="$BACKGROUND_08" ;;
"09"|"9"|"Light Green") back="$BACKGROUND_09" ;;
"10"|"Cyan") back="$BACKGROUND_10" ;;
"11"|"Light Cyan") back="$BACKGROUND_11" ;;
"12"|"Light Blue") back="$BACKGROUND_12" ;;
"13"|"Pink") back="$BACKGROUND_13" ;;
"14"|"Grey") back="$BACKGROUND_14" ;;
"15"|"Light Grey") back="$BACKGROUND_15" ;;
*) back="$BACKGROUND_DEFAULT" ;;
esac
if test "$fore$back$ctrl"; then
sgr0="$(tput sgr0)"
fi
if test "$STDOUT" = "yes"; then
while read input; do
echo "$fore$back$ctrl$input$sgr0" >&1
done
fi
if test "$STDERR" = "yes"; then
while read input; do
echo "$fore$back$ctrl$input$sgr0" >&2
done
fi
}
mirc_colours_schema() {
FOREGROUND_00="$(tput setaf 7)$(tput bold)"
FOREGROUND_01="$(tput setaf 0)"
FOREGROUND_02="$(tput setaf 4)"
FOREGROUND_03="$(tput setaf 2)"
FOREGROUND_04="$(tput setaf 1)$(tput bold)"
FOREGROUND_05="$(tput setaf 1)"
FOREGROUND_06="$(tput setaf 5)"
FOREGROUND_07="$(tput setaf 3)"
FOREGROUND_08="$(tput setaf 3)$(tput bold)"
FOREGROUND_09="$(tput setaf 2)$(tput bold)"
FOREGROUND_10="$(tput setaf 6)"
FOREGROUND_11="$(tput setaf 6)$(tput bold)"
FOREGROUND_12="$(tput setaf 4)$(tput bold)"
FOREGROUND_13="$(tput setaf 5)$(tput bold)"
FOREGROUND_14="$(tput setaf 0)$(tput bold)"
FOREGROUND_15="$(tput setaf 7)"
FOREGROUND_DEFAULT=""
BACKGROUND_00="$(tput setab 7)$(tput bold)"
BACKGROUND_01="$(tput setab 0)"
BACKGROUND_02="$(tput setab 4)"
BACKGROUND_03="$(tput setab 2)"
BACKGROUND_04="$(tput setab 1)$(tput bold)"
BACKGROUND_05="$(tput setab 1)"
BACKGROUND_06="$(tput setab 5)"
BACKGROUND_07="$(tput setab 3)"
BACKGROUND_08="$(tput setab 3)$(tput bold)"
BACKGROUND_09="$(tput setab 2)$(tput bold)"
BACKGROUND_10="$(tput setab 6)"
BACKGROUND_11="$(tput setab 6)$(tput bold)"
BACKGROUND_12="$(tput setab 4)$(tput bold)"
BACKGROUND_13="$(tput setab 5)$(tput bold)"
BACKGROUND_14="$(tput setab 0)$(tput bold)"
BACKGROUND_15="$(tput setab 7)"
BACKGROUND_DEFAULT=""
SWITCH_OFF="$(tput sgr0)"
SWITCH_BOLD="$(tput bold)"
SWITCH_UNDERLINE_ON="$(tput smul)"
SWITCH_UNDERLINE_OFF="$(tput rmul)"
SWITCH_HIGHLIGHT="$(tput blink)"
SWITCH_REVERSE="$(tput rev)"
SWITCH_DEFAULT=""
}
mirc_colours_schema