Slik tilpasser du (og fargelegger) Bash Prompt
De fleste Linux-distribusjoner konfigurerer Bash-spørringen for å se noe ut brukernavn @ vertsnavn: katalog $
. Men du kan konfigurere Bash-spørringen for å inneholde hva du vil, og til og med velge hvilke farger du liker.
Eksemplet trinnene her ble utført på Ubuntu 16.04 LTS. Prosessen skal være den samme på andre Linux-distribusjoner, selv om standard Bash-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) \ u @ \ h: \ 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:
\ U @ \ h: \ w \ $
\ u
Indikerer brukernavnet ditt, @
indikerer @ -tegnet, \ h
Indikerer vertsnavnet (datamaskinnavn), :
indikerer: tegnet, \ w
angir arbeidskatalogen, og \ $
indikerer en $ hvis du er en vanlig brukerkonto eller # hvis du er rot. Så, setter alt sammen, får du brukernavn @ hostname: 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.
Legg teksteditoren for nå - i nano, trykk Ctrl + X for å avslutte. Vi viser deg hvordan du kan eksperimentere 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:
STANDARD = $ PS1
Du kan nå sette PS1-variabelen til forskjellige verdier for å eksperimentere. For eksempel vil den første linjen her angi spørringen din til en grunnleggende "bruker $" -prompt, mens den andre vil sette spørringen til en grunnleggende "bruker: working_directory $" ledetekst.
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, er bare 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. 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 = "Hei verden \ u @ \ h: \ 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:
\en
- 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 til skallets terminal enhetnavn:
\ l
- En ny linje:
\ n
- En vognretur:
\ r
- Navnet på skallet, basenavnet på $ 0 (delen som følger sluttstrekket):
\ s
- Tiden i 24-timers HH: MM: SS-format:
\ t
- Tiden, i 12-timers HH: MM: SS-format:
\ T
- Tiden, i 12-timers am / pm-format:
\ @
- Tiden, i 24-timers HH: MM-format:
\EN
- 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:
\ nnn
- Et tilbakeslag:
\\
- Start en sekvens av tegn som ikke er trykt. Dette kan brukes til å legge inn en terminalkontrollsekvens i spørringen:
\ [
- Avslutt 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 arbeidsboken på kommando på en annen linje, kan du bruke følgende konstruksjon:
PS1 = "[\ d \ t] \ u @ \ h \ n \ 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 knep du burde vite om: Du kan legge til produksjonen av en kommando til spørringen. Når spørringen kommer frem, 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 = "\ u @ \ h på 'uname -s -r' \ w \ $"
Som et annet eksempel, la oss si at du vil vise systemets oppetid og laste gjennomsnitt, som vist av oppetid
kommando. Du kan bruke følgende konstruksjon, som stiller oppetid på egen linje før resten av spørringen.
PS1 = "('oppetid') \ n \ u @ \ h: \ 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) \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $
Eller fjerner debian_chroot-biter igjen:
\ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $
Dette er faktisk bare \ U @ \ h: \ w $
variabel fra tidligere, men med fargeinformasjon. Virkelig, vi kan bryte det ned i noen få avdelinger:
\ [\ 033 [01, 32m \]\ U @ \ h \ [\ 033 [00m \]: \ [\ 033 [01, 34m \]\ w \ [\ 033 [00m \]\ $
Den første delen er \ U @ \ h
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 \] tegn
s. På innsiden av taggen må du begynne med enten \ 033 [
eller \ E [
å indikere at Bash at dette er fargeinformasjon. Både \ 033 [
og \ E [
gjør det samme. \ E [
er kortere, så det kan være mer praktisk å bruke, men vi vil bruke \ 033 [
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:
\ [\ 033 [FARGEm \]
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 \ [\ 033 [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 ulike 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 ikke faktisk å 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 \ [\ 033 [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, \ [\ 033 [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 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ 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 til å 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 fargeinformasjonen. 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 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "
Slik setter du inn din nye standardprompt
Når du er ferdig med å eksperimentere med farger, bør du ha en Bash-spørsmål 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 hvis ["$ color_prompt" = ja]; deretter
linje. Skriv inn variabelen uten farger under ellers
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.