Kako prilagoditi ukazni poziv v bash

V ukazni lupini bash je ukazni poziv besedilo, ki se prikaže, ko vas računalnik pozove k vnosu. Na večini sistemov izgleda tako:

V pozivu lahko dobite informacije, preden zaženete katere koli ukaze. Na primer, zgornji poziv vam pokaže naslednje.

  1. kdo ste (uporabnik imenovan uporabnik )
  2. kje ste (računalnik z imenom myhost )
  3. kakšen je vaš delovni imenik ( ~, ki je kratica za vaš domači imenik)

Morda je najpomembnejši znak dolarja (" $ "), ki je poseben znak, ki označuje, da ste prijavljeni kot nekorenski uporabnik. Če ste bili trenutno prijavljeni kot root, bo ta znak namesto znaka funta (" # ").

Niz, ki predstavlja poziv, je shranjen v posebni spremenljivki okolja PS1 . Za zgornji poziv je njegova vrednost videti takole.

 h: W: \ t 

V tem nizu so štirje posebni znaki: u, h, W, $ . To so ubežna zaporedja, ki se zamenjajo z dejanskimi vrednostmi vsakič, ko se prikaže poziv.

Posebni znaki

Posebna zaporedja znakov, navedena v spodnji tabeli, se lahko uporabijo v pozivu ukazne lupine bash.

Zaporedje znakovPrevaja v
aZnak "alarm". Sproži pisk ali bliskavico zaslona
dTrenutni datum, prikazan v obliki dneva v tednu v mesecu (npr. Sreda, 13. maj ).
D { format }Trenutni datum in čas sta prikazana glede na format, ki ga interpretira strftime . Če je format izpuščen, D {} prikaže trenutni 12-urni čas AM / PM (npr. 07:23:01 PM ).
eUbežni znak (ASCII 27)
e [ število mOznačuje začetek zaporedja za prikaz v barvi, kjer je številka število ali par številk, ki določa, katera barva in slog naj se uporabi. Spodaj si oglejte seznam barv in njihovih številk.
e [mOznačuje konec zaporedja za prikaz v barvi.
hIme računalnika do prvega " . " Na primer, če je ime gostitelja sistema myhost.mydomain, h prikaže myhost
HPolno ime računalnika.
jŠtevilo opravil, ki jih upravlja lupina.
lIdentifikator terminalske naprave lupine, običajno enomestna številka.
nNova vrstica
rVrnitev prevoza
sIme ukazne lupine (osnovno ime procesa, ki je sprožil trenutno sejo bash).
. \ tTrenutni čas, prikazan v 24-urnem formatu HH: MM: SS (npr. 19:23:01 ).
A. \ tTrenutni čas, prikazan v 12-urnem formatu HH: MM: SS (npr. 07:23:01 ).
@Trenutni čas, prikazan v 12-urnem HH: MM: SS AM / PM formatu (npr. 07:23:01 PM ).
A. \ tTrenutni čas v 24-urnem formatu HH: MM (npr. 19:23 ).
uUporabniško ime trenutnega uporabnika.
vŠtevilka različice Bash (npr. 4.3 ).
VBash različica in številka popravka (npr. 4.3.30 ).
wTrenutni imenik. Domači imenik uporabnika je skrajšan kot tilda (" ~ "). Na primer, / usr / bin, ~ ali ~ /
WOsnovno ime trenutnega delovnega imenika (npr. Bin, ~ ali dokumenti ).
. \ TŠtevilka zgodovine trenutnega ukaza.
. \ TŠtevilka ukaza trenutnega ukaza (številke ukaza so kot številke zgodovine, vendar se ponastavijo na nič, ko začnete novo sejo bash).
nnnZnak ASCII, katerega oktalna vrednost je nnn.
. \ TPoševnica nazaj
[] \ TOznačuje začetek vsakega zaporedja znakov, ki niso tiskani, kot so kontrolne kode terminalov.
. \ TOznačuje konec zaporedja brez tiskanja.
\ $Natisne #, če je UID nič (superuporabnik) ali $ če je večji od nič (kdorkoli drug).

Spreminjanje ukaza za trenutno sejo

Spremenljivko okolja PS1 lahko nastavite kot katero koli drugo spremenljivko v bash, pri čemer bo obrazec stavek NAME = VALUE . Če želite nastaviti standardni poziv, lahko v ukazno vrstico vnesete naslednje.

 PS1 = "[zaščiten z e-pošto] h: W" 

… In vaš poziv se bo takoj spremenil. Opazujte končni prostor za znak za dolar v nizu za dodaten prostor po pozivu, zaradi česar je lažje razlikovati ukaze, ki jih vnesete iz poziva. Dodatnega prostora ni potrebno, vendar je priporočljivo.

Opazite, da v ukazu ni presledkov med PS1, = in nizom.

Spreminjanje poziva za vse prihodnje seje

Če želite spremeniti poziv za vsako novo sejo, morate urediti datoteke za zagon bash. Vsakič, ko zaženete terminalsko sejo, se naslednje datoteke, če obstajajo, berejo in izvajajo kot skripte:

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

~ / .profile

Prva datoteka, / etc / profile, je zagonski skript za vsakega uporabnika v sistemu, ki zažene sejo bash. Če želite spremeniti poziv za vsakega uporabnika, morate urediti to datoteko in za to potrebujete privilegije superuporabnika.

 sudo vi / etc / profile 

Na primer, zgornji ukaz vas bo pozval k vnosu gesla in če ste na seznamu sudoers, odprite univerzalno zagonsko datoteko bash kot superuporabnik z uporabo urejevalnika vi .

Ostale tri datoteke se iščejo po zgoraj navedenem vrstnem redu in se izvedejo po / etc / profile . Te tri datoteke so v vašem domačem imeniku, zato se izvajajo samo za vas. PS1 lahko definirajo na več kot enem mestu, zato morate datoteke prebrati, da vidite, kako so konfigurirane v sistemu. Mnogi sistemi bodo na primer uporabljali drugačno vrednost PS1, odvisno od tega, ali vaš terminal podpira barvo.

Vse tri datoteke lahko obstajajo in se uporabljajo za vašo bash sejo, če pa jih je več, se bodo izvajale v navedenem vrstnem redu.

Če ne želite izbrisati ali spremeniti vrstic v zagonskih datotekah, lahko dodate nov stavek PS1 = na konec ene od datotek, da uveljavite poziv po meri.

Dodajanje barve v svoj poziv

Če uporabljate terminal, ki podpira barvo (in verjetno tudi vi), lahko svojemu pozivu dodate barvo. Barve so dodane s posebnimi zaporedji znakov, ki sledijo tej obliki:

e [ število mZačne barvni odsek. Vrednost številke je posebno število ali par številk, ki določa barvo.
e [moznačuje konec barvnega odseka; ponastavi na privzeto barvo

Na primer niz niza:

 PS1 = "e [1; 35mTo je svetlo vijolično. [0; 35m ... in to je temno vijolično. \ T 

Ustvaril bo poziv, ki izgleda takole:

Tukaj je seznam barv, ki jih lahko uporabite, in številke, ki jih določajo:

ŠtevilkeBarva / slogŠtevilkeBarva / slog
0;Črna1;Temno siva
0;rdeča1;Svetlo rdeča
0;Zelena1;Svetlo zelena
0;rjav1;Rumena
0;Modra1;Svetlo modra
0;Vijolična1;Svetlo vijolična
0;Cyan1;Bright Cyan
0;siva1;Bela
4, 30Črno, poudarjeno40ozadje: temno siva
4;Rdeča, podčrtana41ozadje: Rdeča
4;Zeleno, poudarjeno42ozadje: zeleno
4;Brown, poudaril43ozadje: Rumena
4;Modra, podčrtana44ozadje: modra
4;Vijolična, poudarjena45ozadje: vijolična
4;Cyan, podčrtano46ozadje: cian
4, 37Gray, poudaril47Ozadje: siva

Tu je nekaj primerov in kako izgledajo:

 E [0, 31mRed, e [0, 32mGreen, e [0, 33mBrown, e [0, 34mBlue, e [0, 35mPurple, e [0, 36mCyan, e [0; 

 PS1 = "Podčrtano: e [4; 31mRed e [4; 32mGreen e [4; 33mBrown e [4; 34mBlue e [4; 35mPurple e [4; 36mCyan e [4; 37mGray m " 

 E [44m e [1; 35mBright purple na modrem ozadju e [m]