Ёлочка в командной строке

Скоро Новый Год, думать о серьёзной работе уже не хочется.

Все стараются что-нибудь украсить к празднику: дом, офис, рабочее место… Давайте и мы что-нибудь украсим! Например, приглашение командной строки. В какой-то мере командная строка – тоже рабочее место.

В некоторых дистрибутивах она уже «украшена»:

Ёлочка в командной строке

В других – она серая и неприметная:

Ёлочка в командной строке

А мы можем сделать, например, вот так:

Ёлочка в командной строке

Конечно, на вкус и цвет все фломастеры разные. Если подобная раскраска кажется вам аляповатой и неуместной, то знайте, что данная точка зрения имеет полное право на жизнь. А если вам тоже хочется добавить немного новогоднего настроения, читайте далее небольшую новогоднюю статью от Cloud4Y.

Для начала поясню, как «раскрашивается» вывод терминала. Делается это при помощи escape-последовательностей. А если точнее – управляющих кодовых последовательностей терминала ANSI/VT100. Что автоматически означает, что ваш эмулятор терминала должен этот стандарт поддерживать, иначе новогоднего чуда не случится. И да, предполагается, что $SHELL у вас bash.

Escape-последовательностями эти команды называют по той причине, что в начале каждой из них идёт ASCII-символ «escape». Управляющих последовательностей много, и они позволяют, к примеру, выводить настройки терминала, управлять отображением и перемещением курсора, изменять шрифт, удалять и скрывать текст. Мы же из всего разнообразия возможностей выберем одну – изменение цвета текста и фона.

Выполняем кодовую последовательность *ESC*[{attr1};...;{attrn}m
В качестве символа Escape используется его восьмеричная форма, то есть 33. Что касается атрибутов, то вот краткий перечень возможных значений:

0 Сбросить все атрибуты
1 Bright (повышенная яркость)
2 Dim (затемнение)
4 Underscore (нижнее подчеркивание)
5 Blink (мигание)
7 Reverse (инверсия)
8 Hidden (скрыть текст)

Foreground Colours (цвет пера, этим цветом выводится текст):
30 Black (черный)
31 Red (красный)
32 Green (зеленый)
33 Yellow (желтый)
34 Blue (синий)
35 Magenta (пурпурный)
36 Cyan (голубой)
37 White (белый)

Background Colours (цвет бумаги, или цвет фона):
40 Black (черный)
41 Red (красный)
42 Green (зеленый)
43 Yellow (желтый)
44 Blue (синий)
45 Magenta (пурпурный)
46 Cyan (голубой)
47 White (белый)

Обратите внимание, если теперь вы скомандуете в терминале: echo 33[0;31mнекоторый текст 33[0m’

… то предсказуемо получите на выходе монохромную абракадабру:

Ёлочка в командной строке

Почему? Потому, что надо было задействовать расширенные возможности команды echo. Достаточно добавить один ключик: echo -e ‘ 33[0;31mнекоторый текст 33[0m’

Теперь вывод будет выглядеть правильно:

Ёлочка в командной строке

С раскраской вывода на терминал разобрались. Теперь давайте посмотрим, как раскрасить приглашение командной строки.

Это делается через изменение переменной PS1. Переменная отвечает за приглашение командной строки. Её внешний вид также можно изменять, в том числе при помощи escape-последовательностей. Но есть небольшое отличие: начинать последовательность нужно символом “[”, а завершать символом “]”, иначе она будет выведена на терминал.

Все возможные командные последовательности подробно изложено в мануале по bash, так что я предлагаю читателям самостоятельно выбрать, что им больше нравится наблюдать в приглашении командной строки. В качестве примера приведу своё значение переменной PS1:

[ 33[34;1m]t[ 33[0m],[ 33[32m]u@l@h[ 33[0m]:[ 33[33m]W[ 33[0m],[ 33
[31m]![ 33[0m]$n

Расшифрую это страшное заклинание:

[ 33[34;1m] — включаем ярко-синий (второй атрибут) цвет шрифта
t – выводим текущее время в формате ЧЧ: ММ: СС
[ 33[0m] – сброс настроек цвета шрифта
, — просто запятая (неожиданно, правда?)
[ 33[32m] — включаем зелёный цвет шрифта
u@l@h – выводим имя пользователя, номер терминального устройства и краткое имя хоста, разделяя символом “@”
[ 33[0m] — снова сбрасываем настройки цвета шрифта
: — просто двоеточие (внезапно!)
[ 33[33m] — включаем жёлтый цвет шрифта
W – выводим имя текущего каталога
[ 33[0m] — опять сбрасываем настройки цвета шрифта
, — ещё одна запятая (кто бы мог подумать!)
[ 33[31m] — включаем красный цвет шрифта
! — выводим номер команды в терминале
[ 33[0m] — не забываем сбросить настройки цвета шрифта
$ — выводим “#” для root и “$” для всех остальных
n – перевод строки. Зачем? Чтобы команда начиналась с левого края окна, а не с позиции конца приглашения командной строки.

Где переопределить переменную? Логичнее всего это сделать в ~/.bashrc.

Внешний вид приглашения ограничен только вашей фантазией. В принципе, вам ничто не мешает с помощью вышеописанного инструментария сделать приглашение командной строки в виде новогодней ёлочки. Правда, такое приглашение будет очень громоздким, и удобнее работа точно не станет. Ёлочку можно просто выводить над приглашением командной строки при входе в систему (всё равно нам нужно редактировать ~/.bashrc). Дерзайте! И спасибо за внимание.

Ёлочка в командной строке

Что ещё полезного можно почитать в блоге Cloud4Y

Настраиваем top в GNU/Linux
Пентестеры на передовой кибербезопасности
Стартапы, способные удивить
Нужны ли в ЦОД подушки?
Дом, который построил робот

Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью! Пишем не чаще двух раз в неделю и только по делу. Также напоминаем, что корпоративный облачный провайдер Cloud4Y запустил акцию «Облако ФЗ-152 по цене обычного». Подать заявку можно до 31 декабря.

Источник: habr.com

Добавить комментарий