Cum de a personaliza linia de comandă în bash

În shell-ul bash, promptul de comandă este textul afișat atunci când vi se solicită introducere. În majoritatea sistemelor, se arată astfel:

În prompt, puteți avea informații înainte de a executa comenzi. De exemplu, solicitarea de mai sus vă arată următoarele.

  1. cine sunteti (un utilizator numit utilizator )
  2. unde esti (un computer numit myhost )
  3. ce este directorul dvs. de lucru ( ~, care este o abreviere pentru directorul de acasă)

Poate cel mai important este semnul dolarului (" $ "), care este un caracter special care indică faptul că sunteți conectat ca utilizator non-root. Dacă ați fost conectat în prezent ca root, acest caracter ar fi un semn de literă (" # ").

Șirul care reprezintă solicitarea este stocat în variabila specială de domeniu numită PS1 . Pentru solicitarea de mai sus, valoarea acesteia arată ca mai jos.

 "\ [protejat prin e-mail] \ h: \ W \ $" 

Există patru caractere speciale în acest șir: \ u, \ h, \ W, \ $ . Acestea sunt secvențe de caractere scoase, care sunt înlocuite cu valori reale de fiecare dată când se afișează promptul.

Caracterele speciale

Secvențele de caractere speciale listate în tabelul de mai jos pot fi utilizate în prompterul shell-ului bash.

Secvență de caractereSe transformă în
\ACaracterul "alarmă". Declanșează un bip sau un bliț de ecran
\ dData curentă, afișată în formatul Data săptămânii (de exemplu, miercuri, 13 mai ).
\ D { format }Data și ora curente sunt afișate conform formatului interpretat de strftime . Dacă formatul este omis, \ D {} afișează ora actuală de 12 ore AM / PM (de ex. 07:23:01 PM ).
\ eUn caracter de evacuare (ASCII 27)
\ e [ numărul mIndică începutul unei secvențe de afișare în culori, unde numărul este un număr sau o pereche de numere, care specifică ce culoare și stil să utilizeze. Vedeți mai jos o listă a culorilor și a perechilor de numere.
\ e [mIndică sfârșitul unei secvențe de afișare în culori.
\ hNumele gazdei aparatului, până la primul "" De exemplu, dacă numele de gazdă al sistemului este myhost.mydomain, \ h afișează MyHost
\ HNumele de gazdă complet al mașinii.
\ jNumărul de locuri de muncă gestionate de shell.
\ lIdentificatorul terminalului shellului, de obicei un număr dintr-o singură cifră.
\ nO linie nouă
\ rRetur transport
\ sNumele shell-ului (numele de bază al procesului care a inițiat sesiunea bash curentă).
\ tDurata curentă afișată în formatul HH: MM: SS în 24 de ore (de ex., 19:23:01 ).
\ TOra curentă afișată în formatul HH: MM: SS de 12 ore (de ex. 07:23:01 ).
\ @Durata curentă afișată în formatul HH: MM: SS AM / PM (de ex., 07:23:01 PM ).
\AOra actuală în formatul HH: MM de 24 de ore (de ex., 19:23 ).
\ uNumele de utilizator al utilizatorului curent.
\ vNumărul versiunii Bash (de ex., 4.3 ).
\ VVersiunea Bash și numărul de patch-uri (de ex., 4.3.30 ).
\ wDirectorul curent. Directorul utilizatorului de la domiciliu este abreviat ca un tilde (" ~ "). De exemplu, / usr / bin, ~, sau ~ / documente
\ WNumele de bază al directorului curent de lucru (de ex., Bin, ~, sau documente ).
\!Numărul istoric al comenzii curente.
\ #Numărul de comandă al comenzii curente (numerele de comandă sunt ca numerele de istorie, dar se reseta la zero când începeți o sesiune bash nouă).
\ nnnCaracterul ASCII a cărui valoare octală este nnn.
\\O retrospectivă
\ [Marchează începutul oricărei secvențe de caractere care nu se imprimă, cum ar fi codurile de control terminale.
\]Marchează sfârșitul unei secvențe non-imprimare.
\ $Tipărește # dacă UID este zero (superuser), sau $ dacă este mai mare decât zero (oricine altcineva).

Schimbarea promptului pentru sesiunea curentă

Puteți seta variabila de mediu PS1 ca și orice altă variabilă în bash, cu formularul de instrucțiuni NAME = VALUE . Deci, pentru a seta promptul standard, puteți scrie următoarele la linia de comandă.

 PS1 = "\ [protejat prin e-mail] \ h: \ W \ $" 

... Și promptitudinea ta se va schimba imediat. Observați spațiul final după semnul dolarului în șir pentru un spațiu suplimentar după solicitarea dvs., ceea ce face mai ușor să se diferențieze comenzile pe care le tastați de prompt. Spațiul suplimentar nu este necesar, dar este recomandat.

Observați că în comandă nu există spații între PS1, = și șir.

Modificarea promptului pentru toate sesiunile viitoare

Dacă doriți să schimbați promptul pentru fiecare sesiune nouă, trebuie să editați fișierele de pornire bash. De fiecare dată când porniți o sesiune de terminale, următoarele fișiere, dacă există, sunt citite și executate ca scripturi:

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

~ / .Profile

Primul fișier, / etc / profile, este un script de pornire pentru orice utilizator din sistem care începe o sesiune bash. Pentru a schimba promptul pentru fiecare utilizator, trebuie să editați acest fișier și aveți nevoie de privilegii de superuser pentru a face acest lucru.

 sudo vi / etc / profil 

De exemplu, comanda de mai sus vă va solicita parola și, dacă vă aflați pe lista de sudori, deschideți fișierul de pornire universal bash ca superuser, utilizând editorul vi .

Celelalte trei fișiere sunt căutate în ordinea listată mai sus și executate după / etc / profile . Aceste trei fișiere trăiesc în directorul dvs. de acasă, astfel încât acestea sunt executate numai pentru dvs. Aceștia pot defini PS1 în mai multe locuri, deci ar trebui să citiți cu atenție fișierele pentru a vedea cum sunt configurate în sistemul dvs. De exemplu, multe sisteme vor folosi o valoare diferită PS1, în funcție de faptul dacă terminalul acceptă sau nu culoarea.

Orice dintre cele trei fișiere poate exista și poate fi folosit pentru sesiunea dvs. bash, dar dacă există mai multe, acestea vor fi executate în ordinea listată.

Dacă nu doriți să ștergeți sau să modificați linii în fișierele de pornire, puteți adăuga, de asemenea, o nouă instrucțiune PS1 = la sfârșitul unuia dintre fișierele dvs. pentru a aplica o solicitare personalizată.

Adăugarea de culori la solicitarea dvs.

Dacă utilizați un terminal care acceptă culoarea (și probabil că sunteți), puteți adăuga culoarea la solicitarea dvs. Culorile sunt adăugate folosind secvențe de caractere speciale care urmează acest format:

\ e [ numărul mÎncepe o secțiune colorată. Valoarea numerică este un număr special sau o pereche de numere care specifică culoarea.
\ e [mdenotă sfârșitul secțiunii colorate; se resetează la culoarea implicită

De exemplu, stringul prompt:

 PS1 = "\ e [1; 35mAceasta este violet luminos. \ E [0; 35m ... și aceasta este purpuriu închis. \ E [m" 

Va produce un prompt care arată astfel:

Iată o listă a culorilor pe care le puteți utiliza și numerele care le specifică:

Numărul (numerele)Culoare / StilNumărul (numerele)Culoare / Stil
0; 30Negru1; 30Gri închis
0; 31roșu1; 31Rosu aprins
0; 32Verde1; 32Verde deschis
0; 33Maro1; 33Galben
0; 34Albastru1; 34Albastru stralucitor
0; 35Violet1; 35Bright Purple
0; 36Cyan1; 36Bright Cyan
0; 37gri1; 37alb
4; 30Negru, subliniat40fundal: Dark Gray
4; 31Roșu, subliniat41fundal: roșu
4; 32Verde, subliniat42fundal: verde
4; 33Brown, subliniat43fundal: Galben
4; 34Albastru, subliniat44fundal: albastru
4; 35Purpuriu, subliniat45fundal: Purple
4; 36Cyan, subliniat46fundal: Cyan
4; 37Gri, subliniat47Fundal: Gri

Iată câteva exemple și cum arată ele:

 PS1 = "\ e [0; 31mRed \ e [0; 32mGreen \ e [0; 33mBrown \ e [0; 34mBlue \ e; 0; 35mPurple \ e [0; 36mCyan \ 

 PS1 = "Subliniat: \ e [4; 31mRed \ e [4; 32mGreen \ e [4; 33mBrown \ 4; 34mBlue \ e [4; 35mPurple \ 4; 36mCyan \ m“ 

 PS1 = "\ e [44m \ e [1; 35mBrunet violet pe fundal albastru \ e [m"