Ялинка в командному рядку

Скоро Новий Рік думати про серйозну роботу вже не хочеться.

Усі намагаються щось прикрасити до свята: будинок, офіс, робоче місце… Давайте і ми щось прикрасимо! Наприклад, запрошення командного рядка. Якоюсь мірою командний рядок теж робоче місце.

У деяких дистрибутивах вона вже «прикрашена»:

Ялинка в командному рядку

В інших – вона сіра та непомітна:

Ялинка в командному рядку

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

Ялинка в командному рядку

Звичайно, на смак та колір усі фломастери різні. Якщо подібне забарвлення здається вам недоладним і недоречним, то знайте, що дана думка має повне право на життя. А якщо вам теж хочеться додати трохи новорічного настрою, читайте невелику новорічну статтю від Cloud4Y.

Спочатку поясню, як «розфарбовується» висновок терміналу. Робиться це за допомогою escape-послідовностей. А якщо точніше – керуючих кодових послідовностей терміналу ANSI/VT100. Що автоматично означає, що ваш емулятор терміналу повинен цей стандарт підтримувати, інакше новорічного дива не станеться. І так, передбачається, що $SHELL у вас bash.

Escape-послідовностями ці команди називають з тієї причини, що на початку кожної з них йде ASCII-символ "escape". Керуючих послідовностей багато, і вони дозволяють, наприклад, виводити налаштування терміналу, керувати відображенням та переміщенням курсору, змінювати шрифт, видаляти та приховувати текст. Ми з усього розмаїття можливостей виберемо одну – зміна кольору тексту і фону.

Виконуємо кодову послідовність *ESC*[{attr1};...;{attrn}m
Як символ Бігти використовується його вісімкова форма, тобто 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 Білий (білий)

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

Зверніть увагу, якщо тепер ви скомандуєте у терміналі: 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

Додати коментар або відгук