De flesta Linux-distributioner konfigurera Bash-prompten för att se något som username@hostname:directory sek . Men du kan konfigurera Bash-prompten för att innehålla vad du vill, och även välja vad för färger du gillar.
Exemplet här stegen utfördes på Ubuntu 16.04 LTS. Processen bör vara samma på andra Linux-distributioner, även om standard-Bash-prompten och inställningar i den .bashrc fil kan vara lite olika.
Där be-Variabeln är Lagrad
Din Bash-prompten konfiguration lagras i ditt användarkonto .bashrc filen, som är på ~/.bashrc. Så, om ditt användarnamn är bob, filen är på /home/bob/.bashrc.
Du kan öppna filen för att visa den aktuella Bash variabel. Vi kommer att använda nano som vårt exempel textredigeringsprogram, men du kan också använda vi, emacs eller annan texteditor du är bekväm med. Öppna en Terminal och kör:
nano ~/.bashrc
Bläddra ner till PS1= avsnittet. Den första variabel ser ganska komplicerat eftersom det innehåller färginformation—vi ska förklara det senare. Den andra variabeln, utan färg information, lyder som följer:
${debian_chroot:+($debian_chroot)}u@h:w$
Det är fortfarande lite komplicerat på grund av att ${debian_chroot:+($debian_chroot)} bitar. Dessa bara berätta Bash för att låta dig veta om du använder en Debian chroot-miljö och normalt kommer inte att visas. Ignorera dem, här är den förvalda strukturen i Bash-prompten variabel:
u@h:w$
u anger ditt användarnamn, @ anger tecknet@, h anger värdnamnet (datornamn), : visar : karaktär, w indikerar arbetskatalogen, och $ indikerar en $ om du är en normal användare konto eller # om du är root. Så, att sätta allt tillsammans, du får username@hostname:working_directory sek.
För att ändra din Bash-prompten, du måste bara lägga till, ta bort eller ordna om specialtecken i PS1-variabeln. Men det finns många fler variabler som du kan använda än den förinställda.
Lämna text-editor för nu—i nano, trycker du på Ctrl+X för att avsluta. Vi kommer att visa dig hur du kan experimentera med variabler innan faktiskt skriva ett nytt till din .bashrc fil.
Hur du Skapar en Anpassad Bash-Prompten
Din Bash-prompten konfiguration lagras i PS1-variabeln. Att spara innehållet i PS1-variabel i en ny variabel, kör följande kommando:
STANDARD=$PS1
Du kan nu ställa PS1-variabeln till olika värden för att experimentera. Till exempel, den första raden här skulle ange ditt snabba att en grundläggande “user$” – prompten, medan den andra skulle ställa din uppmaning till en basic ” – användaren:working_directory$” – prompten.
PS1=”u$”
PS1=”u:w\$ ”
Om du någonsin vill komma tillbaka till din förvalda snabbt, bara att köra följande kommando.
PS1=$STANDARD
Bash kommer att återställas till standardinställningarna snabbt tack vare det faktum att du har sparat dem som standardinställningar tidigare. Observera att alla ändringar du gör här är enbart tillfälliga för det aktuella Bash session, så kan du alltid logga ut och logga in igen eller stänga och öppna terminal-fönstret för att gå tillbaka till standardfönstret. Men raden ovan gör det möjligt att enkelt komma tillbaka till din förvalda Bash-prompten utan krångel med att logga ut eller att stänga ett fönster.
Du kan lägga till några tecken eller sms: a till variabeln. Så, för att prefixet standard snabb med “Hello World”, som du kan använda:
PS1=”Hello World u@h:w$ ”
Nu när du har grunderna, du behöver bara veta vad alla specialtecken är. Du kommer förmodligen inte att bry sig om många av dessa, men här är hela listan som visas i Bash manual:
- En klocka karaktär:
- Datum, “Vardag Månad Datum” – format (till exempel, “Tue May 26”): d
- Formatet skickas till strftime(3), och resultatet sätts in snabbt sträng, en tom format resulterar i en språkspecifik tid representation. Hängslen är obligatoriska: D{format}
- Escape-tecken: e
- Värdnamnet, upp till den första ‘.’: h
- Värdnamnet: H
- Antalet arbetstillfällen som för närvarande förvaltas av shell: j
- Basnamnet av skalet terminalens namn: l
- En nyrad: n
- En vagnretur: r
- Namnet på skalet, basename av $0 (del efter det sista snedstrecket): n
- 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 24-timmars HH:MM format:
- Lösenordet för den aktuella användaren: u
- Den version av Bash (t ex, 2,00) sek: v
- Utsläpp av Bash, version + patchlevel (t ex, 2.00.0): V
- Den aktuella arbetskatalogen, med $HOME förkortad med en tilde (använder $PROMPT_DIRTRIM variabel): w
- Basnamnet för $PWD, med $HOME förkortat med tilde: W
- Historia nummer av detta kommando: !
- Kommandot nummer av detta kommando: #
- Om den effektiva användar-id är 0, #, annars sek: $
- De tecken vars ASCII-kod är det oktala värdet nnn: nnn
- Ett bakstreck: \
- Börjar en sekvens av icke-utskrivbara tecken. Detta kan användas för att bädda in en terminal control sekvens i-prompten: [
- Avsluta en sekvens av icke-utskrivbara tecken: ]
Så, om du vill lägga till datum och tid för din Bash-prompten och sätta katalog på kommando på en annan linje, kan du använda följande konstruktion:
PS1=”[d t] u@tnw\$ ”
Hakparenteser här är inte nödvändigt, men att hjälpa till att bryta upp saker och ting visuellt och göra linjen lättare att läsa. Som vi berört tidigare, kan du lägga till text eller vanliga tecken till variabeln som du vill, så känn dig fri att använda vad som fungerar för dig.
Det är en mer kraftfull trick du bör veta om: Du kan lägga till utgången av varje kommando prompten. När visas, Bash kommer att köra kommandot och fyll i aktuella uppgifter. För att göra detta, bara ta det kommando som du vill köra mellan två tecken. Det är inte en apostrof—det är grav accent, som visas ovanför Tab-tangenten på tangentbordet.
Till exempel, låt oss säga att du vill visa Linux kernel version i-prompten. Du kan använda en linje som följande:
PS1=”u@h på `uname -s-r` w\$ ”
Som ett annat exempel, låt oss säga att du vill visa systemets upptid och ladda genomsnitt, som visas av tillgänglighet kommando. Du kan använda följande konstruktion, som sätter upptid på sin egen linje innan resten av prompten.
PS1=”(`tillgänglighet`)nu@h:w$ ”
Känn dig fri att experimentera med olika speciella tecken och kommandon för att montera din perfekta kommandotolken.
Lägga till Färger till Din Bash-Prompten
När du har räknat ut din favorit snabb, kan du lägga till färger till det. Detta är faktiskt väldigt enkelt, men det gör den rörliga ser väldigt rörigt och komplicerat om du inte förstår vad du tittar på.
Till exempel standard färg snabb variabel från tidigare var:
${debian_chroot:+($debian_chroot)}[ 33[01, 32m]u@h[ 33[00m]:[ 33[01;34]w [ 33[00m]$
Eller, ta bort debian_chroot bitar än en gång:
[ 33[01, 32m]u@h[ 33[00m]:[ 33[01;34]w [ 33[00m]$
Det här är faktiskt bara u@h:w$ variabel från tidigare, men med färg information. Verkligen, kan vi bryta ner det i några sektioner:
[ 33[01, 32m]u@h
[ 33[00m]:
[ 33[01;34]w
[ 33[00m]$
Den första delen är u@h bit, föregås av färg information som visar det gröna. Den andra är : karaktär, som föregås av färginformation som tar bort all färg. Den tredje är w-bit, föregås av färg information som visar det blå. Den fjärde är $ bit, föregås av färginformation som tar bort all färg.
När du förstår hur man konstruerar färg-taggar på din egen, du kan lägga till vad färger du vill till vilken delar av din Bash-prompten du vill.
Här är vad du behöver veta: Du måste inkludera hela färgkod information mellan [ och ] tecken. Inuti taggen, du måste börja med antingen 33 [e[ för att indikera att Bash att detta är en färg-information. Både 33 [e[ göra samma sak. e[ är kortare så kan det vara mer praktiskt att använda, men vi kommer att använda 33[ här som den överensstämmer med vad som används som standard. I slutet av taggen, du måste sluta med m i för att markera slutet av en färg tag.
Att bryta ner det, det här är vad varje färg tag kommer att se ut. Den enda skillnaden är den information som du lägger till i stället för FÄRG för att definiera den faktiska färgen:
[ 33[FÄRGm]
Bash kan du ändra färg och förgrund text, lägga till attribut som “fet” eller “underline” till text och ange en bakgrundsfärg.
Här är värdena för förgrund text:
- Svart: 30
- Blå: 34
- Cyan: 36
- Grön: 32
- Lila: 35
- Red: 31
- Vit: 37
- Gul: 33
Till exempel, eftersom lila text är färgkod 32, skulle du använda [ 33[32m] för lila text.
Du kan också ange ett attribut för texten. Detta attribut måste läggas till innan den färg nummer, som separeras av ett semikolon (;). Sms: a med dessa attribut kommer att se olika ut på olika terminalemulatorer.
Här är värdena för text-attribut:
- Normal Text: 0
- Fet eller Ljus Text: 1 (Det beror på terminal emulator.)
- Dim Text: 2
- Understruken Text: 4
- Blinkande Text: 5 (Detta fungerar inte i de flesta terminalemulatorer.)
- Omvänd Sms: a: 7 (Detta inverterar förgrunds-och bakgrundsfärger, så ser du svart text på en vit bakgrund om den nuvarande texten är vit text på en svart bakgrund.)
- Dold Text: 8
Du behöver faktiskt inte att innehålla vanlig text attribut. Det är standard, i alla fall.
Till exempel, eftersom röd text är kod 31 och fet text är kod 1, skulle du använda [ 33[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 bakgrund färger:
- Svart bakgrund: 40
- Blå bakgrund (blue background: 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 koden 44, [ 33[44m] skulle ange en blå bakgrund.
Du kan ange både förgrunds-och bakgrundsfärg taggar. Till exempel, 42 representerar en grön bakgrund och 31 står med röd text. Så, för att göra den standard prompten att bli röd text på grön bakgrund, skulle du använda:
PS1=”[ 33[42m][ 33[31m]u@h:w$ ”
Vi bara ange en bakgrundsfärg och sedan en enda förgrunden sms: a färg här, som börjar i början av snabba och används för all text i meddelandet. Du kan dock ange så många färg-taggar som du vill ha i variabeln för att färga olika delar av ditt snabba men du vill.
Bakgrund och förgrund text färger fortsätt förbi snabb såvida du inte anger färg kod 00 klart färgen information. Du kan också använda den här taggen i variabeln för att återställa formatering tillbaka till standard någonstans i din fråga. Till exempel, följande rad skulle göra slut på alla färg innan $ – tecknet.
PS1=”[ 33[42m][ 33[31m]u@h:w\[ 33[00m]$ ”
Hur man Ställer in Din Nya Standard-Prompten
När du är klar att experimentera med färger, bör du ha ett Bash-prompten du gillar i den aktuella sessionen. Men du vill förmodligen göra som ny prompt permanenta så att den används automatiskt på alla dina Bash-sessioner.
För att göra detta, behöver du bara ändra innehållet i PS1-variabeln i den .bashrc fil, som vi tittade på tidigare.
Öppna den .bashrc fil i din föredragna texteditor, så här:
nano ~/.bashrc
Scrolla ner och leta reda på PS1= avsnittet. Bara att ersätta standard variabel med din anpassade variabeln. Du vill förmodligen för att lämna ${debian_chroot:+($debian_chroot)} bitar ensam, men de visas inte såvida du inte är i en chroot-miljö, hur som helst.
Ange ditt färgade PS1 variabel enligt if [ “$color_prompt” = ja ], sedan linje. Ange variabel utan färger under annan linje.
Spara filen och stäng din text editor. Till exempel, för att spara filen i nano, tryck Ctrl+O, och tryck på Retur och tryck sedan på Ctrl+X för att avsluta.
Nästa gång du startar ett nytt Bash-skalet—till exempel genom att logga in på terminal eller genom att öppna ett nytt terminalfönster—du kommer att se dina anpassade snabbt.