#!/bin/bash # https://unix.stackexchange.com/a/269085 # A simple test of your console capacity to present so many colors is: # for r in {200..255..5}; do fb=4;g=1;b=1;printf '\e[0;%s8;2;%s;%s;%sm ' "$fb" "$r" "$g" "$b"; done; echo # It will present a red line with a very small change in tone from left to right. # If that small change is visible, your console is capable of 16 million colors. # If your console type support this, this code will create a color table: mode2header(){ #### For 16 Million colors use \e[0;38;2;R;G;Bm each RGB is {0..255} printf '\e[m' # reset the colors. printf '\n\e[m%s\n' "Some samples of colors for r;g;b. Each one may be 000..255" printf '\e[m%59s\n' "for the ansi option: \e[0;38;2;r;g;bm or \e[0;48;2;r;g;bm :" } mode2colors(){ # foreground or background (only 3 or 4 are accepted) local fb="$1" [[ $fb != 3 ]] && fb=4 local samples=(0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 172 174 176 178 180 182 184 186 188 190 192 194 196 198 200 202 204 206 208 210 212 214 216 218 220 222 224 226 228 230 232 234 236 238 240 242 244 246 248 250 252 254) for r in "${samples[@]}"; do for g in "${samples[@]}"; do printf "%2x,%2x" "$r" "$g" for b in "${samples[@]}"; do # looks cooler if you replace the # with an ansi block character ` # (but I don't feel like messing with the encoding on my git server) # https://theasciicode.com.ar/extended-ascii-code/block-graphic-character-ascii-code-219.html printf '\e[0;%s8;2;%s;%s;%sm#' "$fb" "$r" "$g" "$b" done; printf '\e[m\n' done; printf '\e[m' done; printf '\e[mReset\n' } mode2header mode2colors 3