Skip to content

Instantly share code, notes, and snippets.

@kenny-kvibe
Last active February 23, 2024 13:44
Show Gist options
  • Save kenny-kvibe/d000f9e933da5e99d782b4cc7776ec3e to your computer and use it in GitHub Desktop.
Save kenny-kvibe/d000f9e933da5e99d782b4cc7776ec3e to your computer and use it in GitHub Desktop.
ANSI color codes
#!/bin/bash
# ansi_colors.sh
#
# Wiki (ANSI CSI) https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_(Control_Sequence_Introducer)_sequences
# Wiki (ANSI SGR) https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters
# Parameter 030-03F (0x30–0x3F) (ASCII 0–9:;<=>?)
# Intermediate 020-02F (0x20–0x2F) (ASCII space and !"#$%&'()*+,-./)
# Final 040-07E (0x40–0x7E) (ASCII @A–Z[\]^_`a–z{|}~)
#
# _______________________________________________________________
# ____________ FG | BG _____________________ FG | BG ____________
# Black 30 │ 40 Dark Gray 90 │ 100
# Red 31 │ 41 Bright Red 91 │ 101
# Green 32 │ 42 Bright Green 92 │ 102
# Yellow 33 │ 43 Bright Yellow 93 │ 103
# Blu 34 │ 44 Bright Blue 94 │ 104
# Purple 35 │ 45 Bright Purple 95 │ 105
# Cyan 36 │ 46 Bright Cyan 96 │ 106
# Light Gray 37 │ 47 White 97 │ 107
# RESET 00
#
#
#> USAGE: '\[\033[47;04;30m\]'
# OR: '\033[47;04;30m'
# OR: '\e[47;04;30m'
#>------------------^^-^^-^^
# BG;ST;FG
# BG = Background
# ST = Style
# FG = Foreground
#
# OR only BG: '\e[30m'
# OR only ST: '\e[4m'
# OR only FG: '\e[47m'
#
#
#> 4-bit (16) colors:
# \033[Cm" => Foreground (C => 30-37 & 90-97)
# \033[Cm" => Background (C => 40-47 & 100-107)
# \033[0m" => Color Reset
#
#> 8-bit (256) colors:
# \033[38;5;Cm => Foreground (C => 0-255)
# \033[48;5;Cm => Background (C => 0-255)
# \033[0m" => Color Reset
#
#> 24-bit (256^3) colors:
# \033[38;2;R;G;Bm => Foreground (R, G, B => 0-255, 0-255, 0-255)
# \033[48;2;R;G;Bm => Background (R, G, B => 0-255, 0-255, 0-255)
# \033[0m" => Color Reset
#
#
########
function print_4_bit_colors {
printf '\n\n> 4-bit (16) colors:\n'
echo ' "\033[Xm" => Foreground (X = 30-37 & X = 90-97)'
echo ' "\033[Xm" => Background (X = 40-47 & X = 100-107)'
printf '\n'
local C
for C in {0..7}; do
printf "\033[00;3${C}mFG: 00;3$C\033[0m │ " 2>/dev/null
printf "\033[01;3${C}mFG: 01;3$C\033[0m │ " 2>/dev/null
printf "\033[00;9${C}mFG: 00;9$C\033[0m\n" 2>/dev/null
done
echo '──────────┼───────────┼───────────'
for C in {0..7}; do
printf "\033[00;4${C}mBG: 00;4$C\033[0m │ " 2>/dev/null
printf "\033[01;4${C}mBG: 01;4$C\033[0m │ " 2>/dev/null
printf "\033[00;10${C}mBG: 00;10$C\033[0m\n" 2>/dev/null
done
return 0
}
########
function print_8_bit_colors {
printf '\n\n> 8-bit (256) colors:\n'
echo ' "\033[38;5;Xm" => Foreground (X = 0-255)'
echo ' "\033[48;5;Xm" => Background (X = 0-255)'
printf '\n'
local C
for C in {0..7}; do
C="00$C"
printf "\033[38;5;${C}mFG: 38;5;$C\033[0m │ " 2>/dev/null
printf "\033[48;5;${C}mBG: 48;5;$C\033[0m\n" 2>/dev/null
done
echo '─────────────┼─────────────'
for C in {16..231}; do
[[ $C -le 99 ]] && C="0$C"
printf "\033[38;5;${C}mFG: 38;5;$C\033[0m │ " 2>/dev/null
printf "\033[48;5;${C}mBG: 48;5;$C\033[0m\n" 2>/dev/null
done
echo '─────────────┼─────────────'
for C in {232..255}; do
printf "\033[38;5;${C}mFG: 38;5;$C\033[0m │ " 2>/dev/null
printf "\033[48;5;${C}mBG: 48;5;$C\033[0m\n" 2>/dev/null
done
return 0
}
########
function print_24_bit_colors {
printf '\n\n> 24-bit (16777216) colors:\n\n'
echo ' "\033[38;2;R;G;Bm" => Foreground (R = 0-255, G = 0-255, B = 0-255)'
echo ' "\033[48;2;R;G;Bm" => Background (R = 0-255, G = 0-255, B = 0-255)'
printf '\n'
local r g b R G B
local last=255
local range=`eval echo {0..$last}`
for B in $range; do
b="$B"
if [[ $B -le 99 ]]; then
b="0$b"; [[ $B -le 9 ]] && b="0$b"
fi
for G in $range; do
g="$G"
if [[ $G -le 99 ]]; then
g="0$g"; [[ $G -le 9 ]] && g="0$g"
fi
for R in $range; do
r="$R"
if [[ $R -le 99 ]]; then
r="0$r"; [[ $R -le 9 ]] && r="0$r"
fi
printf "\033[38;02;${r};${g};${b}mFG: 38;02;${r};${g};${b}\033[0m │ " 2>/dev/null
printf "\033[48;02;${r};${g};${b}mBG: 48;02;${r};${g};${b}\033[0m\n" 2>/dev/null
done
[[ $G -ne $last ]] && echo '──────────────────────┼──────────────────────'
done
[[ $B -ne $last ]] && echo '──────────────────────┼──────────────────────'
done
return 0
}
########
function _emsg {
[[ "$1" = "1" ]] && printf '\nSkipping...\n' || printf 'End, exiting...\n'
return 0
}
########
function main_print_colors {
local check=0
case "$TERM" in *-256color) check=1 ;; esac
[ ${check} ] && echo -e '> \033[01;32mTerminal supports 24-bit ANSI coloring!\033[0m' \
|| echo "> 24-bit ANSI coloring is not supported in '$TERM' terminal, colors won't appear as intended!"
check=''
######
printf '\nPrint 4-bit (16 colors)? [Y/n]: '; read -r -N1 check
[[ "$check" != 'y' && "$check" != 'Y' ]] && _emsg 1 || print_4_bit_colors
######
printf '\nPrint 8-bit (256 colors) ? [Y/n]: '; read -r -N1 check
[[ "$check" != 'y' && "$check" != 'Y' ]] && _emsg 1 || print_8_bit_colors
######
printf '\nPrint 24-bit (16777216 colors) ? [Y/n]: '; read -r -N1 check
[[ "$check" != 'y' && "$check" != 'Y' ]] && _emsg 1 || print_24_bit_colors
######
_emsg && return 0
}
########
printf "\n ,-. . . ,--. , ,--. .
/ \\ |\\ | ( \` | / |
|---| | \\ | \`--. | | ,--. | ,--. ;-. ,-.
| | | \\| . ) | \\ | | | | | | \`-.
' ' ' ' \`--' ' \`--' \`--' ' \`--' ' \`-'
[ ANSI SGR (Select Graphic Rendition) Color Codes ]\n
> The script prints all of the 4-bit (16), 8-bit (256)\n and 24-bit (16777216) colors available.
> More info at: https://en.wikipedia.org/wiki/ANSI_escape_code\n"
main_print_colors
#!/bin/bash
# ansi_colors_table_by_color.sh
# Wiki: https://en.wikipedia.org/wiki/ANSI_escape_code
######
# Title
printf '\n'
printf '│ Black '
printf '│ Red '
printf '│ Green '
printf '│ Yellow '
printf '│ Blue '
printf '│ Magenta '
printf '│ Cyan '
printf '│ White '
printf '│\n├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤\n'
######
# Regular
printf '│\033[0;30m Regular \033[0m'
printf '│\033[0;31m Regular \033[0m'
printf '│\033[0;32m Regular \033[0m'
printf '│\033[0;33m Regular \033[0m'
printf '│\033[0;34m Regular \033[0m'
printf '│\033[0;35m Regular \033[0m'
printf '│\033[0;36m Regular \033[0m'
printf '│\033[0;37m Regular \033[0m'
printf '│\n'
######
# Bright (Bold or Increased Intensity)
printf '│\033[1;30m Bright \033[0m'
printf '│\033[1;31m Bright \033[0m'
printf '│\033[1;32m Bright \033[0m'
printf '│\033[1;33m Bright \033[0m'
printf '│\033[1;34m Bright \033[0m'
printf '│\033[1;35m Bright \033[0m'
printf '│\033[1;36m Bright \033[0m'
printf '│\033[1;37m Bright \033[0m'
printf '│\n'
######
# Underline
printf '│\033[4;30m Underline \033[0m'
printf '│\033[4;31m Underline \033[0m'
printf '│\033[4;32m Underline \033[0m'
printf '│\033[4;33m Underline \033[0m'
printf '│\033[4;34m Underline \033[0m'
printf '│\033[4;35m Underline \033[0m'
printf '│\033[4;36m Underline \033[0m'
printf '│\033[4;37m Underline \033[0m'
printf '│\n'
######
# Background
printf '│\033[40m Background \033[0m'
printf '│\033[41m Background \033[0m'
printf '│\033[42m Background \033[0m'
printf '│\033[43m Background \033[0m'
printf '│\033[44m Background \033[0m'
printf '│\033[45m Background \033[0m'
printf '│\033[46m Background \033[0m'
printf '│\033[47m Background \033[0m'
printf '│\n\n'
######
#!/bin/bash
# ansi_colors_table_by_style.sh
# Wiki: https://en.wikipedia.org/wiki/ANSI_escape_code
######
# Title
printf '\n'
printf '│ Regular '
printf '│ Bright '
printf '│ Underline '
printf '│ Background '
printf '│ Bright FG '
printf '│ Bright BG '
printf '│\n├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤\n'
######
# Black
printf '│\033[0;30m Black \033[0m'
printf '│\033[1;30m Black \033[0m'
printf '│\033[4;30m Black \033[0m'
printf '│\033[0;40m Black \033[0m'
printf '│\033[0;90m Black \033[0m'
printf '│\033[0;100m Black \033[0m'
printf '│\n'
######
# Red
printf '│\033[0;31m Red \033[0m'
printf '│\033[1;31m Red \033[0m'
printf '│\033[4;31m Red \033[0m'
printf '│\033[0;41m Red \033[0m'
printf '│\033[0;91m Red \033[0m'
printf '│\033[0;101m Red \033[0m'
printf '│\n'
######
# Green
printf '│\033[0;32m Green \033[0m'
printf '│\033[1;32m Green \033[0m'
printf '│\033[4;32m Green \033[0m'
printf '│\033[0;42m Green \033[0m'
printf '│\033[0;92m Green \033[0m'
printf '│\033[0;102m Green \033[0m'
printf '│\n'
######
# Yellow
printf '│\033[0;33m Yellow \033[0m'
printf '│\033[1;33m Yellow \033[0m'
printf '│\033[4;33m Yellow \033[0m'
printf '│\033[0;43m Yellow \033[0m'
printf '│\033[0;93m Yellow \033[0m'
printf '│\033[0;103m Yellow \033[0m'
printf '│\n'
######
# Blue
printf '│\033[0;34m Blue \033[0m'
printf '│\033[1;34m Blue \033[0m'
printf '│\033[4;34m Blue \033[0m'
printf '│\033[0;44m Blue \033[0m'
printf '│\033[0;94m Blue \033[0m'
printf '│\033[0;104m Blue \033[0m'
printf '│\n'
######
# Magenta
printf '│\033[0;35m Magenta \033[0m'
printf '│\033[1;35m Magenta \033[0m'
printf '│\033[4;35m Magenta \033[0m'
printf '│\033[0;45m Magenta \033[0m'
printf '│\033[0;95m Magenta \033[0m'
printf '│\033[0;105m Magenta \033[0m'
printf '│\n'
######
# Cyan
printf '│\033[0;36m Cyan \033[0m'
printf '│\033[1;36m Cyan \033[0m'
printf '│\033[4;36m Cyan \033[0m'
printf '│\033[0;46m Cyan \033[0m'
printf '│\033[0;96m Cyan \033[0m'
printf '│\033[0;106m Cyan \033[0m'
printf '│\n'
######
# White
printf '│\033[0;37m White \033[0m'
printf '│\033[1;37m White \033[0m'
printf '│\033[4;37m White \033[0m'
printf '│\033[0;47m White \033[0m'
printf '│\033[0;97m White \033[0m'
printf '│\033[0;107m White \033[0m'
printf '│\n\n'
######
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment