Hvordan tilpasse kommandoprompten i bash

I bash-skallet er kommandoprompten teksten som vises når du blir bedt om å skrive inn. På de fleste systemer ser det slik ut:

I spørringen kan du få informasjon før du kjører noen kommandoer. For eksempel viser spørringen ovenfor deg følgende.

  1. hvem du er (en bruker som heter bruker )
  2. hvor du er (en datamaskin som heter myhost )
  3. hva arbeidskatalogen din er ( ~, som er en forkortelse for hjemmekatalogen din)

Kanskje viktigst er dollartegnet (" $ "), som er et spesialtegn som indikerer at du er logget inn som en ikke-rotbruker. Hvis du var logget inn som root, ville dette tegnet være et pundstegn (" # ") i stedet.

Strengen som representerer spørringen, lagres i den spesielle miljøvarianten som heter PS1 . For spørringen ovenfor, ser dens verdi ut som følgende.

 "\ [email protected] \ h: \ W \ $" 

Det er fire spesialtegn i denne strengen: \ u, \ h, \ W, \ $ . Dette er escaped karakter sekvenser som erstattes med faktiske verdier hver gang spørringen vises.

Spesielle karakterer

Spesielle tegnsekvenser som er oppført i tabellen nedenfor, kan brukes i bash shell prompt.

Tegn sekvensOversetter til
\en"Alarmen" -karakteren. Utløser et pip eller en skjermblits
\ dNåværende dato, vises i formatet Ukedag Måned Dato (f.eks. Onsdag 13. mai ).
\ D { format }Nåværende dato og klokkeslett som vises i henhold til formatet som tolket av strftime . Hvis formatet utelates, viser \ D {} nåværende 12-timers AM / PM-tid (f.eks. 07:23:01 ).
\ eEt fluktegn (ASCII 27)
\ e [ nummer mAngir begynnelsen på en sekvens som skal vises i farge, hvor tallet er et tall eller et par tall, som angir hvilken farge og stil som skal brukes. Se nedenfor for en liste over farger og deres nummerpar.
\ e [MAngir slutten av en sekvens som skal vises i farge.
\ hVertsnavnet til maskinen, opp til den første " . " For eksempel, hvis systemets vertsnavn er myhost.mydomain, viser h myhost
\ HMaskinens fulle vertsnavn.
\ jAntall jobber som styres av skallet.
\ lSkallets terminalapparatidentifikator, vanligvis et enkeltsifret nummer.
\ nEn ny linje
\ rVognretur
\ sNavnet på skallet (basenavnet til prosessen som startet den nåværende bash-sesjonen).
\ tNåværende tidspunkt som vises i 24-timers HH: MM: SS-format (f.eks. 19:23:01 ).
\ TNåværende tid som vises i 12-timers HH: MM: SS-format (f.eks. 07:23:01 ).
\ @Nåværende tidspunkt som vises i 12-timers HH: MM: SS AM / PM-format (f.eks. 07:23:01 ).
\ENNåværende tid i 24-timers HH: MM-format, (f.eks. 19:23 ).
\ uBrukernavnet til den nåværende brukeren.
\ vBash-versjonsnummer (f.eks. 4.3 ).
\ VBash versjon og oppdateringsnummer (f.eks. 4.3.30 ).
\ wDen nåværende katalogen. Brukerens hjemmekatalog forkortes som en tilde (" ~ "). For eksempel, / usr / bin, ~, eller ~ / dokumenter
\ WBasenavnet til gjeldende arbeidskatalog (f.eks. Bin, ~ eller dokumenter ).
\!Historikknummeret til den nåværende kommandoen.
\ #Kommandoenummeret til den nåværende kommandoen (kommandonumre er som historikknumre, men de nullstilles når du starter en ny bash-økt).
\ nnnASCII-karakteren hvis oktalverdi er nnn.
\\Et tilbakeslag
\ [Merker begynnelsen av en hvilken som helst rekkefølge av ikke-utskriftstegn, for eksempel terminalkontrollkoder.
\]Merker slutten av en ikke-utskriftssekvens.
\ $Skriver # hvis UID er null (superbruker), eller $ hvis større enn null (noen andre).

Endre spørringen for gjeldende økt

Du kan angi PS1- miljøvariabelen som du ville noen annen variabel i bash, med setningsskjemaet NAME = VALUE . Så for å angi standardprompten, kan du skrive følgende på kommandolinjen.

 PS1 = "\ [email protected] \ h: \ W \ $" 

... og din prompt vil øyeblikkelig endres. Legg merke til det endelige rommet etter at dollartegnet er registrert i strengen for ekstra plass etter at du har spurt, noe som gjør det lettere å skille mellom kommandoene du skriver fra spørringen. Den ekstra plassen er ikke nødvendig, men det anbefales.

Legg merke til at i kommandoen er det ingen mellomrom mellom PS1, = og strengen.

Endre spørringen for alle fremtidige økter

Hvis du vil endre spørringen for hver ny sesjon, må du redigere bash oppstartsfiler. Hver gang du starter en terminal økt, blir følgende filer, hvis de eksisterer, lest inn og utført som skript:

/ etc / profile ~ / .bash_profile ~ / .bash_login

~ / .Profile

Den første filen, / etc / profil, er et oppstartskript for enhver bruker på systemet som starter en bash-økt. For å endre spørringen for hver bruker, må du redigere denne filen, og du trenger superuserrettigheter for å gjøre det.

 sudo vi / etc / profil 

For eksempel vil kommandoen ovenfor spørre deg om passordet ditt, og hvis du er på sudoerslisten, åpner du universell bash oppstartfilen som superbruker, ved hjelp av vi- editoren.

De andre tre filene er etterspurt i den rekkefølgen som er oppført ovenfor og utført etter / etc / profile . Disse tre filene bor i hjemmekatalogen din, så de utføres bare for deg. De kan definere PS1 på mer enn ett sted, så du bør lese filene nøye for å se hvordan de er konfigurert på systemet. For eksempel vil mange systemer bruke en annen PS1-verdi avhengig av om terminalen din støtter farge eller ikke.

Noen av de tre filene kan eksistere og brukes til bash-sesjonen din, men hvis det er mer enn én, vil de bli henrettet i den rekkefølgen som er oppført.

Hvis du ikke vil slette eller endre linjer i oppstartsfilene dine, kan du også legge til en ny PS1 = setning til slutten av en av filene dine for å bruke en egendefinert melding.

Legge til farge til din spørsmål

Hvis du bruker en terminal som støtter farge (og du sannsynligvis er), kan du legge til farge til spørringen din. Farger legges til ved hjelp av spesielle tegnsekvenser som følger dette formatet:

\ e [ nummer mBegynner en farget seksjon. Tallverdien er et spesielt nummer, eller et par tall, som spesifiserer fargen.
\ e [MBetegner slutten av den fargede delen; Tilbakestiller til standardfarge

For eksempel, spørre streng:

 PS1 = "\ e [1; 35mDette er lyse lilla. \ E [0; 35m ... og dette er mørk lilla. \ E [m" 

Vil gi en melding som ser slik ut:

Her er en liste over farger du kan bruke, og tallene som angir dem:

Number (s)Farge / StilNumber (s)Farge / Stil
0; 30Svart1; 30Mørkegrå
0; 31rød1; 31Lysrød
0; 32Grønn1; 32Lysegrønn
0; 33brun1; 33Gul
0; 34Blå1; 34Lyseblå
0; 35Purple1; 35Bright Purple
0; 36cyan1; 36Bright Cyan
0; 37Grå1; 37Hvit
4; 30Svart, understreket40Bakgrunn: Mørkegrå
4; 31Rød, understreket41Bakgrunn: Rød
4; 32Grønn, understreket42Bakgrunn: Grønn
4; 33Brun, understreket43Bakgrunn: Gul
4; 34Blå, understreket44Bakgrunn: Blå
4; 35Lilla, understreket45bakgrunn: lilla
4; 36Cyan, understreket46bakgrunn: Cyan
4; 37Grå, understreket47Bakgrunn: Grå

Her er noen eksempler, og hvordan de ser ut:

 PS1 = "\ e [0; 32mGreen \ e [0; 33mBrown \ e [0; 34mBlue \ e [0; 35mPurple \ e [0; 36mCyan \ e [0; 37mGray \ e [m" 

 PS1 = "Understreket: \ e [4; 32mGreen \ e [4; 33mGray \ e [4; 34mBlue \ e [4; 35mPurple \ e [4; 36mCyan \ e [4; 37mGray \ e [ m" 

 PS1 = "\ e [44m \ e [1; 35mBright lilla på en blå bakgrunn \ e [m"