Så här anpassar du (och färglägger) din basprompt
De flesta Linux-distributioner konfigurerar Bash-prompten för att se något ut användarnamn @ värdnamn: katalog $
. Men du kan konfigurera Bash-prompten för att innehålla vad du vill, och även välja vilka färger du vill.
Exemplet steg här utfördes på Ubuntu 16.04 LTS. Processen ska vara densamma på andra Linux-distribueringar, även om standard Bash-prompten och inställningarna i .bashrc-filen kan vara lite annorlunda.
Där snabbvariabeln är lagrad
Din Bash-snabbkonfiguration lagras i ditt användarkonto .bashrc-fil, som är på ~ / .Bashrc
. Så, om ditt användarnamn är Bob, är filen på /home/bob/.bashrc
.
Du kan öppna filen för att visa aktuell Bash-variabel. Vi använder nano som vår textredigerare, även om du också kan använda vi, emacs eller någon annan textredigerare du är bekväm med. Öppna en terminal och kör:
nano ~ / .bashrc
Bläddra ner till PS1 =
sektion. Den första variabeln ser ganska komplicerad ut eftersom den innehåller färginformation-vi kommer att förklara det senare. Den andra variabeln, utan färginformation, lyder som följer:
$ Debian_chroot: + ($ debian_chroot) \ u @ \ h: \ w \ $
Detta är fortfarande lite komplicerat på grund av $ Debian_chroot: + ($ debian_chroot)
bitar. Dessa berättar bara att Bash ska meddela om du använder en Debian chroot-miljö och normalt inte visas. Ignorerar dem, här är standardstrukturen för Bash-snabbvariabeln:
\ U @ \ h: \ w \ $
\ u
anger ditt användarnamn, @
indikerar @ -tecknet, \ h
anger värdnamnet (datornamn), :
indikerar: tecknet, \ w
anger arbetsboken och \ $
Indikerar en $ om du är ett normalt användarkonto eller # om du är root. Så, sätta allt tillsammans, får du användarnamn @ värdnamn: working_directory $
.
För att ändra din Bash-prompten behöver du bara lägga till, ta bort eller omordna specialtecken i PS1-variabeln. Men det finns många fler variabler du kan använda än standarden.
Lämna textredigeraren för nu-i nano, tryck Ctrl + X för att avsluta. Vi visar dig hur du experimenterar med variabler innan du faktiskt skriver en ny i din .bashrc-fil.
Så här skapar du en anpassad basfråga
Din Bash-snabbkonfiguration lagras i PS1-variabeln. För att spara innehållet i PS1-variabeln i en ny variabel, kör följande kommando:
DEFAULT = $ PS1
Du kan nu ställa in PS1-variabeln till olika värden för att experimentera. Till exempel skulle den första raden här ställa in din prompt till en grundläggande "user $" -prompt, medan den andra skulle ställa in din fråga till en grundläggande "användare: working_directory $" -prompt.
PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"
Om du någonsin vill komma tillbaka till din standardprompt, kör bara följande kommando.
PS1 = $ DEFAULT
Bash kommer att återställas till standardinställningen tack vare det faktum att du sparat dessa standardinställningar tidigare. Observera att alla ändringar du gör här bara är tillfälliga för den aktuella Bash-sessionen så att du alltid kan logga ut och logga in igen eller stänga och återuppta terminalfönstret för att återgå till standardinställningen. Men ovanstående rad gör det möjligt att enkelt komma tillbaka till din standard Bash-prompten utan att behöva logga ut eller stänga ett fönster.
Du kan lägga till några tecken eller text till variabeln. Så, för att prefixa standardprompten med "Hello World", kan du använda:
PS1 = "Hej världen \ u @ \ h: \ w \ $"
Nu när du har grunderna nere behöver du bara veta vad alla specialtecken är. Du kommer nog inte att bry sig om många av dessa, men här är den fullständiga listan som den visas i Bash-handboken:
- En klocktecken:
\en
- Datumet, i formatet "Weekday Month Date" (t ex "tis 26 maj"):
\ d
- Formatet skickas till strftime (3) och resultatet sätts in i snabbsträngen; ett tomt format resulterar i en lokal-specifik tidsrepresentation. Fästena krävs:
\ D format
- En flyktighet:
\ e
- Värdenavnet, upp till den första ".":
\ h
- Värdnamnet:
\ H
- Antalet jobb som för närvarande hanteras av skalet:
\ j
- Basnamnet på skalets terminala enhetens namn:
\ l
- En ny linje:
\ n
- En vagnretur:
\ r
- Namnet på skalet, basnamnet på $ 0 (delen som följer den slutliga snedstrecket):
\ s
- Tiden i 24-timmars HH: MM: SS-format:
\ t
- Tiden i 12-timmars HH: MM: SS-format:
\ T
- Tiden, i 12-timmars am / pm-format:
\ @
- Tiden i 24h HH: MM-format:
\EN
- Användarnamnet för den nuvarande användaren:
\ u
- Versionen av Bash (t ex 2,00):
\ v
- Frigivelsen av Bash, version + patchlevel (t ex 2,00,0):
\ V
- Den nuvarande arbetsmappen, där $ HOME förkortas med en tilde (använder variabel $ PROMPT_DIRTRIM):
\ w
- Basnamnet på $ PWD, med $ HOME förkortat med en tilde:
\ W
- Historiknumret för det här kommandot:
\!
- Kommandonummeret för det här kommandot:
\ #
- Om den effektiva uid är 0, #, annars $:
\ $
- Tecknet vars ASCII-kod är oktaltalet nnn:
\ nnn
- En backslash:
\\
- Börja en sekvens av tecken som inte skrivs ut. Detta kan användas för att inbädda en terminal kontrollsekvens i prompten:
\ [
- Avsluta en sekvens av tecken som inte skrivs ut:
\]
Så om du vill lägga till datum och tid för din Bash-prompten och sätta arbetskatalogen på kommandot på en andra rad, kan du använda följande konstruktion:
PS1 = "[\ d \ t] \ u @ \ h \ n \ w \ $"
Kvadratkonsolen här är inte nödvändigt alls, men hjälper till att bryta upp saker visuellt och göra linjen lättare att läsa. Som vi tidigare täckt kan du lägga till text eller normala tecken till den variabel du gillar, så gärna använda vad som helst för dig.
Det finns ett mer kraftfullt knep som du borde veta om: Du kan lägga till resultatet av ett kommando till prompten. När prompten visas kommer Bash att köra kommandot och fylla i den aktuella informationen. För att göra detta, inkludera bara ett kommando du vill springa mellan två '
tecken. Det är inte en apostrof - det är den grava accenten som visas ovanför Tab-tangenten på tangentbordet.
Låt oss säga att du vill se Linux-kärnversionen i prompten. Du kan använda en rad som följande:
PS1 = "\ u @ \ h på 'uname -s -r' \ w \ $"
Som ett annat exempel, låt oss säga att du vill se systemets upptid och belastningsgenomsnitt, som visas av drifttid
kommando. Du kan använda följande konstruktion, vilket ställer upptidstiden på egen linje innan resten av prompten.
PS1 = "(uppetid) \ n \ u @ \ h: \ w $"
Känn dig fri att experimentera med olika specialtecken och kommandon för att montera din ideala kommandotolk.
Så här lägger du till färger i din basprompt
När du väl har bestämt din önskad prompning kan du lägga till färger på den. Det här är faktiskt mycket enkelt, men det gör att variabeln ser väldigt rörigt och komplicerat om du inte förstår vad du tittar på.
Exempelvis var standardvariabelvariabeln från tidigare:
$ Debian_chroot: + ($ debian_chroot) \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $
Eller, ta bort debian_chroot-bitarna igen:
\ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $
Detta är egentligen bara \ U @ \ h: \ w $
variabel från tidigare men med färginformation. Egentligen kan vi bryta ner det i några avsnitt:
\ [\ 033 [01; 32m \]\ U @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \]\ w \ [\ 033 [00m \]\ $
Det första avsnittet är \ U @ \ h
bit, föregås av färginformation som blir den grön. Den andra är :
karaktär, föregås av färginformation som tar bort eventuell färgning. Den tredje är \ w
bit, föregås av färginformation som blir blå. Den fjärde är \ $
bit, föregås av färginformation som tar bort eventuell färgning.
När du förstår hur du själv konstruerar färgmärken kan du lägga till vilka färger du gillar till vilka delar av din Bash som du vill.
Här är vad du behöver veta: Du måste inkludera hela färgkodsinformationen mellan \ [
och \] karaktär
s. Inuti taggen måste du börja med \ 033 [
eller \ E [
för att indikera för Bash att detta är färginformation. Både \ 033 [
och \ E [
gör samma sak. \ E [
är kortare så det kan vara bekvämare att använda, men vi använder \ 033 [
här som det matchar det som används som standard. I slutet av taggen måste du sluta med m \
för att ange slutet på en färgmärke.
Att bryta ner det här är vad varje färgmärke kommer att se ut. Den enda skillnaden är den information du lägger till i stället för COLOR för att definiera den faktiska färgen:
\ [\ 033 [FÄRGm \]
Bash kan du ändra färgen på förgrundstext, lägga till attribut som "fet" eller "understryka" texten och ange en bakgrundsfärg.
Här är värdena för förgrundstext:
- Svart: 30
- Blå: 34
- Cyan: 36
- Grön: 32
- Lila: 35
- Röd: 31
- Vit: 37
- Gul: 33
Till exempel, eftersom lila text är färgkod 32, skulle du använda \ [\ 033 [32m \]
för lila text.
Du kan även ange ett attribut för texten. Detta attribut måste läggas till före färgnumret, åtskilda av en semikolon (;). Text med dessa attribut kommer att se annorlunda ut i olika terminalemulatorer.
Här är värdena för textattribut:
- Normal text: 0
- Fet eller ljus text: 1 (det beror på terminalemulatorn.)
- Dim Text: 2
- Understruken text: 4
- Blinkande text: 5 (Detta fungerar inte i de flesta terminalemulatorer.)
- Omvänd text: 7 (Detta inverterar förgrunds- och bakgrundsfärgerna, så du får se svart text på en vit bakgrund om den nuvarande texten är vit text på en svart bakgrund.)
- Dold text: 8
Du behöver inte faktiskt inkludera det normala textattributet. Det är i alla fall standard.
Till exempel, eftersom röd text är kod 31 och fet text är kod 1, skulle du använda \ [\ 033 [1; 31m \]
för fet röd text.
Du kan också ange en bakgrundsfärg, men du kan inte lägga till ett attribut till en bakgrundsfärg.
Här är värdena för bakgrundsfärger:
- Svart bakgrund: 40
- Blå bakgrund: 44
- Cyan bakgrund: 46
- Grön bakgrund: 42
- Lila bakgrund: 45
- Röd bakgrund: 41
- Vit bakgrund: 47
- Gul bakgrund: 43
Till exempel, eftersom en blå bakgrund är kod 44, \ [\ 033 [44m \]
skulle ange en blå bakgrund.
Du kan ange både förgrunds- och bakgrundsfärgstaggar. Till exempel representerar 42 en grön bakgrund och 31 representerar röd text. Så, för att göra standardprompten bli röd text på en grön bakgrund, skulle du använda:
PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "
Vi specificerar bara en enda bakgrundsfärg och sedan en enda förgrunds textfärg här, som börjar vid början av prompten och appliceras på all text i prompten. Du kan dock ange så många färgkoder som du vill ha i variabeln för att färga olika delar av din prompten, men du vill.
Bakgrunds- och förgrundstextfärgerna fortsätter förbi prompten om du inte anger färgkod 00 raderar färginformationen. Du kan också använda den här taggen inom variabeln för att återställa formatering tillbaka till standard någonstans i din prompten. Till exempel skulle följande rad avsluta all färgning före \ $
karaktär.
PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "
Så här ställer du in din nya standardprompt
När du är klar med att experimentera med färger, borde du ha en Bash-prompten som du gillar i den aktuella sessionen. Men du vill förmodligen göra den nya prompten permanent så att den används automatiskt i alla dina Bash-sessioner.
För att göra detta behöver du bara ändra innehållet i PS1-variabeln i .bashrc-filen, som vi tittade på tidigare.
Öppna .bashrc-filen i din föredragna textredigerare, så här:
nano ~ / .bashrc
Bläddra ner och leta efter PS1 = sektionen. Byt bara standardvariabeln med din anpassade variabel. Du kommer antagligen vilja lämna $ Debian_chroot: + ($ debian_chroot)
bitar ensam, men de kommer inte att visas om du inte är i en chroot-miljö, ändå.
Ange din färgade PS1-variabel under om ["$ color_prompt" = ja]; sedan
linje. Ange variabeln utan färger under annan
linje.
Spara filen och stäng textredigeraren. Om du vill spara filen i nano trycker du på Ctrl + O, trycker på Enter och trycker sedan på Ctrl + X för att avsluta.
Nästa gång du startar ett nytt Bash-skal, till exempel, genom att logga in på terminalen eller genom att öppna ett nytt terminalfönster, ser du din anpassade prompten.