Majoritatea distribuțiilor Linux configurează promptul Bash pentru a arăta ceva de genul
nume utilizator @ nume gazdă: director $
. Dar puteți configura promptul Bash pentru a conține orice doriți și chiar să alegeți ce culori doriți.
Pașii de exemplu de aici au fost efectuați pe Ubuntu 16.04 LTS. Procesul ar trebui să fie același pe alte distribuții Linux, deși solicitarea și setările implicite Bash din fișierul .bashrc pot fi puțin diferite.
Unde este stocată variabila promptă
Configurarea promptului Bash este stocată în fișierul .bashrc al contului dvs. de utilizator, care se află la
~ / .bashrc
. Deci, dacă numele dvs. de utilizator este bob, fișierul este la
/home/bob/.bashrc
.
Puteți deschide fișierul pentru a vizualiza variabila Bash curentă. Vom folosi nano ca exemplu de editor de text, deși puteți utiliza și noi , emacs sau orice alt editor de text cu care vă simțiți confortabil. Deschideți un terminal și rulați:
nano ~ / .bashrc
Derulați în jos până la
Ψ1 =
secțiune. Prima variabilă pare destul de complicată, deoarece include informații despre culoare - o vom explica mai târziu. A doua variabilă, fără informații despre culoare, citește după cum urmează:
{debian_chroot:+($debian_chroot)} $ \ u @ \ h: \ w \ $
Acest lucru este încă puțin complicat din cauza
${debian_chroot:+($debian_chroot)}
biți. Acestea îi spun doar lui Bash să vă anunțe dacă utilizați un mediu chroot Debian și, în mod normal, nu va fi afișat. Ignorându-le, iată structura implicită a variabilei de prompt Bash:
\ u @ \ h: \ w \ $
\ u
indică numele dvs. de utilizator,
@
indică semnul @,
\ h
indică numele gazdei (numele computerului),
:
indică: caracterul,
\în
indică directorul de lucru și
\$
indică un $ dacă sunteți un cont de utilizator normal sau # dacă sunteți root. Deci, punând totul împreună, veți obține
nume de utilizator @ nume de gazdă: director_de lucru $
.
Pentru a vă modifica promptul Bash, trebuie doar să adăugați, să eliminați sau să rearanjați caracterele speciale din variabila PS1. Dar există mult mai multe variabile pe care le puteți utiliza decât cele implicite.
Lăsați editorul de text pentru moment - în nano, apăsați Ctrl + X pentru a ieși. Vă vom arăta cum să experimentați cu variabile înainte de a scrie efectiv una nouă în fișierul dvs. .bashrc.
Cum să creați o solicitare personalizată Bash
Configurarea promptului Bash este stocată în variabila PS1. Pentru a salva conținutul variabilei PS1 într-o nouă variabilă, rulați următoarea comandă:
DEFAULT = $ PS1
Acum puteți seta variabila PS1 la valori diferite de experimentat. De exemplu, prima linie de aici va seta solicitarea dvs. la un prompt de bază „utilizator $”, în timp ce a doua va seta solicitarea dvs. la un prompt de bază „utilizator: director_de lucru $”.
PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"
Dacă vreți vreodată să reveniți la solicitarea implicită, rulați următoarea comandă.
PS1 = $ DEFAULT
Bash va fi restabilit la promptul său implicit datorită faptului că ați salvat mai devreme acele setări implicite. Rețineți că toate modificările pe care le faceți aici sunt temporare doar pentru sesiunea curentă Bash, deci vă puteți deconecta și conecta din nou sau închide și redeschide fereastra terminalului pentru a reveni la solicitarea implicită. Dar linia de mai sus face posibilă revenirea cu ușurință la solicitarea Bash implicită, fără a fi nevoie să vă deconectați sau să închideți o fereastră.
Puteți adăuga orice caractere sau text la variabilă. Deci, pentru a prefixa promptul implicit cu „Hello World”, puteți utiliza:
PS1 = "Hello World \ u @ \ h: \ w \ $"
Acum, că ai obținut elementele de bază, trebuie doar să știi care sunt toate personajele speciale. Probabil că nu vă va păsa de multe dintre acestea, dar iată lista completă așa cum apare în manualul Bash :
-
Un caracter clopot:
\A -
Data, în formatul „Data lunii zilei săptămânii” (de exemplu, „marți 26 mai”):
\ d -
Formatul este trecut la strftime (3) și rezultatul este inserat în șirul prompt; un format gol are ca rezultat o reprezentare a timpului specifică localizării. Aparatele dentare sunt necesare:
\ D{format} -
Un personaj de evadare:
\este -
Numele gazdei, până la primul „.”:
\ h -
Numele gazdei:
\ H -
Numărul de locuri de muncă gestionate în prezent de către shell:
\ j -
Numele de bază al numelui dispozitivului terminal al shell-ului:
\l -
O linie nouă:
\ n -
Întoarcerea cu trăsura:
\ r -
Numele shell-ului, numele de bază de $ 0 (porțiunea care urmează liniei oblice finale):
\ s -
Ora, în format HH: MM: SS de 24 de ore:
\ t -
Ora, în format HH: MM: SS de 12 ore:
\ T -
Ora, în format de 12 ore am / pm:
\@ -
Ora, în format HH: MM de 24 de ore:
\A -
Numele de utilizator al utilizatorului curent:
\ u -
Versiunea Bash (de exemplu, 2.00):
ev -
Lansarea Bash, versiunea + patchlevel (de exemplu, 2.00.0):
EV -
Directorul de lucru curent, cu $ HOME abreviat cu o tildă (utilizează variabila $ PROMPT_DIRTRIM):
\în -
Numele de bază al lui $ PWD, cu $ HOME abreviat cu o tildă:
\ÎN -
Numărul istoric al acestei comenzi:
\! -
Numărul de comandă al acestei comenzi:
\# -
Dacă uidul efectiv este 0, #, altfel $:
\$ -
Caracterul al cărui cod ASCII este valoarea octală nnn:
\ nnn -
O bară inversă:
\\ -
Începeți o secvență de caractere care nu se tipăresc. Aceasta ar putea fi utilizată pentru a încorpora o secvență de control terminal în prompt:
\[ -
Încheiați o secvență de caractere care nu se tipăresc:
\]
Deci, dacă doriți să adăugați data și ora la solicitarea dvs. Bash și să puneți directorul de lucru pe comandă pe o a doua linie, puteți utiliza următoarea construcție:
PS1 = "[\d \t] \ u @ \ h \ n \ w \ $"
Parantezele pătrate aici nu sunt deloc necesare, dar vă ajută să împărțiți vizual lucrurile și să ușurați citirea rândului. Așa cum am discutat mai devreme, puteți adăuga orice text sau caractere normale la variabila care vă place, așa că nu ezitați să utilizați orice funcționează pentru dvs.
Există un alt truc mai puternic despre care ar trebui să știți: puteți adăuga rezultatul oricărei comenzi la prompt. Ori de câte ori apare promptul, Bash va executa comanda și va completa informațiile curente. Pentru a face acest lucru, includeți orice comandă pe care doriți să o rulați între două
`
personaje. Acesta nu este un apostrof - acesta este accentul grav, care apare deasupra tastei Tab de pe tastatură.
De exemplu, să presupunem că doriți să vizualizați versiunea kernel-ului Linux în prompt. Puteți utiliza o linie ca următoarea:
PS1 = "\ u @ \ h pe ʻuname -s -r` \ w \ $"
Ca un alt exemplu, să presupunem că doriți să vedeți timpul de funcționare și media de încărcare a sistemului, așa cum este afișat de
disponibilitate
comanda. Puteți utiliza următoarea construcție, care pune timpul de funcționare pe propria linie înainte de restul promptului.
PS1 = "(` uptime`) \ n \ u @ \ h: \ w $ "
Simțiți-vă liber să experimentați cu diferite caractere și comenzi speciale pentru a vă asambla promptul de comandă ideal.
Cum să adăugați culori la solicitarea dvs. Bash
După ce ați aflat solicitarea preferată, puteți adăuga culori la acesta. De fapt, acest lucru este foarte simplu, dar face ca variabila să pară îngrozitor și complicată dacă nu înțelegeți la ce vă uitați.
De exemplu, variabila de solicitare de culoare implicită de mai devreme a fost:
{debian_chroot:+($debian_chroot)} $ \ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
Sau, eliminând din nou biții debian_chroot:
\ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
Acesta este de fapt doar
\ u @ \ h: \ w $
variabilă față de anterior, dar cu informații despre culoare. Într-adevăr, îl putem împărți în câteva secțiuni:
\[\033[01;32m\]\ u @ \ h\[\033[00m\]:\[\033[01;34m\]\în\[\033[00m\]\$
Prima secțiune este
\ u @ \ h
bit, precedat de informații despre culoare care îl transformă în verde. Al doilea este
:
caracter, precedat de informații despre culoare care elimină orice colorare. Al treilea este
\în
bit, precedat de informații despre culoare care îl transformă în albastru. Al patrulea este
\$
bit, precedat de informații despre culoare care elimină orice colorare.
Odată ce înțelegeți cum să vă construiți etichete de culoare, puteți adăuga orice culori doriți la secțiunile din solicitarea dvs. Bash care vă plac.
Iată ce trebuie să știți: trebuie să includeți toate informațiile despre codul de culoare între
\[
și
\] caracter
s. În interiorul etichetei, trebuie să începeți cu oricare
\033[
sau
\este[
pentru a-i indica lui Bash că acestea sunt informații despre culoare. Ambii
\033[
și
\este[
fă același lucru.
\este[
este mai scurt, deci ar putea fi mai convenabil de utilizat, dar îl vom folosi
\033[
aici, deoarece se potrivește cu ceea ce este utilizat în mod implicit. La sfârșitul etichetei, trebuie să terminați cu
m\
pentru a indica sfârșitul unei etichete de culoare.
Descompunând acest lucru, iată cum va arăta fiecare etichetă de culoare. Singura diferență este informația pe care o adăugați în locul COLOR pentru a defini culoarea reală:
\[\033[CULOAREm\]
Bash vă permite să modificați culoarea textului din prim-plan, să adăugați atribute precum „bold” sau „subliniat” textului și să setați o culoare de fundal.
Iată valorile pentru textul din prim-plan:
- Negru: 30
- Albastru: 34
- Cyan: 36
- Verde: 32
- Violet: 35
- Roșu: 31
- Alb: 37
- Galben: 33
De exemplu, deoarece textul violet este codul de culoare 32, l-ați folosi
\[\033[
32
m\]
pentru text violet.
De asemenea, puteți specifica un atribut pentru text. Acest atribut trebuie adăugat înaintea numărului de culoare, separat printr-un punct și virgulă (;). Textul cu aceste atribute va arăta diferit în diferite emulatoare de terminal.
Iată valorile pentru atributele textului:
- Text normal: 0
- Text aldin sau ușor: 1 (depinde de emulatorul terminalului.)
- Text slab: 2
- Text subliniat: 4
- Text intermitent: 5 (Acest lucru nu funcționează la majoritatea emulatoarelor de terminale.)
- Text inversat: 7 (Aceasta inversează culorile din prim-plan și fundal, astfel încât veți vedea text negru pe un fundal alb dacă textul actual este text alb pe un fundal negru.)
- Text ascuns: 8
De fapt, nu trebuie să includeți atributul text normal. Oricum, aceasta este valoarea implicită.
De exemplu, deoarece textul roșu este codul 31 și textul aldin este codul 1, ați folosi
\[\033[
1;31
m\]
pentru textul roșu îngroșat.
De asemenea, puteți specifica o culoare de fundal, dar nu puteți adăuga un atribut unei culori de fundal.
Iată valorile culorilor de fundal:
- Fundal negru: 40
- Fundal albastru: 44
- Fundal cyan: 46
- Fundal verde: 42
- Fundal violet: 45
- Fundal roșu: 41
- Fundal alb: 47
- Fundal galben: 43
De exemplu, deoarece un fundal albastru este codul 44,
\[\033[
44
m\]
ar specifica un fundal albastru.
Puteți specifica atât etichetele de culoare din prim-plan, cât și cele de fundal. De exemplu, 42 reprezintă un fundal verde și 31 reprezintă textul roșu. Deci, pentru ca solicitarea implicită să devină text roșu pe un fundal verde, ați folosi:
Ψ1 = "\ [\ 033 [42m\]\[\033[31m \] \ u @ \ h: \ w \ $ "
Specificăm doar o singură culoare de fundal și apoi o singură culoare de text în prim-plan aici, care începe la începutul promptului și se aplică tuturor textelor din prompt. Cu toate acestea, puteți specifica oricâte etichete de culoare doriți în variabilă pentru a colora diferitele secțiuni ale solicitării dvs., oricum doriți.
Culorile textului de fundal și prim-plan continuă să treacă peste prompt, cu excepția cazului în care specificați codul de culoare 00 ștergeți informațiile despre culoare. De asemenea, puteți utiliza această etichetă în cadrul variabilei pentru a reseta formatarea înapoi la valoarea implicită undeva în solicitarea dvs. De exemplu, următoarea linie ar termina toate colorările înainte de
\$
caracter.
Ψ1 = "\ [\ 033 [42m\]\[\033[31m \] \ u @ \ h: \ w \\ [\ 033 [00m\]\$ "
Cum să setați noua dvs. solicitare implicită
După ce ați terminat experimentarea culorilor, ar trebui să primiți un mesaj Bash care vă place în sesiunea curentă. Dar probabil că doriți să faceți acest nou prompt permanent, astfel încât să fie utilizat automat în toate sesiunile dvs. Bash.
Pentru a face acest lucru, trebuie doar să schimbați conținutul variabilei PS1 din fișierul .bashrc, la care ne-am uitat mai devreme.
Deschideți fișierul .bashrc în editorul de text preferat, astfel:
nano ~ / .bashrc
Derulați în jos și localizați secțiunea PS1 =. Doar înlocuiți variabila implicită cu variabila personalizată. Probabil că veți dori să părăsiți
${debian_chroot:+($debian_chroot)}
biți singuri, totuși - oricum nu vor apărea decât dacă vă aflați într-un mediu chroot.
Introduceți variabila dvs. PS1 colorată sub
dacă [ "$color_prompt" = yes ]; atunci
linia. Introduceți variabila fără culori sub
altceva
linia.
Salvați fișierul și închideți editorul de text. De exemplu, pentru a salva fișierul în nano, apăsați Ctrl + O, apăsați Enter și apoi apăsați Ctrl + X pentru a ieși.
Data viitoare când porniți un nou shell Bash - de exemplu, conectându-vă la terminal sau deschizând o fereastră nouă de terminal - veți vedea solicitarea personalizată.