#!/usr/bin/env bash # Print out escape sequences usable for coloured text on tty. # shellcheck disable=2016 printf 'Colour escapes are %s\n' '\e[${value};...;${value}m' printf 'Values 30..37 are \e[33mforeground colours\e[m\n' printf 'Values 40..47 are \e[43mbackground colours\e[m\n' printf 'Value 1 gives a \e[1mbold look\e[m\n' printf 'Value 2 gives a \e[2mdim look\e[m\n' printf 'Value 3 gives a \e[3mitalic look\e[m\n' printf 'Value 4 gives a \e[4munderlined look\e[m\n' printf 'Value 5 gives a \e[5mblinking look\e[m\n\n' # foreground colours for fgc in {30..37}; do # background colours for bgc in {40..47}; do fgc=${fgc#37} # white bgc=${bgc#40} # black vals="${fgc:+$fgc};${bgc}" vals=${vals%%;} seq0="${vals:+\e[${vals}m}" printf " %-9s" "${seq0:-(default)}" echo -en " ${seq0}TEXT\e[m" echo -en " \e[${vals:+${vals+$vals}};1mBOLD\e[m" echo -en " \e[${vals:+${vals+$vals}};2mDIM\e[m" echo -en " \e[${vals:+${vals+$vals}};3mITA\e[m" echo -en " \e[${vals:+${vals+$vals}};4mUND\e[m" echo -en " \e[${vals:+${vals+$vals}};5mBLI\e[m" done echo; echo done rainbowColor() { local h=$(($1 / 43)) local f=$(($1 - 43 * h)) local t=$((f * 255 / 43)) local q=$((255 - t)) if [ $h -eq 0 ] then echo "255 $t 0" elif [ $h -eq 1 ] then echo "$q 255 0" elif [ $h -eq 2 ] then echo "0 255 $t" elif [ $h -eq 3 ] then echo "0 $q 255" elif [ $h -eq 4 ] then echo "$t 0 255" elif [ $h -eq 5 ] then echo "255 0 $q" else # execution should never reach here echo '0 0 0' fi } rf(){ echo "$1" 0 0; }; gf(){ echo 0 "$1" 0; }; bf(){ echo 0 0 "$1"; } for f in rf gf bf rainbowColor; do for s in "$(seq 0 127)" "$(seq 255 -1 128)"; do for i in $s; do # shellcheck disable=2183,2046 printf '\x1b[48;2;%s;%s;%sm ' $($f "$i") done echo -en "\x1b[0m\n" done done