Computer

Linux terminal colors

With this script you can see the colors on your Linux terminal and how to print it.

Usualy I put this script on my home (~/) named as colors.sh with access level 755.
#!/bin/sh
# v.1 2022-05-17

usage()
{
	echo "Usage: $(basename $1) [OPTIONS]"
	echo
	echo "Options:"
	echo " -f                      Foreground colors"
	echo "   -fg"
	echo "   --fg"
	echo "   --foreground"
	echo " -d                      Show foreground dark contrast"
	echo "   --dark"
	echo " -h                      Show foreground highlight contrast"
	echo "   -hl"
	echo "   --hl"
	echo "   --high"
	echo "   --highlight"
	echo " -b                      Background colors"
	echo "   -bg"
	echo "   --bg"
	echo "   --background"
	echo " -1                      Show background in contrast"
	echo "   -c"
	echo "   -c1"
	echo "   --contrast"
	echo " -2                      Show background in dark contrast"
	echo "   -c2"
	echo "   --cd"
	echo "   --contrast-dark"
	echo " -3                      Show background in highlight contrast"
	echo "   -c3"
	echo "   --ch"
	echo "   --contrast-high"
	echo "   --contrast-highlight"
	echo " -a                      Show with all options"
	echo "   --all"
	echo
	echo "Foreground contrast short options can be combined: -dh or -hd"
	echo "Background contrast short options can be combined: -23 or -c32"
}

# print_color [Color] [Text] [Contrast]
print_color()
{
	if [[ "$3" == "" ]]; then
		printf "\033[${1}m %3d: ${2} \033[0m\n" $1
	else
		$show_dark          && printf "\033[2;${1}m 2;%3d: ${2} \033[0m " $1
		                       printf "\033[${1}m %3d: ${2} \033[0m " $1
		$show_high          && printf "\033[1;${1}m 1;%3d: ${2} \033[0m " $1
		$show_contrast_dark && printf "\033[2;${3};${1}m 2;%3d: ${2} \033[0m " $1
		$show_contrast      && printf "\033[${3};${1}m %3d: ${2} \033[0m " $1
		$show_contrast_high && printf "\033[1;${3};${1}m 1;%3d: ${2} \033[0m " $1
		echo
	fi
}

# print_number [Number] [Mode] [Contrast]
# Foreground Mode 38
# Background Mode 48
print_number()
{
	if [[ "$3" == "" ]]; then
		printf "\033[${2};05;${1}m %03d \033[0m" $1
	else
		printf "\033[${3};${2};05;${1}m %03d \033[0m" $1
	fi
}

# print_number_group [Start] [End] [Mode] [Cotrast 1] [Contrast 2] [Contrast 3]
print_number_group()
{
	group=`seq $1 $2`
	for i in $group; do
		print_number $i $3
	done
	echo

	$show_contrast_dark && \
	if [[ "$4" != "" ]]; then
		for i in $group; do
			print_number $i $3 $4
		done
		echo
	fi

	$show_contrast_high && \
	if [[ "$5" != "" ]]; then
		for i in $group; do
			print_number $i $3 $5
		done
		echo
	fi

	$show_contrast      && \
	if [[ "$6" != "" ]]; then
		for i in $group; do
			print_number $i $3 $6
		done
		echo
	 fi
}

# print_number_group [Start] [End] [Line Break Count] [Color] [Cotrast 1] [Contrast 2] [Contrast 3]
print_number_group_nl()
{
	group=`seq $1 $2`
	for i in $group; do
		if (( $i > $1 && `expr \( $i - $1 \) % $3` == 0 )); then
			echo
		fi
		print_number $i $4
	done
	echo

	$show_contrast_dark && \
	if [[ "$5" != "" ]]; then
		for i in $group; do
			if (( $i > $1 && `expr \( $i - $1 \) % $3` == 0 )); then
				echo
			fi
			print_number $i $4 $5
		done
		echo
	fi

	$show_contrast_high && \
	if [[ "$6" != "" ]]; then
		for i in $group; do
			if (( $i > $1 && `expr \( $i - $1 \) % $3` == 0 )); then
				echo
			fi
			print_number $i $4 $6
		done
		echo
	fi

	$show_contrast      && \
	if [[ "$7" != "" ]]; then
		for i in $group; do
			if (( $i > $1 && `expr \( $i - $1 \) % $3` == 0 )); then
				echo
			fi
			print_number $i $4 $7
		done
		echo
	fi
}

show_foreground=false
show_background=false
show_dark=false
show_high=false
show_contrast_dark=false
show_contrast=false
show_contrast_high=false

while [[ $# -gt 0 ]]; do
	case $1 in
		-f|-fg|--fg|--foreground)
			show_foreground=true
			shift
		;;
		-b|-bg|--bg|--background)
			show_background=true
			shift
		;;
		-d|--dark)
			show_dark=true
			shift
		;;
		-h|-hl|--hl|--high|--highlight)
			show_high=true
			shift
		;;
		-dh|-hd)
			show_dark=true
			show_high=true
			shift
		;;
		-1|-c|-c1|--contrast)
			show_contrast=true
			shift
		;;
		-2|-c12|-c2|--cd|--contrast-dark)
			show_contrast=true
			show_contrast_dark=true
			shift
		;;
		-3|-c13|-c3|--ch|--contrast-high|--contrast-highlight)
			show_contrast=true
			show_contrast_high=true
			shift
		;;
		-23|-32|-123|-132|-213|-312|-231|-321|-c23|-c32|-c123|-c132|-c213|-c312|-c231|-c321)
			show_contrast=true
			show_contrast_dark=true
			show_contrast_high=true
			shift
		;;
		-a|--all)
			show_foreground=true
			show_background=true
			show_dark=true
			show_high=true
			show_contrast_dark=true
			show_contrast=true
			show_contrast_high=true
			shift
		;;
		--help)
			usage $0
			exit 0
		;;
		*)
			echo "Unknown option $1"
			exit 1
		;;
	esac
done

echo -e "\\\\e[\e[1;37m#\e[0mm"
echo
print_color   0 "Reset"
print_color   1 "Bold"
print_color   2 "Dark"
print_color   3 "Italic"
print_color   4 "Underline"
print_color   5 "Blink (slow)"
print_color   6 "Blick (fast)"
print_color   7 "Invert"
echo
print_color  24 "Remove Underline"
print_color  25 "Remove highlight background / blink / invert" # Need be more assertive
print_color  27 "Remove highlight background / blink / invert" # Need be more assertive
print_color  39 "Remove Foreground"
print_color  49 "Remove Background"
# Still missing other Removes
echo
print_color  30 "Foreground Black           " 47
print_color  90 "Foreground Highlight Black " 47
print_color  37 "Foreground White           " 47
print_color  97 "Foreground Highlight White " 47
print_color  31 "Foreground Red             " 47
print_color  91 "Foreground Highlight Red   " 47
print_color  32 "Foreground Green           " 47
print_color  92 "Foreground Highlight Green " 47
print_color  33 "Foreground Yellow          " 47
print_color  93 "Foreground Highlight Yellow" 47
print_color  34 "Foreground Blue            " 47
print_color  94 "Foreground Highlight Blue  " 47
print_color  35 "Foreground Purple          " 47
print_color  95 "Foreground Highlight Purple" 47
print_color  36 "Foreground Cyan            " 47
print_color  96 "Foreground Highlight Cyan  " 47
echo
print_color  40 "Background Black           " 30
print_color 100 "Background Highlight Black " 30
print_color  41 "Background Red             " 30
print_color 101 "Background Highlight Red   " 30
print_color  42 "Background Green           " 30
print_color 102 "Background Highlight Green " 30
print_color  43 "Background Yellow          " 30
print_color 103 "Background Highlight Yellow" 30
print_color  44 "Background Blue            " 30
print_color 104 "Background Highlight Blue  " 30
print_color  45 "Background Purple          " 30
print_color 105 "Background Highlight Purple" 30
print_color  46 "Background Cyan            " 30
print_color 106 "Background Highlight Cyan  " 30
print_color  47 "Background White           " 30
print_color 107 "Background Highlight White " 30

if [[ $show_foreground == "true" ]]; then
	echo
	echo -e "\\\\e[38;\e[1;37m2\e[0m;\e[1;31m255\e[0m;\e[1;32m255\e[0m;\e[1;34m255\e[0m2m"
	echo
	echo -e "\\\\e[38;05;\e[1;37m#\e[0mm"
	echo

	print_number_group      1   8    38 100 47 107
	print_number_group      9  16    38 100 47 107
	print_number_group     17  21    38 100 47 107
	print_number_group_nl  22 231 36 38 100 47 107
	print_number_group    232 255    38 100 47 107
fi

if [[ $show_background == "true" ]]; then
	echo
	echo -e "\\\\e[48;\e[1;37m2\e[0m;\e[1;31m255\e[0m;\e[1;32m255\e[0m;\e[1;34m255\e[0m2m"
	echo
	echo -e "\\\\e[48;05;\e[1;37m#\e[0mm"
	echo

	print_number_group      1   8    48 "" "" 30
	print_number_group      9  16    48 "" "" 30
	print_number_group     17  21    48 "" "" 30
	print_number_group_nl  22 231 36 48 "" "" 30
	print_number_group    232 255    48 "" "" 30
fi
USE IT AT YOUR OWN RISK!
Kudos: 0 [Give a kudo]

12r6j5xasef5Z6Sm4A6oBpMLn2ESPPX6ym
Ads: