Maksājuma metodes Abuse

Linux termināļa krāsas

26.09.2021, 22:47

Linux priekšrocība ir tā, ka varat pielāgot jebko, ja vēlaties. Tā ir projektīvo sistēmu priekšrocība salīdzinājumā ar procesuālajām sistēmām. Tas ir sava veida konstruktors, kas sastāv no atsevišķiem blokiem, no kuriem katru var pielāgot pēc saviem ieskatiem.

Tas ir īpaši interesanti, ja jūs nevis vienkārši kopējat gatavus risinājumus, bet mēģināt saprast, kas un kā darbojas. Un pat risinot nenopietnu uzdevumu, jūs uzzināsiet kaut ko jaunu.

Izvades krāsu krāsošana

Piemēram, jūs vēlaties pielāgot linux termināļa krāsas ls komandas ls izvadē.

No ls dokumentācijas var saprast, ka izvades krāsu iestatīšana tiek veikta, izmantojot dircolors utilītu, kas krāsu parametrus nosaka vai nu no savas datu bāzes, vai ņem tos no ~/.dircolors faila. Tika arī minēts, ka krāsu izmantošanas inicializācija tiek veikta, izmantojot ~/.bashrc, čaulas iestatījumu failu, un ka paši parametri tiek definēti, izmantojot mainīgo LC_COLORS.

Tika atrasts šāds skripts .bashrc:

Tā būtība ir pārbaudīt, vai sistēmā ir dircolors palīgprogramma, piešķirt mainīgajam vērtību un, ja tas izdodas, izmantot parametru --color=auto katru reizi, kad tiek izsaukts ls.

Ja palaižat dircolors utilītu, tas izvada mainīgā LC_COLOR vērtību.

Mainīgā LC_COLORS vērtību ir iespējams izvadīt arī strukturētā veidā, norādot atslēgu:

$ dircolors -p

Tā kā izvads ir garš, es to šeit nesniegšu.

Ja novirzīsiet izvades dircolors -p > ~/.dircolors, tiks izveidots strukturēts fails, no kura tiks ņemti krāsu iestatījumi. Rediģējot šo failu un iestatiet krāsu iestatījumus ls izvades.

Izveidotajā failā .dircolors ir norādes:

Nosakot secību ar semikolu, mēs linux konsoles ekrānā iegūstam vajadzīgo krāsu atbilstoši uzskaitītajam. Linux termināļa krāsas ir no 30 līdz 37 fonta krāsai un no 40 līdz 47 fonam. Piemēram:

DIR 01;34 nozīmē, ka direktoriju nosaukumi būs trekni un zili.

Taču šādā veidā tiek iegūtas tikai astoņas krāsas, bet mūsdienu termināļa emulatori spēj attēlot vismaz 256 krāsas.

Ir arī citi krāsu iestatīšanas veidi. Piemēram, EXEC 38;5;208;1 nodrošina oranžu biezu fontu izpildāmajiem failiem.

Lai nevajadzētu linux krāsas meklēt manuāli, ir pieejama gatava krāsu tabula.

Ievietojot krāsu vērtību 38;5;x - kur x ir krāsa no tabulas, mēs iegūstam vajadzīgo rezultātu. Iegūstam kaut ko līdzīgu:

Kā tas darbojas? Runa ir par to, ka termināļa emulatora izvadītās informācijas krāsas iestatīšana tiek veikta, izmantojot ANSI escape kodus. Tā ir noteikta rakstzīmju secība, kas netiek izdrukāta uz ekrāna, bet ietekmē izvades kodu. To tā sauc tāpēc, ka tā sākas ar [ - kodu "Esc". Tā kā ir daudz termināļu un termināļu emulatoru, šie vadības kodi ir standartizēti. Krāsu kontrole, izmantojot secību no 30 līdz 37, ir ECMA-48 standarts. Informāciju par to var atrast sadaļā console_codes.

Uzaicinājuma rindas iekrāsošana

Kad esat sapratuši, kā iestatīt linux krāsas, izmantojot esc kodus, ir viegli pārveidot un iekrāsot uzaicinājuma līniju. Par tās izvadīšanu ir atbildīgs mainīgais PS1, kas definēts ~/.bashrc failā.

Linux Mint operētājsistēmā tā inicializēšanas skripts izskatās šādi:

Tas nozīmē, ka vispirms tiek noteikts, vai skriptu palaidis root vai parasts lietotājs. Tā kā vairumā gadījumu tas ir otrais variants, pēc pirmā 'else' sekojošā rinda ir jārediģē. Šīs rindiņas formāts ir atšifrēts bash dokumentācijā, sadaļā "Promting". No tās izriet, ka esc secībai jāsākas ar "[" un jābeidzas ar "]". Tādējādi:

  • [[01;32m]] - nosaka zaļo krāsu;
  • u - izvada lietotāja vārdu;
  • h - izvada uzņēmēja nosaukumu;
  • [[00m] - dzēš iestatītos atribūtus;
  • [[01;34m] - nosaka zilu krāsu;
  • w - izvada darba direktorijas nosaukumu;
  • Hi - piemērs, ka var izvadīt jebkuru atvasinātu tekstu.

Ko vēl var izvadīt uzvednē:

  • d - datumu formātā "Wed Dec 28";
  • A - laiks 24 stundu formātā;
  • ! - pašreizējās komandas numurs vēsturē;
  • - izvades pārnešana uz citu rindu;

Ieviesīsim kaut ko interesantāku:

PS1='${debian_chroot:+($debian_chroot)}[[01;32m]Matrix has you,u![[00m] [[01;34m]Blue pill[[00m] or [[31m]red?[[00m]--->$ '

Un izsaukuma rinda izskatīsies šādi: