Det er snart nytår, og man har ikke lyst til seriøst arbejde længere.
Alle prøver at dekorere til festlighederne: hjemmet, kontoret, arbejdspladsen… Lad os også dekorere lidt! For eksempel kommandoprompten. På en måde er kommandoprompten også et arbejdssted.
I nogle distributioner er den allerede "dekoreret":

I andre er den grå og uinteressant:

Men vi kan gøre det sådan her:

Selvfølgelig er smag og behag forskellige. Hvis denne dekoration virker for prangende og upassende for dig, så ved, at den opfattelse har helt ret til at eksistere. Og hvis du også gerne vil tilføje lidt nytårsstemning, så læs videre i denne lille nytårsartikel fra Cloud4Y.
Lad mig først forklare, hvordan terminalens output "dekoreres". Det gøres ved hjælp af escape-sekvenser. Mere præcist – ANSI/VT100 kontrolkode-sekvenser. Det betyder automatisk, at din terminalemulator skal understøtte denne standard, ellers vil det nytårsvidunder ikke ske. Og ja, det antages, at $SHELL er bash.
Disse kommandoer kaldes escape-sekvenser, fordi der i starten af hver af dem går et ASCII-tegn "escape". Der er mange kontrolsekvenser, og de giver mulighed for for eksempel at udskrive terminalindstillinger, styre visning og bevægelse af markøren, ændre skrifttype, slette og skjule tekst. Vi vil vælge én fra hele bredden af muligheder – ændring af tekst- og baggrundsfarve.
Vi udfører kode-sekvensen *ESC*[{attr1};...;{attrn}m
Som symbol Escape bruger man dets oktale form, det vil sige 33. Hvad angår attributterne, så her er en kort liste over mulige værdier:
0 Nulstil alle attributter
1 Bright (øget lysstyrke)
2 Dim (dæmpning)
4 Underscore (underrubrik)
5 Blink (blik)
7 Reverse (inversion)
8 Hidden (skjul tekst)
Foreground Colours (skriftfarve, teksten udskrives med denne farve):
30 Black (sort)
31 Red (rød)
32 Green (grøn)
33 Yellow (gul)
34 Blue (blå)
35 Magenta (magenta)
36 Cyan (cyan)
37 White (hvid)
Background Colours (papirfarve eller baggrundsfarve):
40 Black (sort)
41 Red (rød)
42 Green (grøn)
43 Yellow (gul)
44 Blue (blå)
45 Magenta (magenta)
46 Cyan (cyan)
47 White (hvid)
Bemærk, hvis du nu giver følgende kommando i terminalen: echo 33[0;31mnoget tekst 33[0m’
… så får du naturligvis en monokrom abekat:

Hvorfor? Fordi du skulle have brugt de udvidede muligheder for kommandoen echo. Det er nok bare at tilføje en lille nøgle: echo -e ‘ 33[0;31mnoget tekst 33[0m’
Nu vil output se korrekt ud:
![]()
Vi har styr på terminaloutput. Lad os nu se, hvordan vi farver kommandoprompten.
Dette gøres ved at ændre variablen PS1. Variablen bestemmer kommandopromptens udseende. Den kan også ændres, blandt andet ved hjælp af escape-sekvenser. Men der er en lille forskel: sekvensen skal starte med tegnet “[”, og slutte med tegnet “]”, ellers vil den blive vist på terminalen.
Alle mulige kommando-sekvenser er detaljeret beskrevet i bash-manualen, så jeg foreslår, at læserne selv vælger, hvad de bedst kan lide at se i kommandoprompten. Som eksempel vil jeg give min PS1-variabel:
[ 33[34;1m]t[ 33[0m],[ 33[32m]u@l@h[ 33[0m]:[ 33[33m]W[ 33[0m],[ 33
[31m]![ 33[0m]$n
Lad mig forklare denne skræmmende besværgelse:
[ 33[34;1m] — aktiverer klart blå (anden attribut) skriftfarve
t – viser det aktuelle tidspunkt i formatet TT: MM: SS
[ 33[0m] – nulstiller skriftfarven
, — bare et komma (overraskende, ikke?)
[ 33[32m] — aktiverer grøn skriftfarve
u@l@h – viser brugernavnet, terminalens nummer og værtens kortnavn, adskilt med tegnet “@”
[ 33[0m] — nulstiller skriftfarven igen
: — bare et kolon (pludselig!)
[ 33[33m] — aktiverer gul skriftfarve
W – viser navnet på den nuværende mappe
[ 33[0m] — nulstiller skriftfarven igen
, — endnu et komma (hvem kunne have troet det!)
[ 33[31m] — aktiverer rød skriftfarve
! — viser kommandoens nummer i terminalen
[ 33[0m] — glem ikke at nulstille skriftfarven
$ — viser “#” for root og “$” for alle andre
n – linjeskift. Hvorfor? For at kommandoen kan starte fra venstre side af vinduet, og ikke fra slutningen af kommandoprompten.
Hvor skal variablen omdefineres? Det mest logiske er at gøre det i ~\/ .bashrc.
Udseendet af prompten er kun begrænset af din fantasi. I princippet er der ikke noget, der forhindrer dig i at lave kommandoprompten til en juletree ved hjælp af det ovennævnte værktøj. Men en sådan prompt ville være meget besværlig, og arbejdet ville bestemt ikke blive lettere. Du kan blot vise træet ovenfor kommandoprompten ved login (vi skal alligevel redigere ~\/ .bashrc). Gå amok! Og tak fordi du lyttede.

Hvad mere nyttigt kan man læse i bloggen
→
→
→
→
→
Tilmeld dig vores -kanal, så du ikke går glip af den næste artikel! Vi skriver ikke oftere end to gange om ugen og kun om relevante emner. Vi minder også om, at den corporate cloud-udbyder Cloud4Y har startet kampagnen 'Cloud FZ-152 til prisen af den normale'. Du kan ansøge .
Kilde: habr.com
