Командная строка Linux - Шоттс Уильям Страница 38

Тут можно читать бесплатно Командная строка Linux - Шоттс Уильям. Жанр: Компьютеры и Интернет / Интернет. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте Knigogid (Книгогид) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.

Командная строка Linux - Шоттс Уильям читать онлайн бесплатно

Командная строка Linux - Шоттс Уильям - читать книгу онлайн бесплатно, автор Шоттс Уильям

Цветом символов можно управлять, посылая эмулятору терминала экранированные последовательности ANSI внутри потока символов, предназначенных для вывода на экран. Экранированные последовательности не «выводятся» на экран; они интерпретируются терминалом как инструкции. Как показано в табл. 13.1, для включения непечатаемых символов используются последовательности \[ и \]. Экранированные последовательности ANSI начинаются с восьмеричного кода 033 (код, генерируемый клавишей ESC), за которым следует необязательный атрибут символа и инструкция. Например, вот как выглядит код, определяющий текст как простой (атрибут = 0), черного цвета \033[0;30m.

В табл. 13.2 перечислены поддерживаемые цвета текста. Обратите внимание, что цвета делятся на две группы, отличаясь наличием атрибута жирного текста (1), из-за которого возникает впечатление более «светлых» (light) цветов.

Таблица 13.2. Экранированные последовательности, используемые для определения цвета текста

Последовательность

Цвет

\033[0;30m

Черный

\033[0;31m

Красный

\033[0;32m

Зеленый

\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

Белый

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

<[email protected] ~>$ PS1="\[\033[0;31m\]<\[email protected]\h \W>\$ "

<[email protected] ~>$

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

<[email protected] ~>$ PS1="\[\033[0;31m\]<\[email protected]\h \W>\$\[\033[0m\] "

<[email protected] ~>$

Так лучше!

Кроме того, существует возможность изменить цвет фона, для чего предназначены экранированные последовательности, перечисленные в табл. 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

Светло-серый

Чтобы вывести приглашение на красном фоне, достаточно изменить первую экранированную последовательность:

<[email protected] ~>$ PS1="\[\033[0;41m\]<\[email protected]\h \W>\$\[\033[0m\] "

<[email protected] ~>$

Попробуйте другие цвета и посмотрите, что из этого получится!

ПРИМЕЧАНИЕ

Помимо атрибутов символов нормального (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\]<\[email protected]\h \W>\$ "

В табл. 13.5 приведены отдельные части этого определения, они помогут понять, как это работает.

Таблица 13.5. Экранированные последовательности, управляющие позицией курсора

Последовательность

Действие

\[

Начинает последовательность непечатаемых символов. Истин­ное назначение этой последовательности — позволить bash правильно вычислить длину строки приглашения на экране. Без этого функция редактирования командной строки неправильно позиционировала бы курсор

\033[s

Сохраняет позицию курсора. Это необходимо, чтобы вернуться в местоположение строки приглашения после вывода прямо­угольника с часами в верхней части экрана. Будьте внимательны: некоторые эмуляторы терминалов не поддерживают эту последовательность

\033[0;0H

Перемещает курсор в левый верхний угол, в строку 0, позицию 0

\033[0;41m

Устанавливает красный цвет фона

\033[K

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

\033[1;33m

Устанавливает желтый цвет текста

\t

Выводит текущее время. Хотя это «печатаемый» элемент, он находится в непечатаемом блоке строки приглашения, потому что нам не нужно, чтобы командная оболочка bash учитывала размер часов при расчете истинного размера отображаемой строки приглашения

\033[0m

Выключает цвет. Сбрасывает настройки цвета для текста и фона

\033[u

Восстанавливает позицию курсора, сохраненную ранее

\]

Завершает последовательность непечатаемых символов

<\[email protected]\h \W>\$

Строка приглашения

Сохранение определения приглашения

Я думаю, что мало у кого возникло желание вводить это монструозное определение каждый раз, поэтому нам нужно где-то сохранить строку приглашения. Сохранить определение можно в файле .bashrc. Для этого добавьте следующие две строки в файл:

PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\[email protected]\h \W>\$ "

export PS1

Заключительное замечание

Хотите — верьте, хотите — нет, но со строкой приглашения можно творить чудеса, задействовав функции и сценарии, которые мы пока не рассматривали. Все, что было описано выше, — хорошее начало. Не все захотят возиться с изменением приглашения к вводу, оформление по умолчанию тоже выглядит неплохо. Но тем из вас, кому нравится копаться в мелочах, командная оболочка предоставляет возможность творчески провести несколько часов.

Часть III. Типичные задачи и основные инструменты

14. Управление пакетами

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.