Většina distribucí Linuxu konfiguruje výzvu Bash tak, aby vypadala podobně
username @ hostname: adresář $
. Můžete však nakonfigurovat výzvu Bash tak, aby obsahovala vše, co se vám líbí, a dokonce si vybrat barvy, které se vám líbí.
Ukázkové kroky zde byly provedeny na Ubuntu 16.04 LTS. Proces by měl být stejný v ostatních distribucích Linuxu, i když výchozí výzva Bash a nastavení v souboru .bashrc se mohou trochu lišit.
Kde je proměnná výzvy uložena
Konfigurace výzvy Bash je uložena v souboru .bashrc vašeho uživatelského účtu, který je na
~ / .bashrc
. Pokud je tedy vaše uživatelské jméno bob, soubor se nachází na
/home/bob/.bashrc
.
Soubor můžete otevřít a zobrazit aktuální proměnnou Bash. Jako ukázkový textový editor použijeme nano, i když můžete také použít my , emacs nebo jakýkoli jiný textový editor, který vám vyhovuje. Otevřete terminál a spusťte:
nano ~ / .bashrc
Přejděte dolů na ikonu
Ψ1 =
sekce. První proměnná vypadá dost komplikovaně, protože obsahuje informace o barvě - vysvětlíme to později. Druhá proměnná bez barevných informací zní takto:
900 000 $ \ u @ \ h: \ w \ $
To je stále trochu komplikované kvůli
${debian_chroot:+($debian_chroot)}
bity. Tím pouze řeknete Bashovi, aby vás informoval, pokud používáte prostředí chrootů Debianu a obvykle se nezobrazí. Ignorujeme je, zde je výchozí struktura proměnné řádku Bash:
\ u @ \ h: \ w \ $
\ u
označuje vaše uživatelské jméno,
@
označuje znak @,
\ h
označuje název hostitele (název počítače),
:
označuje: znak,
\v
označuje pracovní adresář a
\$
označuje $, pokud jste běžný uživatelský účet, nebo #, pokud jste root. Dáme-li to dohromady, dostanete
username @ hostname: working_directory $
.
Chcete-li změnit výzvu Bash, stačí přidat, odebrat nebo změnit uspořádání speciálních znaků v proměnné PS1. Existuje ale mnohem více proměnných, které můžete použít, než ty výchozí.
Textový editor zatím nechejte - v nano ukončete stisknutím Ctrl + X. Ukážeme vám, jak experimentovat s proměnnými, než skutečně zapíšete novou do souboru .bashrc.
Jak vytvořit vlastní Bash výzvu
Vaše konfigurace výzvy Bash je uložena v proměnné PS1. Chcete-li uložit obsah proměnné PS1 do nové proměnné, spusťte následující příkaz:
VÝCHOZÍ = PS1 $
Nyní můžete nastavit proměnnou PS1 na různé hodnoty pro experimentování. Například první řádek by zde nastavil vaši výzvu na základní výzvu „user $“, zatímco druhý by nastavil vaši výzvu na základní výzvu „user: working_directory $“.
PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"
Pokud se někdy budete chtít vrátit na výchozí výzvu, spusťte následující příkaz.
PS1 = $ DEFAULT
Bash bude obnoven na výchozí výzvu díky tomu, že jste tato výchozí nastavení uložili dříve. Upozorňujeme, že všechny změny, které zde provedete, jsou pro aktuální relaci Bash pouze dočasné, takže se můžete kdykoli odhlásit a znovu přihlásit nebo zavřít a znovu otevřít okno terminálu a vrátit se zpět na výchozí výzvu. Výše uvedený řádek však umožňuje snadno se vrátit k vaší výchozí výzvě Bash bez potíží s odhlášením nebo zavřením okna.
Do proměnné můžete přidat libovolné znaky nebo text. Chcete-li tedy před výchozí výzvu zadat „Hello World“, můžete použít:
PS1 = "Hello World \ u @ \ h: \ w \ $"
Teď, když máte základní znalosti, stačí vědět, jaké jsou všechny speciální postavy. Pravděpodobně vás nebude zajímat mnoho z nich, ale zde je úplný seznam, jak je uveden v manuál Bash :
-
Znak zvonu:
\A -
Datum ve formátu „Datum v pracovní den v měsíci“ (např. „Út 26. května“):
\ d -
Formát je předán strftime (3) a výsledek je vložen do řetězce výzvy; prázdný formát vede k časové reprezentaci konkrétního národního prostředí. Šle jsou povinné:
\ D{format} -
Úniková postava:
\je -
Název hostitele, až po první znak „.“:
\ h -
Název hostitele:
\ H -
Počet úloh aktuálně spravovaných shellem:
\ j -
Základní název názvu koncového zařízení prostředí:
\ l -
Nový řádek:
\ n -
Návrat vozíku:
\ r -
Název shellu, základní jméno $ 0 (část za posledním lomítkem):
\s -
Čas ve 24hodinovém formátu HH: MM: SS:
\ t -
Čas ve 12hodinovém formátu HH: MM: SS:
\ T -
Čas ve 12hodinovém formátu am / pm:
\@ -
Čas ve 24hodinovém formátu HH: MM:
\A -
Uživatelské jméno aktuálního uživatele:
\ u -
Verze Bash (např. 2.00):
\v -
Vydání Bash, verze + patchlevel (např. 2.00.0):
\V -
Aktuální pracovní adresář s $ HOME zkráceným vlnovkou (používá proměnnou $ PROMPT_DIRTRIM):
\v -
Základní jméno $ PWD, s $ HOME zkráceně vlnovkou:
\V -
Číslo historie tohoto příkazu:
\! -
Číslo příkazu tohoto příkazu:
\# -
Pokud je efektivní uid 0, #, jinak $:
\$ -
Znak, jehož kód ASCII je osmičková hodnota nnn:
\ nnn -
Zpětné lomítko:
\\ -
Začněte posloupnost netisknutelných znaků. To by mohlo být použito k vložení řídicí sekvence terminálu do výzvy:
\[ -
Ukončení sekvence netisknutelných znaků:
\]
Pokud jste tedy chtěli přidat datum a čas do příkazového řádku Bash a umístit pracovní adresář na příkaz na druhém řádku, můžete použít následující konstrukci:
PS1 = "[\d \t] \ u @ \ h \ n \ w \ $"
Hranaté závorky zde nejsou vůbec nutné, ale pomáhají vizuálně rozdělit věci a usnadňují čtení řádku. Jak jsme již zmínili dříve, do proměnné, která se vám líbí, můžete přidat libovolný text nebo normální znaky, takže můžete použít cokoli, co vám vyhovuje.
Existuje ještě jeden mocnější trik, o kterém byste měli vědět: Do výzvy můžete přidat výstup libovolného příkazu. Kdykoli se zobrazí výzva, Bash spustí příkaz a vyplní aktuální informace. Chcete-li to provést, stačí zahrnout libovolný příkaz, který chcete spustit mezi dvěma
`
znaky. To není apostrof - to je vážný přízvuk, který se objeví nad klávesou Tab na vaší klávesnici.
Řekněme například, že chcete ve výzvě zobrazit verzi jádra Linuxu. Můžete použít řádek, jako je následující:
PS1 = "\ u @ \ h na ʻuname -s -r` \ w \ $"
Jako další příklad řekněme, že chcete zobrazit průměrnou dobu provozuschopnosti a zatížení systému, jak je zobrazeno na
provozuschopnost
příkaz. Můžete použít následující konstrukci, která uptime na vlastní linku před zbytkem výzvy.
PS1 = "(ʻuptime`) \ n \ u @ \ h: \ w $"
Nebojte se experimentovat s různými speciálními znaky a příkazy a sestavit si ideální příkazový řádek.
Jak přidat barvy do výzvy Bash
Jakmile zjistíte preferovanou výzvu, můžete do ní přidat barvy. To je ve skutečnosti velmi jednoduché, ale proměnná vypadá strašně chaoticky a komplikovaně, pokud nerozumíte tomu, na co se díváte.
Například výchozí proměnná barevného řádku z předchozí verze byla:
{debian_chroot:+($debian_chroot)} \ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
Nebo opětovné odstranění bitů debian_chroot:
\ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
Toto je vlastně jen
\ u @ \ h: \ w $
proměnná z dřívějších, ale s barevnými informacemi. Opravdu to můžeme rozdělit do několika částí:
\[\033[01;32m\]\ u @ \ h\[\033[00m\]:\[\033[01;34m\]\v\[\033[00m\]\$
První část je
\ u @ \ h
bit, kterému předchází informace o barvě, která jej změní na zelenou. Druhým je
:
znak, kterému předchází informace o barvě, která odstraní jakékoli zbarvení. Třetí je
\v
bit, kterému předchází informace o barvě, která jej změní na modrou. Čtvrtý je
\$
bit, kterému předchází informace o barvě, která odstraní jakékoli zbarvení.
Jakmile pochopíte, jak vytvořit vlastní barevné značky, můžete přidat libovolné barvy, které se vám líbí, do libovolných sekcí vašeho Bash, které se vám líbí.
Co potřebujete vědět: Mezi údaje musíte zahrnout celou informaci o barevném kódu
\[
a
\] znak
s. Uvnitř značky musíte začínat buď
\033[
nebo
\je[
označit Bashovi, že se jedná o barevnou informaci. Oba
\033[
a
\je[
udělat totéž.
\je[
je kratší, takže může být pohodlnější použít, ale použijeme
\033[
zde odpovídá tomu, co se používá ve výchozím nastavení. Na konci značky musíte skončit na
m \
k označení konce barevné značky.
V následujícím přehledu bude vypadat každá barevná značka. Jediným rozdílem jsou informace, které přidáte místo BARVY k definování skutečné barvy:
\[\033[BARVAm \]
Bash umožňuje změnit barvu textu v popředí, přidat do textu atributy jako „tučné“ nebo „podtržené“ a nastavit barvu pozadí.
Zde jsou hodnoty pro text v popředí:
- Černá: 30
- Modrá: 34
- Azurová: 36
- Zelená: 32
- Fialová: 35
- Červená: 31
- Bílá: 37
- Žlutá: 33
Například protože fialový text je barevný kód 32, použili byste
\[\033[
32
m \]
pro fialový text.
Můžete také zadat atribut pro text. Tento atribut musí být přidán před číslo barvy, oddělené středníkem (;). Text s těmito atributy bude vypadat odlišně v různých emulátorech terminálu.
Zde jsou hodnoty pro textové atributy:
- Normální text: 0
- Tučné nebo světlé texty: 1 (záleží na emulátoru terminálu.)
- Ztlumený text: 2
- Podtržený text: 4
- Blikající text: 5 (Toto nefunguje ve většině terminálových emulátorů.)
- Obrácený text: 7 (Tím se převrátí barvy popředí a pozadí, takže pokud je aktuální text bílý text na černém pozadí, uvidíte černý text na bílém pozadí.)
- Skrytý text: 8
Ve skutečnosti nemusíte uvádět běžný textový atribut. To je každopádně výchozí.
Například protože červený text je kód 31 a tučný text je kód 1, použili byste
\[\033[
1;31
m \]
pro tučně červený text.
Můžete také určit barvu pozadí, ale nemůžete přidat atribut barvy pozadí.
Zde jsou hodnoty barev pozadí:
- Černé pozadí: 40
- Modré pozadí: 44
- Azurové pozadí: 46
- Zelené pozadí: 42
- Fialové pozadí: 45
- Červené pozadí: 41
- Bílé pozadí: 47
- Žluté pozadí: 43
Například protože modré pozadí je kód 44,
\[\033[
44
m \]
by určilo modré pozadí.
Můžete určit značky barvy popředí i pozadí. Například 42 představuje zelené pozadí a 31 představuje červený text. Chcete-li, aby se výchozí výzva stala červeným textem na zeleném pozadí, použijte:
Ψ1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "
Prostě zde zadáme jednu barvu pozadí a poté jednu barvu textu v popředí, která začíná na začátku výzvy a použije se na celý text ve výzvě. V proměnné však můžete zadat tolik barevných značek, kolik chcete, aby se různé části vaší výzvy vybarvily, jakkoli chcete.
Barvy pozadí a popředí pokračují kolem výzvy, pokud nezadáte barevný kód 00 a nevymažte informace o barvě. Tuto značku v proměnné můžete také použít k obnovení formátování zpět na výchozí hodnotu někde ve výzvě. Například následující řádek ukončí veškeré zbarvení před
\$
charakter.
Ψ1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "
Jak nastavit novou výchozí výzvu
Po dokončení experimentu s barvami byste měli mít v aktuální relaci výzvu Bash, která se vám líbí. Pravděpodobně ale budete chtít tuto novou výzvu nastavit jako trvalou, aby se automaticky používala ve všech vašich relacích Bash.
Chcete-li to provést, stačí změnit obsah proměnné PS1 v souboru .bashrc, na který jsme se podívali dříve.
Otevřete soubor .bashrc v preferovaném textovém editoru, například:
nano ~ / .bashrc
Přejděte dolů a vyhledejte sekci PS1 =. Stačí nahradit výchozí proměnnou přizpůsobenou proměnnou. Pravděpodobně budete chtít opustit
${debian_chroot:+($debian_chroot)}
samotné bity - ale stejně se neobjeví, pokud nejste v prostředí chroot.
Zadejte svou barevnou proměnnou PS1 pod
pokud [ "$color_prompt" = yes ]; pak
čára. Pod proměnnou zadejte proměnnou bez barev
jiný
čára.
Uložte soubor a zavřete textový editor. Chcete-li například uložit soubor v nano, stiskněte Ctrl + O, stiskněte Enter a poté ukončete stisknutím Ctrl + X.
Při příštím spuštění nového prostředí Bash - například přihlášením na terminálu nebo otevřením nového okna terminálu - se zobrazí přizpůsobená výzva.