Елхичка в командния ред

Скоро е Нова Година, вече не искам да мисля за сериозен труд.

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

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

Елхичка в командния ред

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

Елхичка в командния ред

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

Елхичка в командния ред

Разбира се, на вкус и цвет всички фломастери са различни. Ако подобно оцветяване ви се струва натрапчиво и неуместно, знайте, че това мнение има пълното право на съществуване. А ако и вие искате да добавите малко новогодишно настроение, продължавайте да четете малка новогодишна статия от 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
→ Пентестерите на предна линия на киберсигурността
→ Стартапи, способни да изненадат
→ Нужни ли са подложки в ЦОД?
→ Къщата, която построи робот

Абонирайте се за нашия Телеграм-канал, за да не пропуснете следващата статия! Публикуваме не по-често от два пъти седмично и само по същество. Също така напомняме, че корпоративният облачен провайдер Cloud4Y стартира промоция „Облак ФЗ-152 на цена на обикновен“. Можете да подадете заявка до 31 декември.

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

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