Skip to main content

Hvordan tilpasse (og fargelegge) Bash Prompt

Hvordan tilpasse (og fargelegge) Bash Prompt

Geoffrey Carr

De fleste Linux-distribusjoner konfigurerer Bash-spørringen for å se noe ut [email protected]:directory$ . Men du kan konfigurere Bash-spørringen for å inneholde alt du vil, og til og med velge hvilke farger du liker.

Eksemplet trinnene her ble utført på Ubuntu 16.04 LTS. Prosessen bør være den samme på andre Linux-distribusjoner, selv om standardbash-spørringen og innstillingene i .bashrc-filen kan være litt annerledes.

Hvor hurtigvariabelen er lagret

Din Bash-hurtigkonfigurasjon er lagret i brukerkontoens .bashrc-fil, som er på ~/.bashrc. Så, hvis brukernavnet ditt er bob, er filen på /home/bob/.bashrc.

Du kan åpne filen for å vise den nåværende Bash-variabelen. Vi bruker nano som tekstredigeringseksempel, selv om du også kan bruke vi, emacs eller andre tekstredigeringsprogrammer du er komfortabel med. Åpne en terminal og kjøre:

nano ~/.bashrc

Rull ned til PS1= seksjon. Den første variabelen ser ganske komplisert ut fordi den inneholder fargeinformasjon - vi forklarer det senere. Den andre variabelen, uten fargeinformasjon, lyder som følger:

${debian_chroot:+($debian_chroot)}[email protected]:w$

Dette er fortsatt litt komplisert på grunn av ${debian_chroot:+($debian_chroot)} bits. Disse bare fortelle Bash å fortelle deg om du bruker et Debian chroot-miljø og normalt ikke vil bli vist. Ignorerer disse, her er standardstrukturen for Bash-hurtigvariabelen:

[email protected]:w$

u angir brukernavnet ditt, @ indikerer @ -tegnet, h Indikerer vertsnavnet (datamaskinnavn), : indikerer: tegnet, w Indikerer arbeidskatalogen, og $ indikerer en $ hvis du er en vanlig brukerkonto eller # hvis du er rot. Så, setter alt sammen, får du [email protected]:working_directory$.

Hvis du vil endre Bash-spørringen, må du bare legge til, fjerne eller omorganisere spesialtegnene i PS1-variabelen. Men det er mange flere variabler du kan bruke enn standardene.

La teksteditoren for nå - i nano, trykk Ctrl + X for å avslutte. Vi viser deg hvordan du eksperimenterer med variabler før du faktisk skriver en ny inn i .bashrc-filen.

Slik oppretter du en tilpasset Bash Prompt

Din Bash-hurtigkonfigurasjon er lagret i PS1-variabelen. For å lagre innholdet i PS1-variabelen i en ny variabel, kjør følgende kommando:

DEFAULT=$PS1

Du kan nå sette PS1-variabelen til forskjellige verdier for å eksperimentere. For eksempel vil den første linjen her angi spørringen til en grunnleggende "bruker $" -prompten, mens den andre vil sette spørringen til en grunnleggende "bruker: working_directory $" -prompten.

PS1='u$ ' PS1='u:w$ '

Hvis du noen gang vil komme tilbake til standardprompten din, bare kjør følgende kommando.

PS1=$DEFAULT

Bash blir gjenopprettet til standardprompt takket være det faktum at du lagret disse standardinnstillingene tidligere. Vær oppmerksom på at eventuelle endringer du gjør her bare er midlertidige for den nåværende Bash-økten, slik at du alltid kan logge ut og logge på eller lukke og åpne vinduet for å gå tilbake til standardprompten din. Men linjen ovenfor gjør det mulig å enkelt komme tilbake til standard Bash-spørringen uten å måtte skrive ut eller lukke et vindu.

Du kan legge til noen tegn eller tekst til variabelen. Så, for å prefiks standardprompten med "Hello World", kan du bruke:

PS1='Hello World [email protected]:w$ '

Nå som du har det grunnleggende nede, trenger du bare å vite hva alle spesialtegnene er. Du vil sannsynligvis ikke bryr seg om mange av disse, men her er den fullstendige listen som den fremgår av Bash-håndboken:

  • En klokke karakter: a
  • Datoen, i formatet "Ukedagsmånedsdato" (for eksempel "Tirsdag 26. mai"): d
  • Formatet sendes til strftime (3), og resultatet blir satt inn i promptstrengen; Et tomt format resulterer i en lokal-spesifikk tidsrepresentasjon. Braces er påkrevd: D{format}
  • Et flyktekarakter: e
  • Vertsnavnet, opp til den første '.': h
  • Vertsnavnet: H
  • Antall jobber som for tiden forvaltes av skallet: j
  • Basenavnet på skallets terminalapparatnavn: l
  • En ny linje:
  • En vognretur:
  • Navnet på skallet, basenavnet på $ 0 (delen som følger sluttstrekket): s
  • Tiden, i 24-timers HH: MM: SS-format:
  • Tiden, i 12-timers HH: MM: SS-format: T
  • Tiden, i 12-timers am / pm-format: @
  • Tiden, i 24-timers HH: MM-format: A
  • Brukernavnet til den nåværende brukeren: u
  • Versjonen av Bash (for eksempel 2,00): v
  • Utgivelsen av Bash, versjon + patchlevel (for eksempel 2.00.0): V
  • Den nåværende arbeidskatalogen, med $ HOME forkortet med en tilde (bruker varianten $ PROMPT_DIRTRIM): w
  • Basenavnet på $ PWD, med $ HOME forkortet med en tilde: W
  • Historikknummeret til denne kommandoen: !
  • Kommandoenummeret til denne kommandoen: #
  • Hvis den effektive uid er 0, #, ellers $: $
  • Tegnet hvis ASCII-kode er oktalverdien nnn: nn
  • Et tilbakeslag: \
  • Begynn en sekvens av tegn som ikke skrives ut. Dette kan brukes til å legge inn en terminalkontrollsekvens i spørringen: [
  • Avslutte en sekvens av tegn som ikke er skrevet ut: ]

Så hvis du vil legge til dato og klokkeslett i Bash-spørringen din og sette arbeidskatalogen på kommandoen på en annen linje, kan du bruke følgende konstruksjon:

PS1='[d ] [email protected] w$ '

Torgets parentes her er ikke nødvendig, men hjelper deg med å bryte opp visuelt og gjøre linjen lettere å lese. Som vi dekket tidligere, kan du legge til tekst eller normale tegn til variabelen du liker, så vær så snill å bruke det som fungerer for deg.

Det er et mer kraftig triks du bør vite om: Du kan legge til utdataene fra en kommando til spørringen. Når spørringen vises, vil Bash kjøre kommandoen og fylle ut den aktuelle informasjonen. For å gjøre dette, bare ta med en kommando du vil kjøre mellom to ` tegn. Det er ikke en apostrofi, det er den store aksent, som vises over tabulatortasten på tastaturet.

For eksempel, la oss si at du vil vise Linux-kjerneversjonen i spørringen. Du kan bruke en linje som følgende:

PS1='[email protected] on `uname -s -r` w$ '

Som et annet eksempel, la oss si at du vil se systemets oppetid og laste gjennomsnitt, som vist av uptime kommando. Du kan bruke følgende konstruksjon, som setter oppetid på egen linje før resten av spørringen.

PS1='(`uptime`) [email protected]:w$ '

Du er velkommen til å eksperimentere med forskjellige spesialtegn og kommandoer for å samle den ideelle ledeteksten.

Slik legger du til farger i Bash Prompt

Når du har funnet ut din foretrukne spørring, kan du legge til farger på den. Dette er faktisk veldig enkelt, men det gjør variabelen ser veldig rotete og komplisert hvis du ikke forstår hva du ser på.

For eksempel var standardfargevarselvariabelen fra tidligere:

${debian_chroot:+($debian_chroot)}[33[01;32m][email protected][33[00m]:[33[01;34m]w[33[00m]$

Eller fjerner debian_chroot-biter igjen:

[33[01;32m][email protected][33[00m]:[33[01;34m]w[33[00m]$

Dette er faktisk bare [email protected]:w$ variabel fra tidligere, men med fargeinformasjon. Virkelig, vi kan bryte det ned i noen få avdelinger:

[33[01;32m][email protected] [33[00m]: [33[01;34m]w [33[00m]$

Den første delen er [email protected] litt, foran fargeinformasjon som gjør den grønn. Den andre er : tegn, foran fargeinformasjon som fjerner farger. Den tredje er w litt, foran fargeinformasjon som gjør den blå. Den fjerde er $ litt, foran fargeinformasjon som fjerner farger.

Når du forstår hvordan du kan lage fargekoder på egen hånd, kan du legge til hvilke farger du liker til hvilke deler av Bashen du spør.

Her er det du trenger å vite: Du må inkludere hele fargekodinformasjonen mellom[ og ] characters. På innsiden av taggen må du begynne med enten 33[ eller e[ å indikere at Bash at dette er fargeinformasjon. Både 33[ og e[ gjør det samme. e[ er kortere, så det kan være mer praktisk å bruke, men vi bruker 33[ her som det samsvarer med det som brukes som standard. På slutten av taggen må du ende med m for å indikere slutten av en fargekode.

Bryter det ned, her er hva hver fargelegg vil se ut. Den eneste forskjellen er informasjonen du legger til i stedet for FARGE for å definere den faktiske fargen:

[33[COLORm]

Bash lar deg endre fargen på forgrunns tekst, legge til attributter som "fet" eller "understreke" til teksten, og angi en bakgrunnsfarge.

Her er verdiene for forgrunns tekst:

  • Svart: 30
  • Blå: 34
  • Cyan: 36
  • Grønn: 32
  • Lilla: 35
  • Rød: 31
  • Hvit: 37
  • Gul: 33

For eksempel, siden lilla tekst er fargekode 32, vil du bruke [33[32m] for lilla tekst.

Du kan også spesifisere et attributt for teksten. Denne attributtet må legges før fargenummeret, adskilt av et semikolon (;). Tekst med disse attributter vil se annerledes ut i forskjellige terminalemulatorer.

Her er verdiene for tekstattributter:

  • Normal tekst: 0
  • Fet eller lett tekst: 1 (det avhenger av terminalemulatoren.)
  • Dim tekst: 2
  • Understreket tekst: 4
  • Blinkende tekst: 5 (Dette fungerer ikke i de fleste terminalemulatorer.)
  • Omvendt tekst: 7 (Dette inverterer forgrunnen og bakgrunnsfargene, så du får se svart tekst på en hvit bakgrunn hvis den gjeldende teksten er hvit tekst på en svart bakgrunn.)
  • Skjult tekst: 8

Du trenger egentlig ikke å inkludere det normale tekstattributtet. Det er allikevel standard.

For eksempel, siden rød tekst er kode 31 og fet tekst er kode 1, vil du bruke [33[1;31m] for fet rød tekst.

Du kan også angi en bakgrunnsfarge, men du kan ikke legge til et attributt til en bakgrunnsfarge.

Her er verdiene for bakgrunnsfarger:

  • Svart bakgrunn: 40
  • Blå bakgrunn: 44
  • Cyan bakgrunn: 46
  • Grønn bakgrunn: 42
  • Lilla bakgrunn: 45
  • Rød bakgrunn: 41
  • Hvit bakgrunn: 47
  • Gul bakgrunn: 43

For eksempel, siden en blå bakgrunn er kode 44, [33[44m] vil spesifisere en blå bakgrunn.

Du kan angi både forgrunns- og bakgrunnsfargekoder. For eksempel representerer 42 en grønn bakgrunn og 31 representerer rød tekst. Så, for å få standardmeldingen til å bli rød tekst på en grønn bakgrunn, vil du bruke:

PS1='[33[42m][33[31m][email protected]:w$ '

Vi angir bare en enkelt bakgrunnsfarge og deretter en enkelt forgrunns tekstfarge her, som begynner i starten av spørringen, og blir brukt på all tekst i spørringen. Du kan imidlertid angi så mange fargekoder som du vil ha i variabelen for å farge forskjellige deler av spørringen din, men du vil.

Bakgrunns- og forgrunns tekstfarger fortsetter å gå forbi spørringen, med mindre du angir fargekode 00, fjerner du fargedata. Du kan også bruke denne taggen i variabelen for å tilbakestille formatering tilbake til standard et sted i spørringen. For eksempel vil den følgende linjen avslutte all farging før $ karakter.

PS1='[33[42m][33[31m][email protected]:w\[33[00m]$ '

Slik setter du inn din nye standardprompt

Når du er ferdig med å eksperimentere med farger, bør du ha en Bash-spørring du liker i den nåværende økten. Men du vil sannsynligvis gjøre den nye meldingen permanent, så den brukes automatisk i alle dine Bash-økter.

For å gjøre dette trenger du bare å endre innholdet i PS1-variabelen i .bashrc-filen, som vi så på tidligere.

Åpne .bashrc-filen i din foretrukne tekstredigerer, slik som:

nano ~/.bashrc

Rull ned og finn PS1 = delen.Bare erstatt standardvariabelen med den tilpassede variabelen. Du vil sikkert forlate ${debian_chroot:+($debian_chroot)} biter alene, men de vil ikke vises uten at du er i et chroot-miljø, uansett.

Skriv inn din fargede PS1-variabel under if [ '$color_prompt' = yes ]; then linje. Skriv inn variabelen uten farger under else linje.

Lagre filen og lukk tekstredigeringsprogrammet. For eksempel, for å lagre filen i nano, trykk Ctrl + O, trykk Enter, og trykk deretter Ctrl + X for å avslutte.

Neste gang du starter et nytt Bash-skall, for eksempel ved å logge på terminalen eller ved å åpne et nytt terminalvindu, ser du din tilpassede melding.

Link
Plus
Send
Send
Pin