GNU/Linux >> Znalost Linux >  >> Linux

Bash Shell PS1:10 příkladů, díky kterým bude váš Linux rychlý jako Angelina Jolie

Foto s laskavým svolením f1r3storm85

V předchozím článku jsme diskutovali o proměnných prostředí Linux PS[1-4] a PROMPT_COMMAND. Při efektivním používání může PS1 poskytovat cenné informace přímo na příkazovém řádku.

V Tomb Raider má Angelina Jolie na dosah ruky všechny pomůcky a zbraně, aby záhadu vyřešila stylově. Zatímco gadget a styl Angeliny Jolie je těžké vyrovnat, pokusme se alespoň udělat starou dobrou linuxovou výzvu velmi funkční a stylovou pomocí 10 příkladů uvedených v tomto článku.

1. Zobrazit uživatelské jméno, název hostitele a aktuální pracovní adresář ve výzvě

PS1 v tomto příkladu zobrazuje ve výzvě následující tři informace:

  • \u – Uživatelské jméno
  • \h – Název hostitele
  • \w – Úplná cesta k aktuálnímu pracovnímu adresáři
-bash-3.2$ export PS1="\u@\h \w> "

ramesh@dev-db ~> cd /etc/mail
ramesh@dev-db /etc/mail>

2. Zobrazení aktuálního času ve výzvě

V proměnné prostředí PS1 můžete přímo spustit jakýkoli příkaz systému Linux zadáním ve formátu $(linux_command). V následujícím příkladu se provede příkaz $(date) k zobrazení aktuálního času uvnitř výzvy.

ramesh@dev-db ~> export PS1="\u@\h [\$(date +%k:%M:%S)]> "

ramesh@dev-db [11:09:56]>

Můžete také použít \t k zobrazení aktuálního času ve formátu hh:mm:ss, jak je uvedeno níže:

ramesh@dev-db ~> export PS1="\u@\h [\t]> "
ramesh@dev-db [12:42:55]>

Můžete také použít \@ k zobrazení aktuálního času ve 12hodinovém formátu dopoledne/odpoledne, jak je uvedeno níže:

ramesh@dev-db ~> export PS1="[\@] \u@\h> "
[04:12 PM] ramesh@dev-db>

3. Zobrazte výstup libovolného příkazu Linuxu ve výzvě

Ve výzvě můžete zobrazit výstup libovolného příkazu Linuxu. Následující příklad zobrazuje tři položky oddělené | (pipe) v příkazovém řádku:

  • \!: Číslo historie příkazu
  • \h: název hostitele
  • $kernel_version: Výstup příkazu uname -r z proměnné $kernel_version
  • \$?: Stav posledního příkazu
ramesh@dev-db ~> kernel_version=$(uname -r)
ramesh@dev-db ~> export PS1="\!|\h|$kernel_version|\$?> "
473|dev-db|2.6.25-14.fc9.i686|0>

4. Změňte barvu popředí výzvy

Zobrazit výzvu v modré barvě spolu s uživatelským jménem, ​​hostitelem a informacemi o aktuálním adresáři

$ export PS1="\e[0;34m\u@\h \w> \e[m"
[Note: This is for light blue prompt]

$ export PS1="\e[1;34m\u@\h \w> \e[m"
[Note: This is for dark blue prompt]
  • \e[ – Označuje začátek barevné výzvy
  • x;ym – Označuje kód barvy. Použijte hodnoty barevného kódu uvedené níže.
  • \e[m – označuje konec barevné výzvy

Tabulka barevných kódů:

Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
[Note: Replace 0 with 1 for dark color]

Udělejte změnu barvy trvalou přidáním následujících řádků do .bash_profile nebo .bashrc

STARTCOLOR='\e[0;34m';
ENDCOLOR="\e[0m"
export PS1="$STARTCOLOR\u@\h \w> $ENDCOLOR"

5. Změňte barvu pozadí výzvy

Změňte barvu pozadí zadáním \e[{code}m ve výzvě PS1, jak je uvedeno níže.

$ export PS1="\e[47m\u@\h \w> \e[m"
[Note: This is for Light Gray background]

Kombinace pozadí a popředí

export PS1="\e[0;34m\e[47m\u@\h \w> \e[m"
[Note: This is for Light Blue foreground and Light Gray background]

Přidejte následující do .bash_profile nebo .bashrc, aby výše uvedená barva pozadí a popředí byla trvalá.

STARTFGCOLOR='\e[0;34m';
STARTBGCOLOR="\e[47m"
ENDCOLOR="\e[0m"
export PS1="$STARTFGCOLOR$STARTBGCOLOR\u@\h \w> $ENDCOLOR"

Pohrajte si s použitím následující barvy pozadí a vyberte si tu, která vyhovuje vašemu vkusu:

  • \e[40 m
  • \e[41 m
  • \e[42 m
  • \e[43m
  • \e[44m
  • \e[45 m
  • \e[46 m
  • \e[47m

6. Zobrazení více barev ve výzvě

Ve stejné výzvě můžete také zobrazit více barev. Přidejte následující funkci do .bash_profile

function prompt {
  local BLUE="\[\033[0;34m\]"
  local DARK_BLUE="\[\033[1;34m\]"
  local RED="\[\033[0;31m\]"
  local DARK_RED="\[\033[1;31m\]"
  local NO_COLOR="\[\033[0m\]"
  case $TERM in
    xterm*|rxvt*)
      TITLEBAR='\[\033]0;\u@\h:\w\007\]'
      ;;
    *)
      TITLEBAR=""
      ;;
  esac
  PS1="\u@\h [\t]> "
  PS1="${TITLEBAR}\
  $BLUE\u@\h $RED[\t]>$NO_COLOR "
  PS2='continue-> '
  PS4='$0.$LINENO+ '
}

Můžete se znovu přihlásit, aby se změny projevily, nebo zdroj .bash_profile, jak je uvedeno níže.

$. ./.bash_profile
$ prompt
ramesh@dev-db [13:02:13]>

7. Změňte barvu výzvy pomocí tput

Můžete také změnit barvu výzvy PS1 pomocí tput, jak je znázorněno níže:

$ export PS1="\[$(tput bold)$(tput setb 4)$(tput setaf 7)\]\u@\h:\w $ \[$(tput sgr0)\]"

tput Color Capabilities:

  • tput setab [1-7] – Nastavte barvu pozadí pomocí ANSI escape
  • tput setb [1-7] – Nastavte barvu pozadí
  • tput setaf [1-7] – Nastavte barvu popředí pomocí ANSI escape
  • tput setf [1-7] – Nastavte barvu popředí

Možnosti tput textového režimu:

  • tdejte tučné – Nastavte režim tučného písma
  • tput dim – zapněte polojasný režim
  • tput smul – spustit režim podtržení
  • tput rmul – ukončit režim podtržení
  • tput rev – Zapněte zpětný režim
  • tput smso – Vstupte do pohotovostního režimu (tučně na rxvt)
  • tput rmso – Ukončete režim standout
  • tput sgr0 – Vypněte všechny atributy

Barevný kód pro tput:

  • 0 – černá
  • 1 – červená
  • 2 – Zelená
  • 3 – žlutá
  • 4 – modrá
  • 5 – purpurová
  • 6 – azurová
  • 7 – Bílá

8. Vytvořte si vlastní výzvu pomocí dostupných kódů pro proměnnou PS1

Použijte následující kódy a vytvořte si vlastní osobní výzvu pro PS1 Linux, která je funkční a vyhovuje vašemu vkusu. Který kód z tohoto seznamu bude velmi užitečný pro každodenní použití? Zanechte svůj komentář a dejte mi vědět, jaký kód PS1 jste použili pro výzvu systému Linux.

  • \a znak ASCII zvonku (07)
  • \d datum ve formátu „Datum měsíce v týdnu“ (např. „Út 26. května“)
  • \D{format} – formát je předán strftime(3) a výsledek je vložen do promptu; prázdný formát má za následek reprezentaci času specifickou pro národní prostředí. Rovnátka jsou povinná
  • \e znak ASCII (033)
  • \h název hostitele až do první části
  • \H název hostitele
  • \j počet úloh aktuálně spravovaných prostředím
  • \l základní název názvu koncového zařízení shellu
  • \n nový řádek
  • \r návrat vozíku
  • \s název shellu, základní název $0 (část za posledním lomítkem)
  • \t aktuální čas ve 24hodinovém formátu HH:MM:SS
  • \T aktuální čas ve 12hodinovém formátu HH:MM:SS
  • \@ aktuální čas ve 12hodinovém formátu ráno/odpoledne
  • \A aktuální čas ve 24hodinovém formátu HH:MM
  • \u uživatelské jméno aktuálního uživatele
  • \v verzi bash (např. 2.00)
  • \V vydání bash, verze + úroveň opravy (např. 2.00.0)
  • \w aktuální pracovní adresář s $HOME zkráceným vlnovkou
  • \W základní název aktuálního pracovního adresáře s $HOME zkráceným s vlnovkou
  • \! číslo historie tohoto příkazu
  • \# číslo příkazu tohoto příkazu
  • \$ pokud je efektivní UID 0, #, jinak $
  • \nnn znak odpovídající osmičkovému číslu nnn
  • \\ zpětné lomítko
  • \[ začít sekvenci netisknutelných znaků, kterou lze použít k vložení ovládací sekvence terminálu do výzvy
  • \] ukončit sekvenci netisknutelných znaků

9. Použijte funkci bash shell uvnitř proměnné PS1

Můžete také vyvolat funkci bash shell v PS1, jak je znázorněno níže.

ramesh@dev-db ~> function httpdcount {
>  ps aux | grep httpd | grep -v grep | wc -l
> }

ramesh@dev-db ~> export PS1="\u@\h [`httpdcount`]> "
ramesh@dev-db [12]>
[Note: This displays the total number of running httpd processes]

Chcete-li, aby tato změna byla trvalá, můžete do .bash_profile nebo .bashrc přidat následující řádek:

function httpdcount {
  ps aux | grep httpd | grep -v grep | wc -l
}
export PS1='\u@\h [`httpdcount`]> '

10. Použijte skript shellu uvnitř proměnné PS1

Můžete také vyvolat skript shellu uvnitř proměnné PS1. V níže uvedeném příkladu je ~/bin/totalfilesize.sh, který vypočítává celkovou velikost souboru aktuálního adresáře, vyvolán uvnitř proměnné PS1.

ramesh@dev-db ~> cat ~/bin/totalfilesize.sh

for filesize in $(ls -l . | grep "^-" | awk '{print $5}')
do
  let totalsize=$totalsize+$filesize
done
echo -n "$totalsize"

ramesh@dev-db ~> export PATH=$PATH:~/bin
ramesh@dev-db ~> export PS1="\u@\h [\$(totalfilesize.sh) bytes]> "
ramesh@dev-db [534 bytes]> cd /etc/mail
ramesh@dev-db [167997 bytes]>
[Note: This executes the totalfilesize.sh to display the total
       file size of the current directory in the PS1 prompt]


Kolik úprav jste provedli na svém PS1? Dokáže vaše PS1 porazit Angelinu Jolie? Zanechte komentář a sdílejte svůj PS1 hodnota výzvy.

Doporučená četba

Bash Cookbook, Carl Albing, JP Vossen a Cameron Newham . Bash je velmi silná skořápka. Tato kniha vám pomůže zvládnout bash shell a stát se vysoce produktivní. Ať už jste sysadmin, DBA nebo vývojář, musíte v určitém okamžiku napsat skript shellu. Moudrý správce systému ví, že jakmile si osvojíte techniky skriptování v shellu, můžete své servery přepnout do režimu automatického pilotování tím, že necháte skripty shellu pracovat. Abyste se dostali do autopilotního režimu sysadmin, rozhodně musíte zvládnout příklady uvedené v této kuchařce. Existuje několik tichých knih o bashových skořápkách. Ale tato kniha je všechny převyšuje tím, že poskytuje spoustu podrobných příkladů.
 
Dodatečné doporučení knihy pro Linux:12 úžasných a základních knih o Linuxu, které obohatí váš mozek a knihovnu
 
Pokud se vám tento článek líbil, uložte si jej do záložek na del.icio.us a zakopněte o něj.


Linux
  1. Jak nastavit proměnnou $PATH v Linuxu

  2. Zazimujte výzvu Bash v Linuxu

  3. Jak zkrátit Bash Prompt v Linuxu?

  1. Jak změnit barvu vašeho terminálu Linux

  2. Jak předvánočně upravit váš linuxový terminál a Shell

  3. Zvýraznit oddělovače cest v Ps1?

  1. 9 UNIX / Linux tput Příklady:Ovládání barvy a kurzoru terminálu

  2. 12 Bash pro příklady smyček pro vaše skriptování prostředí Linux

  3. Příklady příkazů chsh v Linuxu