+#!/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