Практическое написание сценариев командной оболочки Bash/Приложения: различия между версиями
Нет описания правки |
|||
Строка 32: | Строка 32: | ||
\e[36m # Голубой цвет для символа |
\e[36m # Голубой цвет для символа |
||
\e[37m # Серый цвет для символа |
\e[37m # Серый цвет для символа |
||
\e[39m # Сбросить цвет символа к значению по умолчанию |
|||
\e[40m # Черный фон для литеры |
\e[40m # Черный фон для литеры |
||
\e[41m # Красный фон для литеры |
\e[41m # Красный фон для литеры |
||
Строка 40: | Строка 41: | ||
\e[46m # Голубой фон для литеры |
\e[46m # Голубой фон для литеры |
||
\e[47m # Серый фон для литеры |
\e[47m # Серый фон для литеры |
||
\e[49m # Сбросить фон литеры к значению по умолчанию |
|||
</source> |
</source> |
||
С полным списком управляющих последовательностей ANSI вы можете познакомиться на [[w:Управляющие последовательности ANSI|следующей странице]]. |
|||
Вы можете в любой момент поэкспериментировать с управляющими последовательностями, например так |
Вы можете в любой момент поэкспериментировать с управляющими последовательностями, например так |
||
<source lang=bash> |
<source lang=bash> |
Версия от 06:53, 14 октября 2021
← Код-сниппеты | Глава | |
Приложения | ||
Получение цветовой схемы терминала
В некоторых примерах книги мы использовали специальные управляющие последовательности, которые подкрашивали вывод. Эти управляющие последовательности используют следующий принцип:
\e[##m
где вместо ## нужно подставить определенные коды, отвечающие за отображение.
Символ \e начинает любую управляющую последовательность и называется Escape-символом. Вместо \e допустимо записывать \033, т.е.
\033[##m
однако так запись кажется не такой опрятной.
Следующие коды отвечают за отображение любого текста, следующего за ними:
\e[0m # Сброс отображения к значению по умолчанию
\e[1m # Полужирное начертание
\e[2m # Приглушенный цвет
\e[4m # Яркий цвет
\e[5m # Мигание
\e[7m # Инвертирует фон литеры с ее цветом, например белый цвет на черном фоне инвертируется в черный цвет на белом фоне
\e[22m # Установить нормальную интенсивность
\e[24m # Убрать подчеркивание
\e[25m # Убрать мигание
\e[27m # Отменить реверсивное начертание
\e[30m # Черный цвет для символа
\e[31m # Красный цвет для символа
\e[32m # Зеленый цвет для символа
\e[33m # Желтый цвет для символа
\e[34m # Синий цвет для символа
\e[35m # Фиолетовый цвет для символа
\e[36m # Голубой цвет для символа
\e[37m # Серый цвет для символа
\e[39m # Сбросить цвет символа к значению по умолчанию
\e[40m # Черный фон для литеры
\e[41m # Красный фон для литеры
\e[42m # Зеленый фон для литеры
\e[43m # Желтый фон для литеры
\e[44m # Синий фон для литеры
\e[45m # Фиолетовый фон для литеры
\e[46m # Голубой фон для литеры
\e[47m # Серый фон для литеры
\e[49m # Сбросить фон литеры к значению по умолчанию
С полным списком управляющих последовательностей ANSI вы можете познакомиться на следующей странице.
Вы можете в любой момент поэкспериментировать с управляющими последовательностями, например так
echo -e "\e[7mTest text\e[0m Text after"
# Выведет Test text с инверсией цветов (черный на белом)
# За один раз можно использовать несколько последовательностей
echo -e "\e[7m\e[36mTest text\e[0m Text after"
# Выведет Test text с инверсией цветов (черный на голубом)
Вы можете обойтись одним Escape-символом, если будете перечислять коды через точку с запятой. Коды будут применяться именно в том порядке, в котором следуют.
echo -e "\e[33;42;1mTest text\e[0m Text after"
# Выведет полужирный (1) желтый цвет (33) на зеленом фоне (42).
Некоторые коды номинально существуют, но могут не поддерживаться конкретно в вашем терминале. Для тестирования управляющих последовательностей, отвечающих за отображение, мы рекомендуем использовать следующий проверочный цикл.
echo
for x in 0 1 4 5 7 8; do
for i in $(seq 30 37); do
for a in $(seq 40 47); do
echo -ne "\e[$x;$i;$a""m\\\e[$x;$i;$a""m\e[0;37;40m "
done; echo
done
done
echo
Современные эмуляторы терминала гораздо продвинутые в плане отображения цветов. В большинстве случаев они поддерживают специальные четырехзначные коды:
\e[0;48;5;NNNm # для инвертированного цвета
\e[0;38;5;NNNm # для нормального цвета
# где вместо NNN нужно использовать код от 0 до 255. Например, \e[0;48;5;16m это инверсия (белый на черном).
# Сброс осуществляется все тем же \e[0m.
Благодаря такому большому диапазону кодов, достигается большое количество цветовых оттенков. Проверочный код для расширенного набора цветов представлен ниже.
echo
for i in $(seq 0 255); do
printf "\e[0;48;5;${i}m %03d\e[0;38;5;${i}m %03d " $i $i
[[ $i -eq 7 || $i -eq 15 || $i -eq 231 || $i -eq 239 || $i -eq 247 ]] && echo
[[ $i -ge 15 && $i -le 231 && $(( ($i - 15) % 6 )) -eq 0 ]] && echo
done
echo
← Код-сниппеты |