Ёлачка ў камандным радку

Хутка Новы Год, думаць аб сур'ёзнай працы ўжо не жадаецца.

Усё імкнуцца што-небудзь упрыгожыць да свята: хата, офіс, працоўнае месца… Давайце і мы што-небудзь упрыгожым! Напрыклад, запрашэнне каманднага радка. У нейкай меры камандны радок - таксама працоўнае месца.

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

Ёлачка ў камандным радку

У іншых - яна шэрая і непрыкметная:

Ёлачка ў камандным радку

А мы можам зрабіць, напрыклад, вось так:

Ёлачка ў камандным радку

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

Дадаць каментар