Nový rok se blíží, už se nám nechce myslet na vážnou práci.
Všichni se snaží něco na svátky ozdobit: dům, kancelář, pracovní místo… Pojďme i my něco ozdobit! Například pozvánku v příkazovém řádku. V určitých ohledech je příkazový řádek také pracovní místo.
V některých distribucích je už "ozdobená":

V jiných je šedá a nenápadná:

A my to můžeme udělat například takto:

Samozřejmě, každý má jiný vkus. Pokud vám tato výzdoba připadá nevhodná a okatá, vězte, že tento názor má plné právo na existenci. A pokud i vy chcete přidat trochu vánoční atmosféry, čtěte dále malý vánoční článek od Cloud4Y.
Nejprve vysvětlím, jak se "zdobí" výstup terminálu. Dělá se to pomocí escape sekvencí. A přesněji – pomocí řídicích kódových sekvencí terminálu ANSI/VT100. To automaticky znamená, že váš terminálový emulator by měl tuto normu podporovat, jinak vánoční zázrak nenastane. A ano, předpokládá se, že $SHELL máte bash.
Tyto příkazy se nazývají escape sekvencemi, protože na začátku každého z nich je ASCII znak "escape". Existuje mnoho řídicích sekvencí, které například umožňují vypisovat nastavení terminálu, řídit zobrazení a pohyb kurzoru, měnit písmo, mazat a skrývat text. My si z celého rozmanitého spektra možností vybereme jednu – změnu barvy textu a pozadí.
Provádíme kódovou sekvenci *ESC*[{attr1};...;{attrn}m
Jako znak Escape se používá jeho osmičková forma, tedy 33. Co se týče atributů, tady je stručný seznam možných hodnot:
0 Resetovat všechny atributy
1 Bright (zvýšená jasnost)
2 Dim (ztlumení)
4 Underscore (dolní podtržení)
5 Blink (blikat)
7 Reverse (inverze)
8 Hidden (skrýt text)
Foreground Colours (barva pera, tímto barvou se vypisuje text):
30 Black (černá)
31 Red (červená)
32 Green (zelená)
33 Yellow (žlutá)
34 Blue (modrá)
35 Magenta (purpurová)
36 Cyan (azurová)
37 White (bílá)
Background Colours (barva papíru, nebo barva pozadí):
40 Black (černá)
41 Red (červená)
42 Green (zelená)
43 Yellow (žlutá)
44 Blue (modrá)
45 Magenta (purpurová)
46 Cyan (azurová)
47 White (bílá)
Všimněte si, pokud nyní v terminálu zadáte: echo 33[0;31mnějaký text 33[0m’
… pak logicky dostanete na výstupu monochromatickou nesmysl:

Proč? Protože bylo třeba využít rozšířené možnosti příkazu echo. Stačí přidat jeden klíč: echo -e ' 33[0;31mnějaký text 33[0m'
Nyní bude výstup vypadat správně:
![]()
S barevným výstupem na terminálu jsme se naučili. Teď se podívejme, jak obarvit výzvu příkazového řádku.
To se dělá změnou proměnné PS1. Tato proměnná se stará o výzvu příkazového řádku. Její vzhled lze také měnit, včetně pomocí escape sekvencí. Existuje ale malé rozdíl: sekvenci je třeba začít znakem “[”, a ukončit znakem “]”, jinak se vytiskne na terminál.
Všechny možné sekvence příkazů jsou podrobně popsány v manuálu pro bash, takže navrhuji čtenářům, aby si sami vybrali, co rádi vidí v příkazovém řádku. Jako příklad uvedu svou hodnotu proměnné PS1:
[ 33[34;1m]t[ 33[0m],[ 33[32m]u@l@h[ 33[0m]:[ 33[33m]W[ 33[0m],[ 33
[31m]![ 33[0m]$n
Rozluštím toto hrůzné zaklínadlo:
[ 33[34;1m] — zapínáme jasně modrou (druhý atribut) barvu písma
t – vypisujeme aktuální čas ve formátu HH:MM:SS
[ 33[0m] – resetujeme nastavení barvy písma
, — jen čárka (překvapivě, že?)
[ 33[32m] — zapínáme zelenou barvu písma
u@l@h – vypisujeme jméno uživatele, číslo terminálového zařízení a krátké jméno hostitele, oddělené znakem “@”
[ 33[0m] — znovu resetujeme nastavení barvy písma
: — prostě dvojtečka (náhle!)
[ 33[33m] — zapínáme žlutou barvu písma
W – vypisujeme název aktuálního adresáře
[ 33[0m] — znovu resetujeme nastavení barvy písma
, — ještě jedna čárka (kdo by to řekl!)
[ 33[31m] — zapínáme červenou barvu písma
! — vypisujeme číslo příkazu v terminálu
[ 33[0m] — nezapomínejme resetovat nastavení barvy písma
$ — vypisujeme “#” pro root a “$” pro ostatní
n – nový řádek. Proč? Aby příkaz začínal z levého okraje okna, a ne z pozice konce výzvy příkazového řádku.
Kde předefinovat proměnnou? Nejlogičtější je to udělat v ~/.bashrc.
Vzhled pozvánky je omezen jen vaší fantazií. V podstatě vám nic nebrání použít výše popsané nástroje k vytvoření pozvánky příkazového řádku ve tvaru vánočního stromku. Pravda, taková pozvánka bude velmi objemná a práce rozhodně nebude pohodlnější. Stromek lze jednoduše zobrazit nad pozvánkou příkazového řádku při přihlášení do systému (stejně musíme upravit ~/.bashrc). Tak směle do toho! A děkujeme za pozornost.

Co dalšího si můžete přečíst v blogu
→
→
→
→
→
Sledujte náš -kanál, abyste nepropásli další článek! Píšeme maximálně dvakrát týdně a jen k věci. Také připomínáme, že korporátní cloudový poskytovatel Cloud4Y spustil akci „Oblak FZ-152 za cenu běžného“. Přihlášku lze podat .
Zdroj: habr.com
