Krystbeam op 'e kommandorigel

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

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

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

Krystbeam op 'e kommandorigel

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

Krystbeam op 'e kommandorigel

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

Krystbeam op 'e kommandorigel

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

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

Krystbeam op 'e kommandorigel

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

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

Krystbeam op 'e kommandorigel

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

Это делается через изменение переменной 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). Дерзайте! И спасибо за внимание.

Krystbeam op 'e kommandorigel

Wat kinne jo mear lêze op it blog? Wolk4Y

Top ynstelle yn GNU/Linux
Pentesters oan 'e foargrûn fan cybersecurity
Startups dy't kinne ferrasse
Binne kessens nedich yn in datasintrum?
It hûs dat in robot boude

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

Boarne: www.habr.com

Add a comment