Шрифт:
Зеленый
\033[0;33m
Коричневый
\033[0;34m
Синий
\033[0;35m
Пурпурный
\033[0;36m
Бирюзовый
\033[0;37m
Светло-серый
\033[1;30m
Темно-серый
\033[1;31m
Светло-красный
\033[1;32m
Светло-зеленый
\033[1;33m
Желтый
\033[1;34m
Светло-синий
\033[1;35m
Светло-пурпурный
\033[1;36m
Светло-бирюзовый
\033[1;37m
Белый
Давайте попробуем окрасить строку приглашения в красный цвет (здесь она выглядит как серая). Добавьте в начало экранированную последовательность:
<me@linuxbox ~>$ PS1="\[\033[0;31m\]<\u@\h \W>\$ "
<me@linuxbox ~>$
Получилось, но обратите внимание, что весь текст, который вводится с клавиатуры вслед за строкой приглашения, также окрашивается в красный цвет. Для устранения этого эффекта добавьте еще одну экранированную последовательность в конец определения приглашения — этим вы сообщите эмулятору терминала, что тот должен восстановить нормальный цвет:
<me@linuxbox ~>$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "
<me@linuxbox ~>$
Так лучше!
Кроме того, существует возможность изменить цвет фона, для чего предназначены экранированные последовательности, перечисленные в табл. 13.3. Цвет фона не поддерживает атрибут жирного текста.
Таблица 13.3. Экранированные последовательности, используемые для определения цвета фона
Последовательность
Цвет
\033[0;40m
Черный
\033[0;41m
Красный
\033[0;42m
Зеленый
\033[0;43m
Коричневый
\033[0;44m
Синий
\033[0;45m
Пурпурный
\033[0;46m
Бирюзовый
\033[0;47m
Светло-серый
Чтобы вывести приглашение на красном фоне, достаточно изменить первую экранированную последовательность:
<me@linuxbox ~>$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "
<me@linuxbox ~>$
Попробуйте другие цвета и посмотрите, что из этого получится!
ПРИМЕЧАНИЕ
Помимо атрибутов символов нормального (0) и жирного (1) текста, есть также атрибут подчеркивания (4), мигания (5) и инверсии (7). В целях воспитания хорошего вкуса многие эмуляторы терминалов не поддерживают атрибут мигания.
Перемещение курсора
Экранированные последовательности можно использовать для позиционирования курсора. Этот прием часто используется для отображения времени или другой информации в разных местах на экране, например вверху, при каждом выводе приглашения к вводу. В табл. 13.4 перечислены экранированные последовательности, управляющие позицией курсора.
Таблица 13.4. Экранированные последовательности, управляющие позицией курсора
Последовательность
Действие
\033[l;cH
Перемещает курсор в строку l и позицию c
\033[nA
Перемещает курсор вверх на n строк
\033[nB
Перемещает курсор вниз на n строк
\033[nC
Перемещает курсор вперед на n символов
\033[nD
Перемещает курсор назад на n символов
\033[2J
Очищает экран и помещает курсор в левый верхний угол (строка 0, позиция 0)
\033[K
Очищает экран от позиции курсора до конца текущей строки
\033[s
Сохраняет текущую позицию курсора
\033[u
Восстанавливает сохраненную позицию курсора
Используя эти коды, можно сконструировать строку приглашения, рисующую красный прямоугольник с часами в верхней части экрана (время отображается желтым цветом). Код, определяющий строку приглашения, на этот раз выглядит немного устрашающе:
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\u@\h \W>\$ "
В табл. 13.5 приведены отдельные части этого определения, они помогут понять, как это работает.
Таблица 13.5. Экранированные последовательности, управляющие позицией курсора