Дървото в командния ред

Скоро е Нова година и почти никой не иска да мисли за работа.

Все се опитват да украсат нещо за празника: дом, офис, работно място… Нека и ние украсим нещо! Например, командния ред. В известен смисъл, командният ред също е работно място.

В някои дистрибуции той вече е "украсен":

Дървото в командния ред

В други – е сив и незабележим:

Дървото в командния ред

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

Дървото в командния ред

Разбира се, вкусовете са различни. Ако подобна украса ви изглежда нелепа и неуместна, имайте предвид, че това е напълно валидно мнение. А ако и вие желаете да добавите малко новогодишно настроение, продължете да четете кратката новогодишна статия от Cloud4Y.

Първо, нека обясня как "се украсява" изходът на терминала. Това става с помощта на escape последователности. По-точно – управляващи кодови последователности от терминал ANSI/VT100. Което автоматично означава, че вашият терминален емулатор трябва да поддържа този стандарт, в противен случай новогодишното чудо няма да се случи. И да, предполагам, че $SHELL е bash.

Тези команди се наричат escape последователности, защото в началото на всяка от тях стои ASCII символ "escape". Има много управляващи последователности, те позволяват, например, да извеждате настройки на терминала, да управлявате показването и движението на курсора, да променяте шрифта, да изтривате и скривате текст. Ние от цялото разнообразие възможности ще изберем едно – промяна на цвета на текста и фона.

Изпълняваме кодовата последователност *ESC*[{attr1};...;{attrn}m
Като символ Escape се използва осемнадесетичната му форма, тоест 33. По отношение на атрибутите, ето кратък списък с възможните стойности:

0 Нулиране на всички атрибути
1 Ярък (повишена яркост)
2 Затъмнен (намалена яркост)
4 Долно подчертаване
5 Мигащ
7 Инверсия
8 Скрит текст

Цветове на преден план (цветът на писеца, с който се извежда текстът):
30 Черен
31 Червен
32 Зелен
33 Жълт
34 Син
35 Магента
36 Циан
37 Бял

Цветове на фон (цветът на хартията или цвета на фона):
40 Черен
41 Червен
42 Зелен
43 Жълт
44 Син
45 Магента
46 Циан
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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster