Last active
February 23, 2024 13:44
-
-
Save kenny-kvibe/d000f9e933da5e99d782b4cc7776ec3e to your computer and use it in GitHub Desktop.
ANSI color codes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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' | |
###### |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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