Flash Notes

Programming - Display a colorized message on a "linux" terminal


• How to display a colorized message on a "linux" terminal" ?

Solution

Use escape sequences

Test script

#!/bin/bash

# Constants
# ~~~~~~~~~
red=1
green=2
yellow=3
blue=4
magenta=5
cyan=6
white=7

# Function that displays a colorized message
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
color_display()
{
	col="$1"
	shift

	case "$col" in
		R|red)         col="red"     ;;
		G|green)       col="green"   ;;
		Y|yellow)      col="yellow"  ;;
		B|blue)        col="blue"    ;;
		M|magenta)     col="magenta" ;;
		C|cyan)        col="cyan"    ;;
		W|white)       col="white"   ;;

		*)             error " Unknown color : \"$col\" !"
		               exit 1
		               ;;
	esac

	col_num=`eval echo '$'"$col"`

	# Display appropriate escape sequence
	# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	echo -e '\033[01;3'"$col_num"'m'"$@"'\033[0m'
}

color_display red     "Message in RED"
color_display green   "Message in GREEN"
color_display yellow  "Message in YELLOW"
color_display blue    "Message in BLUE"
color_display magenta "Message in MAGENTA"
color_display cyan    "Message in CYAN"
color_display white   "Message in WHITE"

Result

Message in RED
Message in GREEN
Message in YELLOW
Message in BLUE
Message in MAGENTA
Message in CYAN
Message in WHITE