Ako prispôsobiť príkazový riadok v bash

V prostredí bash je príkazový riadok text zobrazený pri výzve na zadanie. Vo väčšine systémov to vyzerá takto:

Vo výzve môžete mať informácie pred spustením ľubovoľných príkazov. Vyššie uvedená výzva napríklad zobrazuje nasledujúce informácie.

  1. kto ste (používateľ s menom)
  2. kde ste (počítač s názvom myhost )
  3. aký je váš pracovný adresár ( ~, čo je skratka pre váš domovský adresár)

Najdôležitejšie je pravdepodobne znak dolára (" $ "), čo je špeciálny znak, ktorý označuje, že ste prihlásený ako užívateľ bez oprávnenia root. Ak ste boli prihlásený ako root, tento znak bude namiesto toho znakom libry (" # ").

Reťazec reprezentujúci výzvu je uložený v špeciálnej premennej prostredia s názvom PS1 . Pre vyššie uvedenú výzvu vyzerá jej hodnota nasledovne.

 "chránené poštou" h: W \ t 

V tomto reťazci sú štyri špeciálne znaky: u, h, W, $ . Jedná sa o uniknuté sekvencie znakov, ktoré sú nahradené skutočnými hodnotami pri každom zobrazení výzvy.

Špeciálne znaky

Sekvencie špeciálnych znakov uvedené v tabuľke nižšie môžu byť použité v výzve bash shell.

Poradie znakovPreloží do
\ aZnak "alarm". Spustí pípnutie alebo bliká obrazovka
\ dAktuálny dátum zobrazený vo formáte Weekday Month Date (napr. Streda 13. máj ).
D { formát }Aktuálny dátum a čas sa zobrazia podľa formátu interpretovaného strftime . Ak je formát vynechaný, {{} zobrazuje aktuálny 12-hodinový čas AM / PM (napr. 07:23:01 PM ).
\ eÚnikový znak (ASCII 27)
e [ číslo mOznačuje začiatok sekvencie na zobrazenie vo farbe, kde číslo je číslo alebo pár čísel, ktorý určuje, akú farbu a štýl použiť. Nižšie nájdete zoznam farieb a ich dvojíc.
\ E [mOznačuje koniec sekvencie, ktorá sa má zobraziť vo farbe.
\ hNázov hostiteľa stroja, až po prvý " . " Napríklad, ak je názov hostiteľa systému myhost.mydomain, h zobrazuje myhost
\ HÚplný názov počítača.
\ jPočet pracovných miest, ktoré spravuje shell.
\ lIdentifikátor terminálového zariadenia shellu, zvyčajne jednociferné číslo.
\ nNový riadok
\ rNávrat nákladu
\ sNázov shellu (názov procesu, ktorý inicioval aktuálnu bash session).
\ tAktuálny čas zobrazený v 24-hodinovom formáte HH: MM: SS (napr. 19:23:01 ).
\ TAktuálny čas zobrazený v 12-hodinovom formáte HH: MM: SS (napr. 07:23:01 ).
\ @Aktuálny čas zobrazený v 12-hodinovom formáte HH: MM: SS AM / PM (napr. 07:23:01 PM ).
\ AAktuálny čas v 24-hodinovom formáte HH: MM (napr. 19:23 ).
\ uUžívateľské meno aktuálneho používateľa.
\ vČíslo verzie Bash (napr. 4.3 ).
\ VBash verzia a číslo záplaty (napr. 4.3.30 ).
\ wAktuálny adresár. Domovský adresár používateľa je skrátený ako tilda (" ~ "). Napríklad / usr / bin, ~, alebo ~ / documents
\ WZákladný názov aktuálneho pracovného adresára (napr. Bin, ~ alebo dokumenty ).
\!Číslo aktuálneho príkazu.
\ #Číslo príkazu aktuálneho príkazu (čísla príkazov sú ako čísla histórie, ale pri spustení novej relácie bash sa resetujú na nulu).
nnnASCII znak, ktorého osmičková hodnota je nnn.
\\Spätné lomítko
\ [Označuje začiatok akejkoľvek sekvencie netlačiacich znakov, ako sú napríklad kódy na ovládanie terminálu.
\]Označuje koniec netlačiacej postupnosti.
\ $Vytlačí #, ak je UID nula (superuser) alebo $ ak je väčšia ako nula (ktokoľvek iný).

Zmena výzvy pre aktuálnu reláciu

Premennú prostredia PS1 môžete nastaviť tak, ako akoukoľvek inou premennou v bash, s formulárom príkazu NAME = VALUE . Ak chcete nastaviť štandardnú výzvu, môžete na príkazovom riadku zadať nasledujúce.

 PS1 = "[chránený e-mailom] h: W" \ t 

... A vaša výzva sa okamžite zmení. Všimnite si posledný priestor za znakom dolára v reťazci pre ďalší priestor po výzve, čo uľahčuje rozlišovanie príkazov, ktoré zadávate z výzvy. Extra priestor nie je potrebný, ale odporúča sa.

Všimnite si, že v príkaze nie sú medzery medzi PS1, = a reťazcom.

Zmena výzvy pre všetky budúce relácie

Ak chcete zmeniť výzvu pre každú novú reláciu, musíte upraviť svoje súbory bash. Pri každom spustení terminálovej relácie sa tieto súbory, ak existujú, čítajú a spúšťajú ako skripty:

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

~ / .Profile

Prvý súbor, / etc / profile, je spúšťací skript pre ľubovoľného používateľa v systéme, ktorý spustí bash reláciu. Ak chcete zmeniť výzvu pre každého používateľa, musíte tento súbor upraviť a na to potrebujete práva superuživatela.

 sudo vi / etc / profile 

Napríklad vyššie uvedený príkaz vás vyzve na zadanie hesla a ak sa nachádzate v zozname sudoers, otvorte univerzálny súbor bash startup ako superuser pomocou editora vi .

Ďalšie tri súbory sú vyhľadávané v poradí uvedenom vyššie a spustené po súbore / etc / profile . Tieto tri súbory žijú vo vašom domovskom adresári, takže sú vykonávané len pre vás. Môžu definovať PS1 na viac ako jednom mieste, takže by ste si mali pozorne prečítať súbory a zistiť, ako sú nakonfigurované vo vašom systéme. Mnohé systémy budú napríklad používať inú hodnotu PS1 v závislosti od toho, či váš terminál podporuje farbu alebo nie.

Ktorýkoľvek z troch súborov môže existovať a môže byť použitý pre vašu bash reláciu, ale ak existuje viac ako jeden, bude vykonaný v uvedenom poradí.

Ak nechcete odstrániť alebo zmeniť riadky v spúšťacích súboroch, môžete tiež pridať nový príkaz PS1 = na koniec jedného zo súborov, aby ste mohli použiť vlastnú výzvu.

Pridanie farby do výzvy

Ak používate terminál, ktorý podporuje farby (a pravdepodobne ste), do výzvy môžete pridať farbu. Farby sa pridávajú pomocou špeciálnych sekvencií znakov, ktoré nasledujú tento formát:

e [ číslo mZačína farebná časť. Číselná hodnota je špeciálne číslo alebo pár čísel, ktorý určuje farbu.
\ E [moznačuje koniec farebnej časti; obnoví predvolenú farbu

Napríklad reťazec výzvy:

 PS1 = "e [1; 35mToto je jasne purpurová. [0; 35m ... a to je tmavo fialová. \ T 

Zobrazí výzvu, ktorá vyzerá takto:

Tu je zoznam farieb, ktoré môžete použiť, a čísla, ktoré ich určujú:

Číslo (čísla)Farba / ŠtýlČíslo (čísla)Farba / Štýl
0; 30čierna1; 30Tmavo-sivá
0; 31červená1; 31Jasne červená
0; 32zelená1; 32Svetlozelená
0; 33hnedý1; 33žltá
0; 34Modrá1; 34Jasne modrá
0; 35Fialová1; 35Jasný Purple
0; 36Tyrkysový1; 36Jasné azúrové
0; 37šedá1; 37biely
4; 30Čierna, podčiarknutá40pozadia: Tmavo šedá
4; 31Červená, podčiarknutá41pozadie: Červená
4; 32Zelená, podčiarknutá42pozadia: Zelená
4; 33Hnedá, podčiarknutá43pozadie: Žltá
4; 34Modrá, podčiarknutá44pozadie: Modrá
4; 35Fialová, podčiarknutá45pozadie: Purple
4; 36Azúrová, podčiarknutá46pozadie: Azúrová
4; 37Šedá, podčiarknutá47Pozadie: Sivá

Tu sú niektoré príklady a ako vyzerajú:

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

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

 PS1 = "e [44m e [1; 35mBright fialová na modrom pozadí