ANSI/VT100 terminals and terminal emulators are not just able to display black and white text; they can display colors and formatted texts thanks to escape sequences.
##
# Bash Colors and Formatting
#
# Usage:
#
# $ source ~/.colors
# $ echo -e "${norm_yellow}hello, i'm yellow.${reset_color}"
#
# Reference:
#
# - Bash tips: Colors and formatting <http://misc.flogisoft.com/bash/tip_colors_and_formatting>
##
# reset all attributes
reset_color="\\e[0m" # no color
# regular colors
norm_black="\\e[0;30m" # black
norm_red="\\e[0;31m" # red
norm_green="\\e[0;32m" # green
norm_yellow="\\e[0;33m" # yellow
norm_blue="\\e[0;34m" # blue
norm_purple="\\e[0;35m" # purple
norm_cyan="\\e[0;36m" # cyan
norm_white="\\e[0;37m" # white
# bright colors
bright_black="\\e[0;90m" # black
bright_red="\\e[0;91m" # red
bright_green="\\e[0;92m" # green
bright_yellow="\\e[0;93m" # yellow
bright_blue="\\e[0;94m" # blue
bright_purple="\\e[0;95m" # purple
bright_cyan="\\e[0;96m" # cyan
bright_white="\\e[0;97m" # white
# bold colors
bold_black="\\e[1;30m" # black
bold_red="\\e[1;31m" # red
bold_green="\\e[1;32m" # green
bold_yellow="\\e[1;33m" # yellow
bold_blue="\\e[1;34m" # blue
bold_purple="\\e[1;35m" # purple
bold_cyan="\\e[1;36m" # cyan
bold_white="\\e[1;37m" # white
# bright bold colors
bright_bold_black="\\e[1;90m" # black
bright_bold_red="\\e[1;91m" # red
bright_bold_green="\\e[1;92m" # green
bright_bold_yellow="\\e[1;93m" # yellow
bright_bold_blue="\\e[1;94m" # blue
bright_bold_purple="\\e[1;95m" # purple
bright_bold_cyan="\\e[1;96m" # cyan
bright_bold_white="\\e[1;97m" # white
# underline colors
underline_black="\\e[4;30m" # black
underline_red="\\e[4;31m" # red
underline_green="\\e[4;32m" # green
underline_yellow="\\e[4;33m" # yellow
underline_blue="\\e[4;34m" # blue
underline_purple="\\e[4;35m" # purple
underline_cyan="\\e[4;36m" # cyan
underline_white="\\e[4;37m" # white
# background colors
background_black="\\e[40m" # black
background_red="\\e[41m" # red
background_green="\\e[42m" # green
background_yellow="\\e[43m" # yellow
background_blue="\\e[44m" # blue
background_purple="\\e[45m" # purple
background_cyan="\\e[46m" # cyan
background_white="\\e[47m" # white
# bright background colors
background_bright_black="\\e[0;100m" # black
background_bright_red="\\e[0;101m" # red
background_bright_green="\\e[0;102m" # green
background_bright_yellow="\\e[0;103m" # yellow
background_bright_blue="\\e[0;104m" # blue
background_bright_purple="\\e[10;95m" # purple
background_bright_cyan="\\e[0;106m" # cyan
background_bright_white="\\e[0;107m" # white
# format
format_bold_bright="\\e[1m" # bold
format_dim="\\e[2m" # dim
format_underline="\\e[4m" # underlined
format_blink="\\e[5m" # blink
format_invert="\\e[7m" # invert fg and bg
format_hide="\\e[8m" # hide