И это всё МОЁ

Делюсь кодом для раскраски сообщений выводимых через 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







 ,