Читаем Командная строка Linux. Полное руководство полностью

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

Чтобы заставить терминалы говорить на едином языке, Американский национальный институт стандартов (American National Standards Institute, ANSI) разработал набор последовательностей символов для управления видеотерминалами. Заслуженные пользователи DOS еще помнят файл ANSI.SYS, который применялся для интерпретации этих последовательностей.

Цветом символов можно управлять, посылая эмулятору терминала экранированные последовательности 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

Белый

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

$ PS1="\[\033[0;31m\]<\u@\h \W>\$ "

$

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

$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "

$

Так лучше!

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

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

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

$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "

$

Перейти на страницу:

Похожие книги

Компьютерные сети. 6-е изд.
Компьютерные сети. 6-е изд.

Перед вами шестое издание самой авторитетной книги по современным сетевым технологиям, написанное признанным экспертом Эндрю Таненбаумом в соавторстве со специалистом компании Google Дэвидом Уэзероллом и профессором Чикагского университета Ником Фимстером. Первая версия этого классического труда появилась на свет в далеком 1980 году, и с тех пор каждое издание книги неизменно становилось бестселлером. В книге последовательно изложены основные концепции, определяющие современное состояние компьютерных сетей и тенденции их развития. Авторы подробно объясняют устройство и принципы работы аппаратного и программного обеспечения, рассматривают все аспекты и уровни организации сетей — от физического до прикладного. Изложение теоретических принципов дополняется яркими, показательными примерами функционирования интернета и компьютерных сетей различного типа. Большое внимание уделяется сетевой безопасности. Шестое издание полностью переработано с учетом изменений, произошедших в сфере сетевых технологий за последние годы, и, в частности, освещает такие технологии, как DOCSIS, 4G и 5G, беспроводные сети стандарта 802.11ax, 100-гигабитные сети Ethernet, интернет вещей, современные транспортные протоколы CUBIC TCP, QUIC и BBR, программно-конфигурируемые сети и многое другое.

Дэвид Уэзеролл , Ник Фимстер , Эндрю Таненбаум

Учебные пособия, самоучители