Практическое написание сценариев командной оболочки Bash/Приложения: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 50:
# Выведет Test text с инверсией цветов (черный на голубом)
</source>
Вы можете обойтись одним Escape-символом, если будете перечислять коды через точку с запятой. Коды будут применяться именно в том порядке, в котором следуют.
<source lang=bash>
echo -e "\e[33;42;1mTest text\e[0m Text after"
# Выведет полужирный (1) желтый цвет (33) на зеленом фоне (42).
</source>
Некоторые коды номинально существуют, но могут не поддерживаться конкретно в вашем терминале. Для тестирования управляющих последовательностей, отвечающих за отображение, мы рекомендуем использовать следующий проверочный цикл.
<source lang=bash>
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
</source>
Современные эмуляторы терминала гораздо продвинутые в плане отображения цветов. В большинстве случае они поддерживают специальные четырехзначные коды:
<source lang=bash>
\e[0;48;5;NNNm # для инвертированного цвета
\e[0;38;5;NNNm # для нормального цвета
 
# где вместо NNN нужно использовать код от 0 до 255. Например, \e[0;48;5;16m это инверсия (белый на черном).
 
# Сброс осуществляется все тем же \e[0m.
</source>
Благодаря такому большому диапазону кодов, достигается большое количество цветовых оттенков. Проверочный код для расширенного набора цветов представлен ниже.
<source lang=bash>
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
</source>
{{Нижняя автоматическая навигация|next=|prev=Код-сниппеты}}