+#!/bin/bash
+# https://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
+# https://gist.github.com/XVilka/8346728#gistcomment-3528771
+
+T='::' # The test text
+
+function echo_block() {
+ local fs=$1
+ local bs=$2
+ echo " 01234567"
+ for (( f = 0; f < 8; f++ )); do
+ echo -en " ${f} "
+ for (( b = 0; b < 8; b++ )); do
+ echo -en "\033[38;5;$((fs+f))m\033[48;5;$((bs+b))m$T\033[0m";
+ done
+ echo
+ done
+}
+
+function print_colors() {
+ local c
+ for (( c = $1; c < $1 + $2; c++)); do
+ echo -en "\033[48;5;${c}m$T\033[0m"
+ done
+ echo
+}
+function colors() {
+ print_colors 0 8
+ print_colors 8 8
+ for (( c = 16; c < 256 - 24; c += 36 )); do
+ print_colors $c 36
+ done
+ print_colors $((256 - 24)) 24
+}
+
+function true_colors() {
+ awk -v term_cols="${width:-$(tput cols || echo 80)}" 'BEGIN{
+ s="/\\";
+ for (colnum = 0; colnum<term_cols; colnum++) {
+ r = 255-(colnum*255/term_cols);
+ g = (colnum*510/term_cols);
+ b = (colnum*255/term_cols);
+ if (g>255) g = 510-g;
+ printf "\033[48;2;%d;%d;%dm", r,g,b;
+ printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b;
+ printf "%s\033[0m", substr(s,colnum%2+1,1);
+ }
+ printf "\n";
+ }'
+}
+
+colors
+true_colors