GNU/Linux >> Znalost Linux >  >> Linux

Bash Scripting Úvodní kurz s 5 praktickými příklady

Podobně jako naše probíhající série Unix Sed a Unix Awk zveřejníme několik článků o skriptování Bash, který pokryje všechny techniky skriptování bash s praktickými příklady.

Shell je program, který interpretuje uživatelské příkazy. Příkazy zadává buď přímo uživatel, nebo je čtou ze souboru zvaného skript shellu.

Shell se nazývá interaktivní shell, když čte vstup od uživatele přímo.

Shell se nazývá neinteraktivní shell, když čte příkazy ze souboru a provádí je. V tomto případě shell přečte každý řádek souboru skriptu shora dolů a provede každý příkaz, jako by byl zadán přímo uživatelem.

Vypište hodnotu vestavěné proměnné shellu $-, abyste věděli, zda je shell interaktivní nebo neinteraktivní.

# echo $-
himBH

Poznámka:proměnná $- obsahuje „i“, když je shell interaktivní .

Unix má různé Shelly. Bourne shell (sh), Bourne znovu shell (bash), C shell (csh), Korn shell (ksh), Tenex C shell (tcsh). Pomocí unixových příkazů who nebo whereis zjistěte, kde se nachází konkrétní shell, jak je znázorněno níže.

# which bash
/bin/bash

# whereis bash
bash: /bin/bash /usr/share/man/man1/bash.1.gz

Mezi shelly můžete přepínat zadáním názvu shellu. Například zadejte csh pro přepnutí do prostředí C.

Psaní a provádění skriptu shellu

Příklad 1. Skript Hello World Bash

  1. Vytvořte skript zadáním následujících dvou řádků do souboru pomocí svého oblíbeného editoru.
  2. $ cat helloworld.sh
    #!/bin/bash
    echo Hello World
  3. Pro soubor můžete zvolit libovolný název. Název souboru by neměl být stejný jako žádný z vestavěných příkazů Unixu.
  4. Skript vždy začíná dvěma znaky „#!“, což se nazývá ona-bang. To znamená, že soubor je skript a měl by být spuštěn pomocí interpretu (/bin/bash) specifikovaného zbytkem prvního řádku v souboru.
  5. Spusťte skript, jak je uvedeno níže. Pokud máte nějaké problémy se spouštěním skriptu shellu, podívejte se na tutoriál pro provádění skriptů shell
  6. $ bash helloworld.sh
    Hello World
  7. Když spustíte příkaz „bash helloworld.sh“, spustí se neinteraktivní shell a předá mu název souboru jako argument.
  8. První řádek sděluje operačnímu systému, který shell má spustit, aby mohl skript spustit.
  9. Ve výše uvedeném příkladu překladač bash, který interpretuje skript a provádí příkazy jeden po druhém shora dolů.
  10. Skript můžete dokonce spustit bez úvodního „bash“ pomocí:
    • Změňte oprávnění ve skriptu tak, abyste jej (uživateli) mohli spustit pomocí příkazu „chmod u+x helloworld.sh“.
    • Adresář obsahující skript by měl být zahrnut do proměnné prostředí PATH. Pokud není zahrnut, můžete skript spustit zadáním absolutní cesty skriptu.
  11. echo je příkaz, který jednoduše vydává argument, který mu zadáme. Používá se také k vytištění hodnoty proměnné.

Soubory Bash-Startup

Jak jsme probrali dříve v našem článku o sekvenci provádění pro .bash_profile a související soubory, když je bash vyvolán jako interaktivní shell, nejprve načte a provede příkazy z /etc/profile. Pokud /etc/profile neexistuje, načte a provede příkazy z ~/.bash_profile, ~/.bash_login a ~/.profile v daném pořadí. Volba –noprofile může být použita při spuštění shellu k potlačení tohoto chování.

Váš bash_profile obvykle spouští ~/.bashrc. Pokud chcete, můžete ukázat uvítací zprávu. Toto se spustí pouze při prvním přihlášení. Proměnné můžete exportovat, co chcete, a můžete nastavit aliasy, které budou spuštěné a dostupné po otevření shellu. Když se přihlašovací shell ukončí, Bash čte a provádí příkazy ze souboru ~/.bash_logout.

Příklad 2. Po přihlášení vytiskněte uvítací zprávu

Do souboru bash_profile zadejte následující obsah. Pokud soubor neexistuje, vytvořte soubor s níže uvedeným obsahem.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

Když se přihlásíte do interaktivního shellu, uvidíte uvítací zprávy, jak je uvedeno níže.

login as: root
root@dev-db's password:
Welcome on dev-db

Příklad 3. Tisk informací souvisejících se systémem

Když se přihlásíte do interaktivního shellu, můžete zobrazit název jádra nainstalovaného na serveru, verzi bash, dobu provozu a čas na serveru.

$cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

Když spustíte interaktivní shell, vytiskne zprávu, jak je uvedeno níže.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information:  Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime:  11:24:01 up 21 days, 13:15,  3 users,  load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Příklad 4. Vytiskněte poslední přihlašovací údaje

Pokud více uživatelů používá stejný počítač se stejným přihlášením, pak by nejužitečnějšími údaji byly podrobnosti, jako je počítač, ze kterého proběhlo poslední přihlášení, a čas, kdy se přihlásili. Tento příklad vytiskne poslední přihlašovací údaje během spouštění interaktivního shellu.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

lastlog | grep "kořen" | awk {'print "Poslední přihlášení od:"$3

tisknout "Datum a čas posledního přihlášení:",$4,$5,$6,$7,$8,$9;}'
Během spouštění se zobrazí níže uvedená zpráva.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information:  Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime:  11:24:01 up 21 days, 13:15,  3 users,  load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Poslední přihlášení z:sasikala-laptop

Datum a čas posledního přihlášení:Út 22. února 11:24:01 +0100 2010

Příklad 5. Export proměnných a nastavení aliasů během spouštění

Nejběžnější příkazy, které budete používat ve svých souborech .bashrc a .bash_profile, jsou příkazy export a alias.

Alias ​​jednoduše nahrazuje jeden kus textu jiným. Když spustíte alias, jednoduše nahradí to, co jste zadali, tím, čemu se alias rovná. Chcete-li například nastavit alias pro příkaz ls pro zobrazení souborů/složek s barvami, postupujte takto:

alias ls 'ls --color=tty'

Pokud tento příkaz přidáte do některého ze spouštěcích souborů, můžete provést příkaz ls, kde bude automaticky nahrazen příkazem ls –color=tty.

Příkaz Export se používá k nastavení proměnné prostředí. Systém nebo jiné aplikace používají různé proměnné prostředí. Jsou jednoduše způsobem nastavení parametrů, které může číst jakákoli aplikace/script. Pokud nastavíte proměnnou bez příkazu export, tato proměnná existuje pouze pro tento konkrétní proces.

V níže uvedeném příkladu exportuje proměnnou prostředí HISTSIZE. Řádek, který začíná znakem #, je řádek komentáře.

$ cat /etc/profile
alias ls 'ls --color=tty'

# Setup some environment variables.
export HISTSIZE=1000

PATH=$PATH:$HOME/bin:/usr/bin:/bin/usr:/sbin/etc

export PATH

export SVN_SH=${SVN_RSH-ssh}

Linux
  1. Který Shell Interpreter spouští skript s No Shebang?

  2. Výukový program Awk:Pochopte proměnné Awk pomocí 3 praktických příkladů

  3. 15 užitečných vestavěných příkazů Bash Shell (s příklady)

  1. Jak napsat Bash skript s příklady

  2. Bash Shell Exit Status Tutorial s praktickými příklady

  3. Výukový program Ultimate Bash Array s 15 příklady

  1. Bash HereDoc výukový program s příklady

  2. Shell Scripting Část I:Začínáme se skriptováním bash

  3. Bash For Loop s praktickými příklady