Nova godina dolazi, o ozbiljnom poslu više se ne razmišlja.
Svi nastoje ukrasiti nešto za praznik: dom, ured, radno mjesto… I mi ćemo nešto ukrasiti! Na primjer, pozivni terminal. Na neki način, pozivni terminal je također radno mjesto.
U nekim distribucijama već je "ukrašen":

U drugim je siv i neupadljiv:

A možemo napraviti, na primjer, ovako:

Naravno, svakome su ukusi različiti. Ako vam se takvo ukrašavanje čini previše kičastim i nepotrebnim, znajte da je to mišljenje potpuno opravdano. A ako i vi želite dodati malo novogodišnjeg ugođaja, pročitajte dalje mali novogodišnji članak od Cloud4Y.
Za početak ću objasniti kako se "ukrašava" izlaz terminala. To se postiže pomoću escape sekvenci. Konkretno, u pitanju su upravljačke kodne sekvence terminala ANSI/VT100. Što automatski podrazumijeva da vaš emulatore terminala mora podržavati ovu normu, inače novogodišnje čudo se neće dogoditi. I da, pretpostavljamo da je vaš $SHELL bash.
Ti se nizu nazivaju escape sekvencama jer na početku svake od njih ide ASCII simbol "escape". Postoji mnogo upravljačkih sekvenci, koje omogućuju, na primjer, ispisivanje postavki terminala, upravljanje prikazivanjem i pomicanjem kursora, promjenu fonta, brisanje i skrivanje teksta. Mi ćemo od svih mogućnosti odabrati jednu – promjenu boje teksta i pozadine.
Izvršavamo kodnu sekvencu *ESC*[{attr1};...;{attrn}m
Kao simbol Escape koristi se njegova osmeročlana forma, to jest 33. Što se tiče atributa, evo kratkog popisa mogućih vrijednosti:
0 Resetiranje svih atributa
1 Bright (povećana svjetlost)
2 Dim (smanjenje svjetlosti)
4 Underscore (donje naglašavanje)
5 Blink (treptanje)
7 Reverse (inverzija)
8 Hidden (sakrij tekst)
Foreground Colours (boje olovke, ovom bojom se ispisuje tekst):
30 Black (crna)
31 Red (crvena)
32 Green (zelena)
33 Yellow (žuta)
34 Blue (plava)
35 Magenta (ljubičasta)
36 Cyan (tirkizna)
37 White (bijela)
Background Colours (boja papira, ili boja pozadine):
40 Black (crna)
41 Red (crvena)
42 Green (zelena)
43 Yellow (žuta)
44 Blue (plava)
45 Magenta (ljubičasta)
46 Cyan (tirkizna)
47 White (bijela)
Obratite pažnju, ako sada naredite u terminalu: echo 33[0;31mneki tekst 33[0m’
… onda ćete očekivano dobiti monohromnu abecedu:

Zašto? Zato što ste trebali upotrijebiti proširene mogućnosti naredbe echo. Dovoljno je dodati jedan ključ: echo -e ' 33[0;31mneki tekst 33[0m'
Sada će ishod izgledati ispravno:
![]()
Riješili smo se boje ispisa na terminalu. Sada hajde da vidimo kako obojiti pozivnu liniju.
To se postiže promjenom varijable PS1. Ova varijabla je odgovorna za pozivnu liniju. Njen izgled se također može mijenjati, uključujući pomoću escape sekvenci. Ali postoji mala razlika: sekvencu je potrebno započeti simbolom “[”, a završiti simbolom “]”, inače će biti ispisana na terminalu.
Sve moguće komandne sekvence su detaljno razrađene u priručniku za bash, tako da predlažem čitateljima da sami odaberu što im se više sviđa vidjeti u pozivnoj liniji. Kao primjer, ću navesti svoju vrijednost varijable PS1:
[ 33[34;1m]t[ 33[0m],[ 33[32m]u@l@h[ 33[0m]:[ 33[33m]W[ 33[0m],[ 33
[31m]![ 33[0m]$n
Dešifrirat ću ovu strašnu formulu:
[ 33[34;1m] — uključujemo jarko plavu (drugi atribut) boju fonta
t – ispisujemo trenutno vrijeme u formatu HH: MM: SS
[ 33[0m] – resetiranje postavki boje fonta
, — samo zarez (iznenađujuće, zar ne?)
[ 33[32m] — uključujemo zelenu boju fonta
u@l@h – ispisujemo ime korisnika, broj terminalskog uređaja i kratko ime hosta, odvojeno simbolom “@”
[ 33[0m] — ponovo resetiramo postavke boje fonta
: — samo dvotačka (iznenađujuće!)
[ 33[33m] — uključujemo žutu boju fonta
W – ispisujemo ime trenutnog direktorija
[ 33[0m] — opet resetiramo postavke boje fonta
, — još jedan zarez (tko bi pomislio!)
[ 33[31m] — uključujemo crvenu boju fonta
! — ispisujemo broj naredbe u terminalu
[ 33[0m] — ne zaboravite resetirati postavke boje fonta
$ — ispisujemo “#” za root i “$” za sve ostale
n – prelazak u novi red. Zašto? Da bi naredba počela s lijevog ruba prozora, a ne s pozicije kraja poziva.
Gdje redefinirati varijablu? Najlogičnije bi bilo napraviti to u ~/.bashrc.
Izgled pozivne linije je ograničen samo vašom maštom. U principu, ništa vas ne sprječava da pomoću gornje opisanog alata napravite pozivnu liniju u obliku božićnog drvca. Istina, takva pozivna linija bi bila vrlo nespretna, a rad sigurno neće postati lakši. Drvce možete jednostavno ispisati iznad pozivne linije prilikom prijave (ionako trebamo uređivati ~/.bashrc). Samo naprijed! I hvala na pažnji.

Što još korisnog možete pročitati na blogu
→
→
→
→
→
Pretplatite se na naš -kanal, kako ne biste propustili novi članak! Objavljujemo najviše dva puta tjedno i to samo o bitnim stvarima. Također vas podsjećamo da je korporativni oblačni provideri Cloud4Y pokrenuo akciju „Oblak FZ-152 po cijeni običnog“. Prijavite se možete .
Izvor: habr.com
