Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Skriptování v Bashi - Úvod do skriptování

V tomto tutoriálu se začneme učit programovat ve skriptovacím jazyku Bash. Vysvětlíme si, co to Bash znamená, jaký je rozdíl mezi kompilovaným a interpretovaným jazykem a jak automatizovat procesy v Linuxu. Všechny lekce budou vysvětleny na distribuci Debian. V dnešní době jde o jednu z nejpoužívanějších na serverech. U jiných distribucí se může stát, že některé příkazy nebo umístění konfiguračních souborů mohou být odlišné.

Linux - Skriptování v Bashi

Minimální požadavky

Pro úspěšné zvládnutí tohoto kurzu je nutné znát alespoň základy Linuxu. Ideálně v rozsahu tohoto kurzu. Vhodná je také orientace v některém z programovacích jazyků, byť opět na základní úrovni. Například jazyka C.

Skriptovací vs kompilovaný jazyk

Existují dva základní druhy jazyků, kompilovaný a skriptovací nebo také interpretovaný. Hlavní rozdíl je v tom, že program v kompilovaném jazyce se musí pomocí speciálního překladače, tzv. kompilátoru, přeložit do strojového kódu. Ten se následně uloží do binárního souboru (slangově binárky). Binární (strojový) kód může být následně předán procesoru ke zpracování. Kompilátor překládá najednou celý program. Skriptovací (interpretovaný) jazyk se chová odlišně. Pomocí interpretu vyhodnocuje řádek po řádku a předává je procesoru ke zpracování postupně.

Uvedeme si to na příkladu. Řekněme, že máme v plánu jet na výlet. U kompilovaných jazyků se nejprve podíváme do mapy, zjistíme stav dopravy, nastavíme GPS a následně s jistotou pojedeme naplánovanou trasou až do místa určení. U skriptovacího jazyka vyrazíme na cestu a s každým krokem plánujeme ten další. Může se stát, že v půlce cesty narazíme na slepou ulici. V takovém případě program havaruje.

Výhodou kompilovaného jazyka oproti skriptovacímu je jednoznačně větší rychlost. Skriptovací jazyky jsou obecně vysokoúrovňové s velkou dávkou abstrakce. Lépe a rychleji se v nich proto vyvíjí. Na rozdíl od kompilovaných jazyků jsou ty skriptovací často multiplatformní.

Představitelé kompilovaných jazyků jsou např. C, C++, C# nebo Java. Za skriptovací jazyky se považují např. Python, PHP, JavaScript nebo právě Bash.

Co je to Bash

Bourne Again Shell, zkráceně Bash, je interpretovaný jazyk využívaný ke skriptování v Linuxovém nebo UNIXovém shellu. V současné době se jedná o nejpoužívanější skriptovací jazyk ve světě Linuxu. Bash využijeme všude tam, kde se často opakují procesy, např. při zálohování. Bash skripty uplatníme i tam, kde potřebujeme automatizovat nějaký složitější proces. Např. spravujeme-li firemní doménový server, může být přidání nového zaměstnance do systému zbytečně zdlouhavé. Bash script za nás může účet zaměstnance vytvořit, nastavit potřebná přístupová práva, VPN apod. Ušetříme tím čas na jinou práci.

Seznam dostupných Shellů

Jak bylo již bylo řečeno, Bash je v dnešní době jeden z nejpoužívanějších jazyků. Najdeme ho proto ve většině distribucí. Pokud bychom se chtěli přesvědčit, že je opravdu v našem systému k dispozici, stačí si vypsat obsah souboru /etc/shells:

cat /etc/shells

V konzoli vidíme výstup:

Konzolová aplikace
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

Zároveň si zkontrolujeme, zda je Bash nastavený jako výchozí shell. Výchozí shell je uveden v systémové proměnné SHELL. Vypíšeme si proto do konzole systémové proměnné. Můžeme si výpis zpřehlednit pomocí filtru grep:

printenv | grep ^shell -i

Výstupem je:

Konzolová aplikace
SHELL=/bin/Bash

Pokud by jako výchozí shell nebyl nastavený Bash, změníme to pomocí příkazu export:

export SHELL=/bin/bash

Znak ^ u příkazu grep nám nastaví filtr pouze na řádky, které začínají následujícím řetězcem, v našem případě SHELL. Přepínač -i (--ignore-case) říká shellu, že má ignorovat velká a malá písmena.

První skript v Bashi

Nyní si ukážeme, jak v Bashi vytvořit skript. Skripty se píší vždy do běžných souborů (bez speciální přípony). Není proto nutné uvádět příponu souboru, jelikož při spuštění skriptu Linuxu sami řekneme, že má použít právě Bash. Už jenom z konvence a přehlednosti je ovšem lepší ke skriptu připsat příponu .sh (shell). Vytvoříme tedy si nový soubor pro náš skript:

touch script.sh

Je vcelku jedno, v jakém editoru skript budeme editovat. Můžeme si vybrat, jestli nám bude více vyhovovat terminálový editor (vi, vim, nano) nebo grafický (gedit, VScode…). Protože na serverech často grafické prostředí chybí, je dobré se naučit s terminálovým editorem. V tomto kurzu bude použit terminálový editor nano:

nano script.sh

Následujícím scriptem si vypíšeme do konzole obsah domovského adresáře:

#!/bin/bash
echo "Toto je výpis obsahu domovského adresáře"
ls -l /home/vf

Prvním řádkem říkáme Linuxu, že jako jazyk používáme Bash. Vždy začíná znaky #!, což je tzv. shebang. Za ním následuje cesta k našemu skriptovacímu jazyku. Tu jsme si zjistili v souboru /etc/shells. Pokud bychom používali místo Bash např. Perl, první řádek bude začínat #!/bin/Perl. Příkazem echo (ozvěna) vypisujeme výstup do konzole.

Skript uložíme a můžeme ho spustit. Jako příkaz pro spuštění skriptu použijeme bash:

bash script.sh

Výstupem je:

Konzolová aplikace
Toto je výpis obsahu domovského adresáře
drwxr-xr-x  2 vf vf 4096 srp 12 10:12 Desktop
drwxr-xr-x  2 vf vf 4096 říj 13 07:39 Documents
drwxrwxr-x+ 2 vf vf 4096 zář 20 13:12 Downloads
drwxr-xr-x  2 vf vf 4096 srp 12 10:12 Music
drwxr-xr-x  3 vf vf 4096 srp 15 15:40 Pictures
drwxr-xr-x  2 vf vf 4096 srp 12 10:12 Public
drwx------  5 vf vf 4096 srp 28 18:53 snap
drwxr-xr-x  2 vf vf 4096 srp 12 10:12 Templates
drwxr-xr-x  2 vf vf 4096 srp 12 10:12 Videos

Script můžeme spustit i bez příkazu bash. Je k tomu ale zapotřebí oprávnění pro spouštění, které nastavíme příkazem chmod:

sudo chmod +x script.sh

Script poté spustíme zadáním absolutní či relativní cesty ke skriptu. Pokud se nacházíme ve stejném adresáři, relativní cesta bude vypadat takto:

./script.sh

Komentáře v Bashi

Komentář je část kódu, kterou interpret při provádění příkazů přeskočí, jakoby ve skriptu vůbec nebyla. Můžeme ho využít jako poznámku pro lepší zorientování v kódu nebo k dočasnému vyřazení části kódu. Komentáře začínají znakem #. Na české klávesnici jej napíšeme pomocí klávesové zkratky pravý Alt + X:

#!/bin/bash

# Toto je komentář a v programu se nijak funkčně neprojeví

#echo "Hello World"

echo "Ahoj Světe" # komentáře lze psát i za funkční příkaz

Když si zkusíme spustit tento skript, vypíše se nám do konzole pouze řádek Ahoj Světe:

Konzolová aplikace
Ahoj Světe

Tímto jsme se seznámili s úplným základem skriptování v Bashi. Znalosti využijeme v dalších lekcích při tvorbě výrazně složitějších (a zajímavějších) skriptů.

V další lekci, Skriptování v Bashi - Proměnné, se podíváme na proměnné v Bashi. Řekneme si co je to proměnná a jak nám usnadní práci při skriptování.


 

Všechny články v sekci
Skriptování v Bashi
Přeskočit článek
(nedoporučujeme)
Skriptování v Bashi - Proměnné
Článek pro vás napsal Václav Franz
Avatar
Uživatelské hodnocení:
47 hlasů
Aktivity