Вывод цветного текста в BASH

При написании даже простого скрипта на BASH последнее время, особенно после того, как всё можно раскрасить для WEB в HTML с помощью CSS, хочется получить, если не картинки в консоли, то хотя бы вывод разными цветами. И это вполне реально! В BASH для управления цветом вывода существуют коды, позволяющие менять не только цвет выводимого текста, но также его начертание (жирный, подчёркнутый, полу-яркий). А ещё можно задать фон выводимому тексту! В общем, можно так раскрасить вывод BASH-скрипта, то любой, кто его запустит, сломает себе глаза об монитор. О том, как работать с цветами см. в статье «Цветной вывод текста командой echo в Bash» =)



Ниже привожу полный код подключаемого файла, который назначает разным переменным переключение на различные цвета:

#!/bin/sh
# https://mb4.ru/programming/bash/853-colors-for-bash.html

clear    # Очистка экрана

#Памятка, Таблица цветов и фонов
#Цвет		код			код фона

#black		30	40	\033[30m	\033[40m
#red		31	41	\033[31m	\033[41m
#green		32	42	\033[32m	\033[42m
#yellow		33	43	\033[33m	\033[43m
#blue		34	44	\033[34m	\033[44m
#magenta	35	45	\033[35m	\033[45m
#cyan		36	46	\033[36m	\033[46m
#white		37	47	\033[37m	\033[47m

# Дополнительные свойства для текта:
BOLD='\033[1m'			#	${BOLD}			# жирный шрифт (интенсивный цвет)
DBOLD='\033[2m'			#	${DBOLD}		# полу яркий цвет (тёмно-серый, независимо от цвета)
NBOLD='\033[22m'		#	${NBOLD}		# установить нормальную интенсивность
UNDERLINE='\033[4m'		#	${UNDERLINE}	# подчеркивание
NUNDERLINE='\033[4m'	#	${NUNDERLINE}	# отменить подчеркивание
BLINK='\033[5m'			#	${BLINK}		# мигающий
NBLINK='\033[0m'		#	${NBLINK}		# отменить мигание
INVERSE='\033[7m'		#	${INVERSE}		# реверсия (знаки приобретают цвет фона, а фон -- цвет знаков)
NINVERSE='\033[7m'		#	${NINVERSE}		# отменить реверсию
BREAK='\033[m'			#	${BREAK}		# все атрибуты по умолчанию
NORMAL='\033[0m'		#	${NORMAL}		# все атрибуты по умолчанию

# Цвет текста:
BLACK='\033[30m'		#	${BLACK}		# чёрный цвет знаков
RED='\033[31m'			#	${RED}			# красный цвет знаков
GREEN='\033[32m'		#	${GREEN}		# зелёный цвет знаков
YELLOW='\033[33m'		#	${YELLOW}		# желтый цвет знаков
BLUE='\033[34m'			#	${BLUE}			# синий цвет знаков
MAGENTA='\033[35m'		#	${MAGENTA}		# фиолетовый цвет знаков
CYAN='\033[36m'			#	${CYAN}			# цвет морской волны знаков
GRAY='\033[37m'			#	${GRAY}			# серый цвет знаков

# Цветом текста (жирным) (bold) :
DEF='\033[39m'			#	${DEF}
DGRAY='\033[1;30m'		#	${DGRAY}
LRED='\033[1;31m'		#	${LRED}
LGREEN='\033[1;32m'		#	${LGREEN}
LYELLOW='\033[1;33m'	#	${LYELLOW}
LBLUE='\033[1;34m'		#	${LBLUE}
LMAGENTA='\033[1;35m'	#	${LMAGENTA}
LCYAN='\033[1;36m'		#	${LCYAN}
WHITE='\033[1;37m'		#	${WHITE}

# Цвет фона
BGBLACK='\033[40m'		#	${BGBLACK}
BGRED='\033[41m'		#	${BGRED}
BGGREEN='\033[42m'		#	${BGGREEN}
BGBROWN='\033[43m'		#	${BGBROWN}
BGBLUE='\033[44m'		#	${BGBLUE}
BGMAGENTA='\033[45m'	#	${BGMAGENTA}
BGCYAN='\033[46m'		#	${BGCYAN}
BGGRAY='\033[47m'		#	${BGGRAY}
BGDEF='\033[49m'		#	${BGDEF}

tput sgr0				# Возврат цвета в "нормальное" состояние

Для подключение этого скрипта нужно пользоваться директивой source (иначе значения переменных с цветами не будут переданы в вызывающий скрипт, а так и останутся в локальной зоне видимости этого скрипта). Пример подключения:

source ./lib/colors.sh

Ну и пример использования (вызов переменной, относящейся к требуемому цвету):

echo -e "${BGRED}${BLACK}Всем привет!${NORMAL}${RED}: ${GREEN}Проверка связи =)${NORMAL}"

Для того, чтобы привести вывод в "нормальное" цветовое состояние, используйте вывод значения переменной ${NORMAL}.

Видео о том, как раскрасить BASH. Коды цветов шрифта и цвета фона для BASH скриптов.

Спасибо YAAP с Хабра-Хабра:
https://habr.com/ru/post/119436/

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Войдите чтобы комментировать

Обсудить эту статью

INFO: Вы отправляете сообщение как 'Гость'