Fordelen med Linux er at du kan tilpasse hva som helst hvis du vil. Dette er fordelen med projektive systemer fremfor prosedurale systemer. Det er en slags konstruktør som består av individuelle blokker som hver for seg kan tilpasses etter eget ønske.
Det er spesielt interessant hvis du ikke bare kopierer ferdige løsninger, men prøver å forstå hva og hvordan det fungerer. Og selv når du løser en useriøs oppgave, lærer du noe nytt.
Du ønsker for eksempel å justere linux-terminalfargene i utdataene fra ls-kommandoen
.
Av ls-dokumentasjonen
kan du forstå at fargene på utdataene settes ved hjelp av dircolors-verktøyet, som enten setter fargeparametrene fra sin egen database eller henter dem fra filen ~/.d
ircolors. Det ble også nevnt at initialiseringen av fargebruken gjøres via ~/.bashrc
, shell-innstillingsfilen, og at selve parameterne defineres via variabelen LC_COLORS
.
Følgende skript ble funnet i .bashrc
:
Det går ut på å sjekke om dircolors-verktøyet finnes på systemet, tilordne en verdi til variabelen og, hvis det lykkes, bruke parameteren --color=auto
hver gang ls
kalles.
Hvis du kjører dircolors-verktøyet, skriver det ut verdien til variabelen LC_COLOR
.
Det er også mulig å skrive ut verdien av variabelen LC_COLORS
i strukturert form ved å spesifisere nøkkelen:
$ dircolors -p
Siden utdataene er lange, vil jeg ikke gi dem her.
Hvis du omdirigerer utdataene dircolors -p
> ~/.dircolors
, vil det bli opprettet en strukturert fil som fargeinnstillingene hentes fra. Ved å redigere denne filen og angi fargeinnstillingene for ls-utdataene
.
I den opprettede .dircolors-filen
finnes det et hint:
Ved å sette sekvensen med semikolon får du den fargen vi trenger i linux-konsollen, i henhold til den oppførte. Linux-terminalfargene er fra 30 til 37 for skriftfarge, og fra 40 til 47 for bakgrunn. For eksempel
DIR 01;34 innebærer at katalognavn vil være fete og blå.
Men på denne måten får du bare åtte farger, og moderne terminalemulatorer kan vise minst 256 farger.
Det finnes andre måter å angi fargen på. For eksempel gir EXEC 38;5;208;1 oransje tykk skrift for kjørbare filer.
For at du skal slippe å gå gjennom linux-fargene manuelt, finnes det en ferdig fargetabell
Ved å sette inn fargeverdien 38;5;x - der x er fargen fra tabellen, får vi det nødvendige resultatet. Du får noe sånt som dette:
Hvordan fungerer det? Poenget er at fargene på informasjonen som skrives ut i terminalemulatoren, stilles inn ved hjelp av ANSI escape-koder. Dette er en bestemt sekvens av tegn som ikke skrives ut på skjermen, men som påvirker utdataene. Den kalles slik fordi den starter med [ - koden "Esc". Siden det finnes mange terminaler og terminalemulatorer, er disse kontrollkodene standardiserte. Fargekontroll gjennom sekvensen fra 30 til 37 er ECMA-48-standarden. Du finner mer informasjon om dette i avsnittet om konsollkoder
.
Når du har forstått hvordan du stiller inn linux-farger via esc-koder, er det enkelt å redesigne og fargelegge ledeteksten. PS1-variabelen, som er definert i ~/.bashrc-filen
, er ansvarlig for utdataene
I Linux Mint ser skriptet for å initialisere den slik ut:
Det vil si at det først avgjøres om skriptet ble kjørt av root eller en vanlig bruker. Siden det i de aller fleste tilfeller er det andre alternativet, bør linjen etter det første "else" redigeres. Formatet på linjen er dechiffrert i bash-dokumentasjonen, i avsnittet "Promting". Det innebærer at esc-sekvensen skal starte med "[" og slutte med "]". Det vil si
u
- skriver ut brukernavnet;h
- skriver ut vertsnavnet;w
- skriver ut navnet på arbeidskatalogen;Hva annet kan skrives ut i ledeteksten:
d
- dato, i formatet "Wed Dec 28";A
- klokkeslett, i 24-timers format;La oss introdusere noe mer interessant:
PS1='${debian_chroot:+($debian_chroot)}[[01;32m]Matrix has you,u![[00m] [[01;34m]Blue pill[[00m] or [[31m]red?[[00m]--->$ '
Og ledeteksten vil se slik ut: