De fleste Linux-distributioner konfigurerer Bash-prompten til at ligne noget
brugernavn @ værtsnavn: katalog $
. Men du kan konfigurere Bash-prompten til at indeholde hvad du vil og endda vælge de farver, du kan lide.
Eksemplet her blev udført på Ubuntu 16.04 LTS. Processen skal være den samme på andre Linux-distributioner, selvom standard Bash-prompten og indstillingerne i .bashrc-filen kan være lidt anderledes.
Hvor den hurtige variabel er gemt
Din Bash-promptkonfiguration gemmes i din brugerkontos .bashrc-fil, som er kl
~ / .bashrc
. Så hvis dit brugernavn er bob, er filen på
/home/bob/.bashrc
.
Du kan åbne filen for at se den aktuelle Bash-variabel. Vi bruger nano som vores eksempel teksteditor, selvom du også kunne bruge vi , emacs eller enhver anden teksteditor, du er fortrolig med. Åbn en terminal, og kør:
nano ~ / .bashrc
Rul ned til
Ψ1 =
afsnit. Den første variabel ser ret kompliceret ud, fordi den indeholder farveoplysninger - det forklarer vi senere. Den anden variabel uden farveinformation lyder som følger:
$ {debian_chroot:+($debian_chroot)} \ u @ \ h: \ w \ $
Dette er stadig lidt kompliceret på grund af
${debian_chroot:+($debian_chroot)}
bits. Disse fortæller bare Bash at fortælle dig, hvis du bruger et Debian chroot-miljø og normalt ikke vises. Ignorerer dem, her er standardstrukturen for Bash-promptvariablen:
\ u @ \ h: \ w \ $
\ u
angiver dit brugernavn,
@
angiver @ -tegnet,
\ h
angiver værtsnavnet (computernavnet),
:
angiver: tegn,
\i
angiver arbejdsmappen, og
\$
angiver en $, hvis du er en normal brugerkonto, eller # hvis du er root. Så når du sætter det hele sammen, får du det
brugernavn @ værtsnavn: working_directory $
.
For at ændre din Bash-prompt skal du bare tilføje, fjerne eller omarrangere specialtegnene i PS1-variablen. Men der er mange flere variabler, du kan bruge end standardvariablerne.
Forlad teksteditoren indtil videre - i nano skal du trykke på Ctrl + X for at afslutte. Vi viser dig, hvordan du eksperimenterer med variabler, før du faktisk skriver en ny i din .bashrc-fil.
Sådan oprettes en brugerdefineret Bash-prompt
Din Bash-promptkonfiguration er gemt i PS1-variablen. For at gemme indholdet af PS1-variablen i en ny variabel skal du køre følgende kommando:
STANDARD = $ PS1
Du kan nu indstille PS1-variablen til forskellige værdier for at eksperimentere. For eksempel vil den første linje her indstille din prompt til en grundlæggende "bruger $" -prompt, mens den anden vil indstille din prompt til en grundlæggende "bruger: working_directory $" -prompt.
PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"
Hvis du nogensinde vil vende tilbage til din standardprompt, skal du bare køre følgende kommando.
PS1 = $ STANDARD
Bash gendannes til sin standardprompt takket være det faktum, at du gemte disse standardindstillinger tidligere. Bemærk, at eventuelle ændringer, du foretager her, kun er midlertidige for den aktuelle Bash-session, så du kan altid logge ud og logge ind igen eller lukke og åbne terminalvinduet igen for at gå tilbage til din standardprompt. Men ovenstående linje gør det muligt nemt at komme tilbage til din standard Bash-prompt uden besværet med at logge ud eller lukke et vindue.
Du kan tilføje alle tegn eller tekst til variablen. Så for at prefixe "Hello World" til standardprompten kan du bruge:
PS1 = "Hej verden \ u @ \ h: \ w \ $"
Nu hvor du har det grundlæggende nede, skal du bare vide, hvad alle specialtegn er. Du er sandsynligvis ikke ligeglad med mange af disse, men her er den fulde liste, som den vises i Bash manualen :
-
En klokke karakter:
\en -
Datoen i formatet "Ugedag Månedsdato" (f.eks. "Tir 26. maj"):
\ d -
Formatet sendes til strftime (3), og resultatet indsættes i promptstrengen; et tomt format resulterer i en lokalspecifik tidsrepræsentation. Seler kræves:
\ D{format} -
En flugtkarakter:
\er -
Værtsnavnet, op til den første '.':
\ h -
Værtsnavnet:
\ H -
Antallet af job, der i øjeblikket administreres af skallen:
\ j -
Basenavnet på shellens terminalenhedsnavn:
\ l -
A newline:
\ n -
En vognretur:
\ r -
Navnet på skallen, basenavnet på $ 0 (den del, der følger den sidste skråstreg):
\ 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 -
Brugernavnet til den aktuelle bruger:
\ u -
Versionen af Bash (f.eks. 2,00):
ev -
Udgivelsen af Bash, version + patchlevel (f.eks. 2.00.0):
EV -
Den aktuelle arbejdsmappe med $ HOME forkortet med en tilde (bruger variablen $ PROMPT_DIRTRIM):
\i -
Basenavnet på $ PWD med $ HOME forkortet med en tilde:
\I -
Historiknummeret på denne kommando:
\! -
Kommandonummeret for denne kommando:
\# -
Hvis den effektive uid er 0, #, ellers $:
\$ -
Tegnet, hvis ASCII-kode er den oktale værdi nnn:
\ nnn -
Et tilbageslag
\\ -
Begynd en sekvens af tegn, der ikke udskrives. Dette kunne bruges til at integrere en terminal kontrolsekvens i prompten:
\[ -
Afslut en række tegn, der ikke udskrives:
\]
Så hvis du vil tilføje dato og klokkeslæt til din Bash-prompt og sætte arbejdsmappen på kommando på en anden linje, kan du bruge følgende konstruktion:
PS1 = "[\d \t] \ u @ \ h \ n \ w \ $"
De firkantede parenteser her er slet ikke nødvendige, men hjælper med at bryde tingene visuelt op og gøre linjen lettere at læse. Som vi dækkede tidligere, kan du tilføje enhver tekst eller normale tegn til den variabel, du kan lide, så er du velkommen til at bruge det, der fungerer for dig.
Der er et mere kraftfuldt trick, du bør vide om: Du kan føje output fra enhver kommando til prompten. Når prompten vises, kører Bash kommandoen og udfylder de aktuelle oplysninger. For at gøre dette skal du blot inkludere enhver kommando, du vil køre mellem to
`
tegn. Det er ikke en apostrof - det er den alvorlige accent, der vises over Tab-tasten på dit tastatur.
Lad os for eksempel sige, at du vil se Linux-kerneversionen i prompten. Du kan bruge en linje som følgende:
PS1 = "\ u @ \ h på ʻuname -s -r` \ w \ $"
Lad os som et andet eksempel se, at du vil se systemets oppetid og gennemsnitsbelastning som vist af
oppetid
kommando. Du kan bruge følgende konstruktion, som sætter oppetiden på sin egen linje før resten af prompten.
PS1 = "(ʻuptime`) \ n \ u @ \ h: \ w $"
Du er velkommen til at eksperimentere med forskellige specialtegn og kommandoer for at samle din ideelle kommandoprompt.
Sådan tilføjes farver til din Bash-prompt
Når du har fundet ud af din foretrukne prompt, kan du tilføje farver til den. Dette er faktisk meget simpelt, men det får variablen til at se frygtelig rodet og kompliceret ud, hvis du ikke forstår, hvad du ser på.
For eksempel var standardvariablen for farveprompten fra tidligere:
$ {debian_chroot:+($debian_chroot)} \ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
Eller ved at fjerne debian_chroot-bitene igen:
\ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
Dette er faktisk bare det
\ u @ \ h: \ w $
variabel fra tidligere, men med farveinformation. Virkelig kan vi opdele det i et par sektioner:
\[\033[01;32m\]\ u @ \ h\[\033[00m\]:\[\033[01;34m\]\i\[\033[00m\]\$
Den første sektion er
\ u @ \ h
forud for farveoplysninger, der gør det grønt. Den anden er
:
forud for farveoplysninger, der fjerner enhver farve. Den tredje er
\i
bit, efterfulgt af farveinformation, der gør den blå. Den fjerde er
\$
bit forud for farveoplysninger, der fjerner enhver farve.
Når du først har forstået, hvordan du konstruerer dine egne farvekoder, kan du tilføje de farver, du kan lide, til de sektioner af din Bash-prompt, du kan lide.
Her er hvad du skal vide: Du skal medtage hele informationen om farvekoden mellem
\[
og
\] Karakter
s. Inde i tagget skal du begynde med en af dem
\033[
eller
\er[
for at indikere for Bash, at dette er farveinformation. Begge
\033[
og
\er[
gør det samme.
\er[
er kortere, så det kan være mere praktisk at bruge, men vi bruger det
\033[
her, da det matcher det, der bruges som standard. I slutningen af tagget skal du slutte med
m \
for at angive slutningen af et farvemærke.
Ved at nedbryde det, her er hvordan hvert farvetag vil se ud. Den eneste forskel er de oplysninger, du tilføjer i stedet for FARVE for at definere den faktiske farve:
\[\033[FARVEm \]
Bash giver dig mulighed for at ændre farven på forgrundsteksten, tilføje attributter som "fed" eller "understregning" til teksten og indstille en baggrundsfarve.
Her er værdierne for forgrundsteksten:
- Sort: 30
- Blå: 34
- Cyan: 36
- Grøn: 32
- Lilla: 35
- Rød: 31
- Hvid: 37
- Gul: 33
Da f.eks. Lilla tekst er farvekode 32, skal du bruge den
\[\033[
32
m \]
til lilla tekst.
Du kan også angive en attribut til teksten. Denne attribut skal tilføjes før farvenummeret adskilt af et semikolon (;). Tekst med disse attributter vil se anderledes ud i forskellige terminalemulatorer.
Her er værdierne for tekstattributter:
- Normal tekst: 0
- Fed eller lys tekst: 1 (Det afhænger af terminalemulatoren.)
- Dæmp tekst: 2
- Understreget tekst: 4
- Blinkende tekst: 5 (Dette fungerer ikke i de fleste terminalemulatorer.)
- Omvendt tekst: 7 (Dette inverterer forgrunds- og baggrundsfarverne, så du kan se sort tekst på en hvid baggrund, hvis den aktuelle tekst er hvid tekst på en sort baggrund.)
- Skjult tekst: 8
Du behøver faktisk ikke medtage den normale tekstattribut. Det er alligevel standard.
Da rød tekst f.eks. Er kode 31 og fed tekst er kode 1, skal du bruge den
\[\033[
1;31
m \]
for fed rød tekst.
Du kan også angive en baggrundsfarve, men du kan ikke føje en attribut til en baggrundsfarve.
Her er værdierne for baggrundsfarver:
- Sort baggrund: 40
- Blå baggrund: 44
- Cyan baggrund: 46
- Grøn baggrund: 42
- Lilla baggrund: 45
- Rød baggrund: 41
- Hvid baggrund: 47
- Gul baggrund: 43
Da en blå baggrund f.eks. Er kode 44,
\[\033[
44
m \]
angiver en blå baggrund.
Du kan specificere både forgrunds- og baggrundsfarvemærker. For eksempel repræsenterer 42 en grøn baggrund og 31 repræsenterer rød tekst. Så for at få standardprompten til at blive rød tekst på en grøn baggrund, skal du bruge:
Ψ1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "
Vi angiver bare en enkelt baggrundsfarve og derefter en enkelt forgrunds tekstfarve her, som begynder ved starten af prompten og anvendes på al tekst i prompten. Du kan dog angive så mange farvekoder, som du vil, i variablen for at farve forskellige sektioner af din prompt, hvor du vil.
Baggrunds- og forgrundstekstfarverne fortsætter forbi prompten, medmindre du angiver farvekode 00, rydder farveoplysningerne. Du kan også bruge dette tag inden for variablen til at nulstille formatering tilbage til standard et eller andet sted i din prompt. For eksempel vil følgende linje afslutte al farvning før
\$
Karakter.
Ψ1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "
Sådan indstilles din nye standardprompt
Når du er færdig med at eksperimentere med farver, skal du have en Bash-prompt, som du kan lide i den aktuelle session. Men du vil sandsynligvis gøre den nye prompt permanent, så den bruges automatisk i alle dine Bash-sessioner.
For at gøre dette skal du bare ændre indholdet af PS1-variablen i .bashrc-filen, som vi kiggede på tidligere.
Åbn .bashrc-filen i din foretrukne teksteditor, sådan:
nano ~ / .bashrc
Rul ned og find sektionen PS1 =. Udskift blot standardvariablen med din tilpassede variabel. Du vil sandsynligvis gerne forlade
${debian_chroot:+($debian_chroot)}
bit alene - de vises dog ikke, medmindre du er i et chroot-miljø, alligevel.
Indtast din farvede PS1-variabel under
hvis [ "$color_prompt" = yes ]; derefter
linje. Indtast variablen uden farver under
andet
linje.
Gem filen, og luk din teksteditor. Hvis du f.eks. Vil gemme filen i nano, skal du trykke på Ctrl + O, trykke på Enter og derefter trykke på Ctrl + X for at afslutte.
Næste gang du starter en ny Bash shell - for eksempel ved at logge ind på terminalen eller ved at åbne et nyt terminalvindue - får du vist din tilpassede prompt.