"Linux" privalumas yra tas, kad galite pritaikyti bet ką, jei norite. Tai projektinių sistemų pranašumas prieš procedūrines sistemas. Tai tam tikras konstruktorius, sudarytas iš atskirų blokų, kurių kiekvieną galima pritaikyti savo nuožiūra.
Tai ypač įdomu, jei ne tik kopijuojate paruoštus sprendimus, bet ir bandote suprasti, kas ir kaip veikia. Ir net spręsdami nereikšmingą uždavinį, sužinosite kažką naujo.
Pavyzdžiui, norite pakoreguoti linux terminalo ls
komandos ls
išvesties spalvas.
Iš ls
dokumentacijos galite suprasti, kad išvesties spalvų nustatymas atliekamas naudojant pagalbinę programą dircolors, kuri spalvų parametrus nustato iš savo duomenų bazės arba paima juos iš ~/.dircolors
failo. Taip pat minėta, kad spalvų naudojimo inicializacija atliekama per ~/.bashrc
, apvalkalo nustatymų failą, o patys parametrai apibrėžiami per kintamąjį LC_COLORS
.
Toliau pateiktas scenarijus buvo rastas .bashrc:
Jo esmė - patikrinti, ar sistemoje yra dircolors įrankis, priskirti kintamajam reikšmę ir, jei pavyksta, kiekvieną kartą iškvietus ls
naudoti parametrą --color=auto.
Jei paleidžiate dircolors programą, ji išveda LC_COLOR
kintamojo vertę.
LC_COLORS
kintamojo vertę taip pat galima išvesti struktūrizuotu pavidalu, nurodžius raktą:
$ dircolors -p
Kadangi išvestis yra ilga, jos čia nepateiksiu.
Jei išvestį dircolors -p
> ~/.dircolors
nukreipsite į kitą vietą, bus sukurtas struktūrizuotas failas, iš kurio bus paimti spalvų nustatymai. Redaguodami šį failą ir nustatykite ls
išvesties spalvų nustatymus.
Sukurtame .dircolors
faile yra užuomina:
Nustatydami seką per kabliataškį, linux konsolėje gausime reikiamą spalvą pagal išvardytas. Linux terminalo spalvos yra nuo 30 iki 37 šrifto spalvos ir nuo 40 iki 47 fono spalvos. Pavyzdžiui:
DIR 01;34 reiškia, kad katalogų pavadinimai bus paryškinti ir mėlyni.
Tačiau taip gausite tik aštuonias spalvas, o šiuolaikiniai terminalo emuliatoriai gali rodyti bent 256 spalvas.
Yra ir kitų spalvų nustatymo būdų. Pavyzdžiui, EXEC 38;5;208;1 suteikia oranžinį storą šriftą vykdomiesiems failams.
Kad nereikėtų rankiniu būdu peržiūrėti linux spalvų, yra paruošta spalvų lentelė
Pakeitę spalvos reikšmę 38;5;x - kur x yra spalva iš lentelės, gausime reikiamą rezultatą. Gauname kažką panašaus:
Kaip tai veikia? Esmė ta, kad terminalo emuliatoriuje išvedamos informacijos spalvos nustatymas atliekamas naudojant ANSI escape kodus. Tai tam tikra simbolių seka, kuri nėra spausdinama ekrane, bet daro įtaką išvedimui. Ji taip vadinama todėl, kad prasideda [ - kodu "Esc". Kadangi yra daug terminalų ir terminalų emuliatorių, šie valdymo kodai yra standartizuoti. Spalvų valdymas per seką nuo 30 iki 37 yra ECMA-48 standartas. Informacijos apie jį rasite skyriuje konsolės_kodai
.
Supratus, kaip nustatyti linux spalvas per esc kodus, nesunku pertvarkyti ir nuspalvinti kvietimo eilutę. Už jos išvedimą atsakingas kintamasis PS1, apibrėžtas ~/.bashrc
faile
Linux Mint sistemoje jo inicializavimo scenarijus atrodo taip:
Tai reiškia, kad pirmiausia nustatoma, ar scenarijų paleido root, ar paprastas naudotojas. Kadangi daugeliu atvejų tai būna antrasis variantas, reikia redaguoti eilutę, einančią po pirmojo 'else'. Šios eilutės formatas iššifruotas bash dokumentacijoje, skyriuje "Promting". Iš jo matyti, kad "esc" seka turėtų prasidėti "[" ir baigtis "]". Taigi:
u
- išveda vartotojo vardą;h
- išvedamas kompiuterio pavadinimas;w
- išveda darbinio katalogo pavadinimą;Ką dar galima išvesti užklausoje:
d
- data formatu "Wed Dec 28";A
- laikas 24 valandų formatu;Įveskime kai ką įdomesnio:
PS1='${debian_chroot:+($debian_chroot)}[[01;32m]Matrix has you,u![[00m] [[01;34m]Blue pill[[00m] or [[31m]red?[[00m]--->$ '
Ir užklausos eilutė atrodys taip: