Hjemmeside » hvordan » Sådan tilpasses (og farveliseres) din Bash Prompt

    Sådan tilpasses (og farveliseres) din Bash Prompt

    De fleste Linux-distributioner konfigurerer Bash-prompten for at se noget ud brugernavn @ værtsnavn: mappe $ . Men du kan konfigurere Bash-prompten for at indeholde hvad du vil, og endda vælge hvilke farver du kan lide.

    Eksemplet trin her blev udført på Ubuntu 16.04 LTS. Processen skal være den samme på andre Linux-distributioner, selvom standard Bash-prompten og indstillinger i .bashrc-filen kan være lidt anderledes.

    Hvor den hurtige variabel er lagret

    Din Bash-hurtig konfiguration er gemt i din brugerkonto .bashrc-fil, som er på ~ / .Bashrc. Så hvis dit brugernavn er Bob, er filen hos /home/bob/.bashrc.

    Du kan åbne filen for at se den aktuelle Bash-variabel. Vi bruger nano som vores tekstredigeringsprogram, selvom du også kan bruge vi, emacs eller andre tekstredigeringsprogrammer, som du er fortrolig med. Åbn en terminal og kør:

    nano ~ / .bashrc

    Rul ned til PS1 = afsnit. Den første variabel ser lidt kompliceret ud, fordi den indeholder farveinformation - vi forklarer det 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, om du bruger et Debian chroot-miljø og normalt ikke vil blive vist. Ignorerer dem, her er standardstrukturen for Bash-hurtigvariablen:

    \ U @ \ h: \ w \ $

    \ u Indikerer dit brugernavn, @ angiver @ -tegnet, \ h angiver værtsnavnet (computernavn), : Indikerer: tegn, \ w angiver arbejdskataloget og \ $ Indikerer en $, hvis du er en normal brugerkonto eller # hvis du er root. Så sætter alt sammen, får du brugernavn @ værtsnavn: working_directory $.

    For at ændre din Bash-prompte skal du bare tilføje, fjerne eller omorganisere specialtegnene i PS1-variablen. Men der er mange flere variabler, du kan bruge end standarderne.

    Forlad teksteditoren for nu-i nano, tryk 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 baseprompt

    Din Bash prompt konfiguration er gemt i PS1 variablen. For at gemme indholdet af PS1-variablen i en ny variabel, skal du køre følgende kommando:

    DEFAULT = $ PS1

    Du kan nu indstille PS1-variablen til forskellige værdier for at eksperimentere. For eksempel vil den første linje her sætte din prompt til en grundlæggende "bruger $" -prompt, mens den anden ville sætte din prompt til en grundlæggende "bruger: working_directory $" prompt.

    PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"

    Hvis du nogensinde vil komme tilbage til din standardprompt, skal du bare køre følgende kommando.

    PS1 = $ DEFAULT

    Bash vil blive gendannet til standardprompt takket være det faktum, at du tidligere har gemt disse standardindstillinger. Bemærk, at eventuelle ændringer, du foretager her, kun er midlertidige for den aktuelle Bash-session, så du altid kan logge ud og logge ind eller lukke og genåbne terminalvinduet for at gå tilbage til din standardprompt. Men ovenstående linje gør det muligt at nemt komme tilbage til din standard Bash-prompt uden besværet med at logge ud eller lukke et vindue.

    Du kan tilføje eventuelle tegn eller tekst til variablen. Så for at prefix standardprompten med "Hello World" kan du bruge:

    PS1 = "Hej verden \ u @ \ h: \ w \ $"

    Nu hvor du har det grundlæggende, skal du bare vide, hvad alle specialtegnene er. Du vil nok ikke bekymre dig om mange af disse, men her er den fulde liste som det fremgår af Bash-manualen:

    • En klokke karakter: \en
    • Datoen, i formatet "Weekday Month Date" (fx "Tue May 26"): \ d
    • Formatet sendes til strftime (3), og resultatet indsættes i promptstrengen; et tomt format resulterer i en lokal-specifik tidsrepræsentation. Bøjlerne er påkrævet: \ D format
    • En flugtperson: \ e
    • Værtsnavnet, op til den første '.': \ h
    • Værtsnavnet: \ H
    • Antallet af jobs, der for øjeblikket forvaltes af skallen: \ j
    • Basenavnet på skalens terminale enhedsnavn: \ l
    • En ny linje: \ n
    • En vognretur: \ r
    • Navets navn, basenavnet på $ 0 (den del, der følger den endelige 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 for den aktuelle bruger: \ u
    • Versionen af ​​Bash (fx 2,00): \ v
    • Frigivelsen af ​​Bash, version + patchlevel (fx 2,00,0): \ V
    • Den nuværende arbejdsmappe, hvor $ HOME forkortes med en tilde (bruger varianten $ PROMPT_DIRTRIM): \ w
    • Basenavnet på $ PWD, med $ HOME forkortet med en tilde: \ W
    • Historik nummeret for denne kommando: \!
    • Kommandoenummeret for denne kommando: \ #
    • Hvis den effektive uid er 0, #, ellers $: \ $
    • Tegnet, hvis ASCII-kode er den oktale værdi nnn: \ nnn
    • En tilbageslag: \\
    • Start en sekvens af tegn uden tegn. Dette kan bruges til at indlejre en terminal kontrol sekvens i prompt: \ [
    • Afslut en sekvens af tegn uden tegn: \]

    Så hvis du ønskede at tilføje datoen og klokkeslættet til din Bash-prompte og sætte arbejdskataloget på kommando på en anden linje, kan du bruge følgende konstruktion:

    PS1 = "[\ d \ t] \ u @ \ h \ n \ w \ $"

    De firkantede parenteser her er ikke nødvendige, men hjælper med at bryde op visuelt og gøre linjen lettere at læse. Som vi tidligere har dækket, kan du tilføje enhver tekst eller normale tegn til den variabel, du kan lide, så vær så velkommen til at bruge det, der virker for dig.

    Der er et mere kraftigt trick du bør vide om: Du kan tilføje output fra en kommando til prompten. Når prompten vises, vil Bash køre kommandoen og udfylde den aktuelle information. For at gøre dette skal du blot inkludere en kommando, du vil køre mellem to ' tegn. Det er ikke en apostrof, det er den store accent, der vises over fanen Tast på tastaturet.

    Lad os f.eks. 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 \ $"

    Som et andet eksempel, lad os sige, at du vil se systemets uptime og load average, som vist af oppetid kommando. Du kan bruge følgende konstruktion, som sætter opetid på sin egen linje før resten af ​​prompten.

    PS1 = "('oppetid') \ 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 prompte, kan du tilføje farver til den. Dette er faktisk meget simpelt, men det gør variablen ser forfærdeligt rodet og kompliceret, hvis du ikke forstår, hvad du kigger på.

    For eksempel var standardfarvevarervariablen fra tidligere:

    $ Debian_chroot: + ($ debian_chroot) \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $

    Eller fjerne debian_chroot-bitene igen:

    \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $

    Dette er faktisk bare den \ U @ \ h: \ w $ variabel fra tidligere, men med farveinformation. Virkelig kan vi bryde det ned i nogle få afsnit:

    \ [\ 033 [01; 32m \]\ U @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \]\ w \ [\ 033 [00m \]\ $

    Det første afsnit er \ U @ \ h bit, forud for farveinformation, der gør den grøn. Den anden er : tegn, forud for farveinformation, der fjerner farvning. Den tredje er \ w bit, forud for farveinformation, der gør den blå. Den fjerde er \ $ bit, forud for farveinformation, der fjerner farvning.

    Når du først har forstået, hvordan du selv kan opbygge farvekoder, kan du tilføje de farver, du kan lide, uanset hvilke dele af din Bash du spørger om.

    Her er hvad du skal vide: Du skal inkludere hele farvekoden informationen mellem \ [  og \] Karakters. Inden i taggen skal du begynde med enten \ 033 [ eller \ E [ at angive til Bash at dette er farveinformation. Begge \ 033 [ og \ E [ gør det samme. \ E [ er kortere, så det kan være mere bekvemt at bruge, men vi bruger \ 033 [ her som det passer til det, der bruges som standard. I slutningen af ​​tagget skal du slutte med m \ for at angive enden af ​​en farve mærke.

    Bryde det ned, her er hvad hver farve mærke vil se ud. Den eneste forskel er de oplysninger, du tilføjer i stedet for COLOR, for at definere den faktiske farve:

    \ [\ 033 [FARVEm \]

    Bash giver dig mulighed for at ændre farven på forgrunds tekst, tilføje attributter som "fed" eller "understrege" til teksten og indstille en baggrundsfarve.

    Her er værdierne for forgrunds tekst:

    • Sort: 30
    • Blå: 34
    • Cyan: 36
    • Grøn: 32
    • Lilla: 35
    • Rød: 31
    • Hvid: 37
    • Gul: 33

    For eksempel, da lilla tekst er farvekode 32, vil du bruge \ [\ 033 [32m \]  for lilla tekst.

    Du kan også angive en attribut for 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.)
    • Dim tekst: 2
    • Understreget tekst: 4
    • Blinkende tekst: 5 (Dette virker ikke i de fleste terminalemulatorer.)
    • Omvendt tekst: 7 (Dette omdanner forgrunds- og baggrundsfarverne, så du får vist sort tekst på en hvid baggrund, hvis den nuværende tekst er hvid tekst på en sort baggrund.)
    • Skjult tekst: 8

    Du behøver faktisk ikke at medtage den normale tekstattributt. Det er alligevel standard.

    For eksempel, da rød tekst er kode 31 og fed tekst er kode 1, vil du bruge \ [\ 033 [1; 31m \] for fed rød tekst.

    Du kan også angive en baggrundsfarve, men du kan ikke tilfø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

    For eksempel, da en blå baggrund er kode 44, \ [\ 033 [44m \] vil angive en blå baggrund.

    Du kan angive både forgrunds- og baggrundsfarvekoder. For eksempel repræsenterer 42 en grøn baggrund og 31 repræsenterer rød tekst. Så for at gøre standardprompten til at blive rød tekst på en grøn baggrund, vil du bruge:

    PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "

    Vi angiver blot en enkelt baggrundsfarve og derefter en enkelt forgrunds tekstfarve her, som begynder i starten af ​​prompten og anvendes til al tekst i prompten. Du kan dog angive så mange farvekoder som du vil have i variablen til at farve forskellige afsnit af din prompt, men du vil.

    Baggrunds- og forgrunds tekstfarverne fortsætter forbi prompten, medmindre du angiver farvekode 00, fjerner du farveoplysningerne. Du kan også bruge dette mærke inden for variablen for at nulstille formatering tilbage til standard et sted i din prompt. For eksempel vil den følgende linje afslutte al farvning før \ $ Karakter.

    PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "

    Sådan indstiller du din nye standardprompt

    Når du er færdig med at eksperimentere med farver, skal du have en Bash-prompten, du kan lide i den aktuelle session. Men du vil sikkert gøre den nye hurtig permanent, så den bruges automatisk i alle dine Bash-sessioner.

    For at gøre dette behøver du bare at ændre indholdet af PS1-variablen i .bashrc-filen, som vi kiggede på tidligere.

    Åbn .bashrc-filen i din foretrukne teksteditor, som sådan:

    nano ~ / .bashrc

    Rul ned og find PS1 = sektionen. Udskift kun standardvariablen med din tilpassede variabel. Du vil nok gerne forlade $ Debian_chroot: + ($ debian_chroot)  bit alene, men de vil ikke vises, medmindre du er i et chroot miljø, alligevel.

    Indtast din farvede PS1 variabel under hvis ["$ color_prompt" = ja]; derefter linje. Indtast variablen uden farver under andet linje.

    Gem filen og luk tekstredigeringsprogrammet. For eksempel at gemme filen i nano, tryk Ctrl + O, tryk Enter, og tryk derefter på Ctrl + X for at afslutte.

    Næste gang du starter en ny Bash-shell, f.eks. Ved at logge ind på terminalen eller ved at åbne et nyt terminalvindue, kan du se din tilpassede prompt.