Jak přizpůsobit příkazový řádek v bash

V prostředí bash je příkazový řádek zobrazen při zobrazení výzvy k zadání. Na většině systémů to vypadá takto:

Ve výzvě můžete mít informace před spuštěním libovolných příkazů. Výše uvedená výzva například ukazuje následující.

  1. kdo jste (uživatel jmenovaný uživatelem )
  2. kde jste (počítač s názvem myhost )
  3. jaký je váš pracovní adresář ( ~, což je zkratka pro váš domovský adresář)

Snad nejdůležitější je znak dolaru (" $ "), což je speciální znak, který označuje, že jste přihlášeni jako uživatel bez oprávnění root. Pokud jste byli aktuálně přihlášeni jako root, tento znak bude místo toho znakem libry (" # ").

Řetězec reprezentující výzvu je uložen ve speciální proměnné prostředí s názvem PS1 . Výše uvedená výzva vypadá takto.

 "chráněno e-mailem" h: W \ t 

V tomto řetězci jsou čtyři speciální znaky: u, h, W, $ . Jedná se o uniklé sekvence znaků, které jsou nahrazeny skutečnými hodnotami při každém zobrazení výzvy.

Speciální znaky

Sekvence speciálních znaků uvedené v tabulce níže mohou být použity ve výzvě bash shell.

Posloupnost znakůPřekládá k
\AZnak "alarm". Spustí pípnutí nebo blikání obrazovky
dAktuální datum zobrazené ve formátu Dayday Month Date (např. Středa 13. května ).
D { formát }Aktuální datum a čas se zobrazují podle formátu interpretovaného strftime . Pokud je formát vynechán, {{} zobrazí aktuální 12hodinový čas AM / PM (např. 07:23:01 PM ).
\EÚnikový znak (ASCII 27)
e [ číslo mOznačuje začátek sekvence, která se má zobrazit barevně, kde číslo je číslo nebo dvojice čísel, která určuje, jakou barvu a styl použít. Níže naleznete seznam barev a jejich dvojic.
e [mOznačuje konec sekvence, která se má zobrazit barevně.
hNázev hostitele stroje, až po první " . " Například, pokud je jméno hostitele systému myhost.mydomain, h zobrazuje myhost
HPlné jméno počítače.
jPočet pracovních míst spravovaných shellem.
Identifikátor terminálového zařízení shellu, obvykle jednociferné číslo.
nNový řádek
rNávrat nákladu
sNázev shellu (název procesu, který inicioval aktuální bash session).
\ tAktuální čas zobrazený ve 24hodinovém formátu HH: MM: SS (např. 19:23:01 ).
TAktuální čas zobrazený ve 12hodinovém formátu HH: MM: SS (např. 07:23:01 ).
\ @Aktuální čas zobrazený ve 12hodinovém formátu HH: MM: SS AM / PM (např. 07:23:01 PM ).
\AAktuální čas ve formátu 24 hodin HH: MM (např. 19:23 ).
uUživatelské jméno aktuálního uživatele.
\protiČíslo verze Bash (např. 4.3 ).
\PROTIBash verze a číslo záplaty (např. 4.3.30 ).
wAktuální adresář. Domovský adresář uživatele je zkrácen jako tilda (" ~ "). Například / usr / bin, ~, nebo ~ / documents
WJméno aktuálního pracovního adresáře (např. Bin, ~ nebo dokumenty ).
!Číslo historie aktuálního příkazu.
\ #Číslo příkazu aktuálního příkazu (čísla příkazů jsou jako čísla historie, ale při spuštění nové relace bash se resetují na nulu).
nnnZnak ASCII, jehož osmičková hodnota je nnn.
\ TZpětné lomítko
[Označuje začátek libovolné sekvence netisknutých znaků, například kódů pro ovládání terminálu.
\]Označuje konec netiskové sekvence.
$Vytiskne #, pokud UID je nula (superuživatel), nebo $, pokud je větší než nula (kdokoliv jiný).

Změna výzvy pro aktuální relaci

Proměnnou prostředí PS1 můžete nastavit tak, jako jakoukoli jinou proměnnou v bash, s formulářem příkazu NAME = VALUE . Chcete-li nastavit standardní výzvu, můžete na příkazovém řádku zadat následující příkaz.

 PS1 = "[chráněno e-mailem] h: W \ t 

… A vaše výzva se okamžitě změní. Všimněte si poslední mezeru za znakem dolaru v řetězci pro další mezeru po výzvě, což usnadňuje rozlišení příkazů, které zadáváte z výzvy. Prostor navíc není nutný, ale doporučuje se.

Všimněte si, že v příkazu nejsou žádné mezery mezi PS1, = a řetězcem.

Změna výzvy pro všechny budoucí relace

Pokud chcete změnit výzvu pro každou novou relaci, je třeba upravit soubory spouštění bash. Pokaždé, když spustíte relaci terminálu, jsou následující soubory, pokud existují, načteny a provedeny jako skripty:

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

~ / .profil

První soubor / etc / profile je spouštěcí skript pro každého uživatele v systému, který spustí bash relaci. Chcete-li změnit výzvu pro každého uživatele, musíte tento soubor upravit a k tomu potřebujete oprávnění superuživatele.

 sudo vi / etc / profile 

Například výše uvedený příkaz vás vyzve k zadání hesla a pokud se nacházíte v seznamu sudoers, otevřete univerzální spouštěcí soubor bash jako superuser pomocí editoru vi .

Další tři soubory jsou vyhledány v pořadí uvedeném výše a provedeny po souboru / etc / profile . Tyto tři soubory žijí ve vašem domovském adresáři, takže jsou prováděny pouze pro vás. Mohou definovat PS1 na více než jednom místě, takže byste měli soubory pečlivě číst, abyste zjistili, jak jsou nakonfigurovány ve vašem systému. Například, mnoho systémů bude používat jinou hodnotu PS1 v závislosti na tom, zda váš terminál podporuje barvu.

Kterýkoli ze tří souborů může existovat a může být použit pro vaši bash session, ale pokud existuje více než jeden, budou provedeny v uvedeném pořadí.

Pokud nechcete odstranit nebo změnit řádky ve spouštěcích souborech, můžete také přidat nový příkaz PS1 = na konec jednoho ze souborů a použít vlastní výzvu.

Přidání barvy do výzvy

Pokud používáte terminál, který podporuje barvy (a pravděpodobně jste), můžete do výzvy přidat barvu. Barvy se přidávají pomocí speciálních sekvencí znaků, které následují tento formát:

e [ číslo mZačíná barevný řez. Číselná hodnota je speciální číslo nebo dvojice čísel, která určuje barvu.
e [moznačuje konec barevné sekce; obnoví výchozí barvu

Řetězec výzvy:

 PS1 = "e [1; 35m To je jasně purpurová. \ T [0; 35m ... a to je tmavě fialová. \ T 

Zobrazí výzvu, která vypadá takto:

Zde je seznam barev, které můžete použít, a čísla, která je určují:

Číslo (čísla)Barva / StylČíslo (čísla)Barva / Styl
0;Černá1;Tmavě šedá
0;Červené1;Jasně červená
0;Zelená1;Světle zelená
0;Hnědý1;Žlutá
0;Modrý1;Zářivě modrá
0;Nachový1;Jasně fialová
0;Tyrkysová1;Jasně azurová
0;Šedá1;Bílý
4;Černá, podtržená40pozadí: Tmavě šedá
4;Červená, podtržená41pozadí: červená
4;Zelená, podtržená42pozadí: zelená
4;Brown, podtržený43pozadí: žlutá
4;Modrá, podtržená44pozadí: modrá
4;Fialová, podtržená45pozadí: Fialová
4;Azurová, podtržená46pozadí: azurová
4;Šedá, podtržená47Pozadí: Šedá

Zde je několik příkladů a jejich vzhled:

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

 PS1 = "Podtržené: 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 modrém pozadí