IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

1. diel - Skriptovanie v Bashi - úvod do skriptovania

V tomto tutoriále sa začneme učiť programovať v skriptovacom jazyku Bash. Vysvetlíme si, čo to Bash znamená, aký je rozdiel medzi kompilovaným a interpretovaným jazykom a ako automatizovať procesy v Linuxe. Všetky lekcie budú vysvetlené na distribúciu Debian. V dnešnej dobe ide o jednu z najpoužívanejších na serveroch. Pri iných distribúciách sa môže stať, že niektoré príkazy alebo umiestnenie konfiguračných súborov môžu byť odlišné.

Linux - Skriptovanie v Bashi

Skriptovací vs kompilovaný jazyk

Existujú dva základné druhy jazykov, kompilovaný a skriptovací alebo aj interpretovaný. Hlavný rozdiel je v tom, že program v kompilovanom jazyku sa musí pomocou špeciálneho prekladača, tzv. kompilátora, preložiť do strojového kódu. Ten sa následne uloží do binárneho súboru (slangovej binárky). Binárny (strojový) kód môže byť následne odovzdaný procesoru na spracovanie. Kompilátor prekladá naraz celý program. Skriptovací (interpretovaný) jazyk sa chová odlišne. Pomocou interpretu vyhodnocuje riadok po riadku a odovzdáva ich procesoru na spracovanie postupne.

Uvedieme si to na príklade. Povedzme, že máme v pláne ísť na výlet. Pri kompilovaných jazykoch sa najskôr pozrieme do mapy, zistíme stav dopravy, nastavíme GPS a následne s istotou pôjdeme naplánovanou trasou až do miesta určenia. Pri skriptovacom jazyku vyrazíme na cestu as každým krokom plánujeme ten ďalší. Môže sa stať, že v polovici cesty narazíme na slepú ulicu. V takom prípade program havaruje.

Výhodou kompilovaného jazyka oproti skriptovaciemu je jednoznačne väčšia rýchlosť. Skriptovacie jazyky sú vo všeobecnosti vysokoúrovňové s veľkou dávkou abstrakcie. Lepšie a rýchlejšie sa v nich preto vyvíja. Na rozdiel od kompilovaných jazykov sú tie skriptovacie často multiplatformné.

Predstavitelia kompilovaných jazykov sú napr. C, C++, C# alebo Java. Za skriptovacie jazyky sa považujú napr. Python, PHP, JavaScript alebo práve Bash.

Čo je to Bash

Bourne Again Shell, skrátene Bash, je interpretovaný jazyk využívaný na skriptovanie v Linuxovom alebo UNIXovom shellu. V súčasnej dobe sa jedná o najpoužívanejší skriptovací jazyk vo svete Linuxu. Bash využijeme všade tam, kde sa často opakujú procesy, napr. pri zálohovaní. Bash skripty uplatníme aj tam, kde potrebujeme automatizovať nejaký zložitejší proces. Napr. ak spravujeme firemný doménový server, môže byť pridanie nového zamestnanca do systému zbytočne zdĺhavé. Bash script za nás môže účet zamestnanca vytvoriť, nastaviť potrebné prístupové práva, VPN a pod. Ušetríme tým čas na inú prácu.

Zoznam dostupných Shellov

Ako už bolo povedané, Bash je v dnešnej dobe jeden z najpoužívanejších jazykov. Nájdeme ho preto vo väčšine distribúcií. Pokiaľ by sme sa chceli presvedčiť, že je naozaj v našom systéme k dispozícii, stačí si vypísať obsah súboru /etc/shells:

cat /etc/shells

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

Zároveň si skontrolujeme, či je Bash nastavený ako predvolený shell. Predvolený shell je uvedený v systémovej premennej SHELL. Vypíšeme si preto do konzoly systémové premenné. Môžeme si výpis sprehľadniť pomocou filtra grep:

printenv | grep ^shell -i

SHELL=/bin/Bash

Ak by ako predvolený shell nebol nastavený Bash, zmeníme to pomocou príkazu export:

export SHELL=/bin/bash

Znak ^ pri príkaze grep nám nastaví filter iba na riadky, ktoré začínajú nasledujúcim reťazcom, v našom prípade SHELL. Prepínač -i (--ignore-case) hovorí shellu, že má ignorovať veľké a malé písmená.

Prvý skript

Teraz si ukážeme, ako v Bashi vytvoriť skript. Skripty sa píšu vždy do bežných súborov (bez špeciálnej prípony). Nie je preto nutné uvádzať príponu súboru, pretože pri spustení skriptu Linuxu sami povieme, že má použiť práve Bash. Už len z konvencie a prehľadnosti je však lepšie ku skriptu pripísať príponu .sh (shell). Vytvoríme teda si nový súbor pre náš skript:

touch script.sh

Je vcelku jedno, v akom editore skript budeme editovať. Môžeme si vybrať, či nám bude viac vyhovovať terminálový editor (vi, vim, nano) alebo grafický (gedit, VScode…). Pretože na serveroch často grafické prostredie chýba, je dobré sa naučiť s terminálovým editorom. V tomto kurze bude použitý terminálový editor nano.

nano script.sh

Nasledujúcim scriptom si vypíšeme do konzoly obsah domovského adresára:

#!/bin/bash

echo “Toto je výpis obsahu domovského adresáře”
ls -l /home/vf

Prvým riadkom hovoríme Linuxu, že ako jazyk používame Bash. Vždy začína znaky #!, čo je tzv shebang. Za ním nasleduje cesta k nášmu skriptovaciemu jazyku. Tú sme si zistili v súbore /etc/shells. Pokiaľ by sme používali miesto Bash napr. Perl, prvý riadok bude začínať #!/bin/Perl. Príkazom echo (ozvena) vypisujeme výstup do konzoly.

Skript uložíme a môžeme ho spustiť. Ako príkaz na spustenie skriptu použijeme bash:

bash script.sh

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 spustiť aj bez príkazu bash. Je k tomu ale potrebné oprávnenie na spúšťanie, ktoré nastavíme príkazom chmod:

sudo chmod +x script.sh

Script potom spustíme zadaním absolútnej či relatívnej cesty ku skriptu. Pokiaľ sa nachádzame v rovnakom adresári, relatívna cesta bude vyzerať takto:

./script.sh

Komentáre

Komentár je časť kódu, ktorú interpret pri vykonávaní príkazov preskočí, akoby v skripte vôbec nebola. Môžeme ho využiť ako poznámku pre lepšie zorientovanie v kóde alebo na dočasné vyradenie časti kódu. Komentáre začínajú znakom #. Na slovenskej klávesnici ho napíšeme pomocou klávesovej skratky 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

Keď si skúsime spustiť tento skript, vypíše sa nám do konzoly iba riadok Ahoj Světe:

bash script.sh

Ahoj Světe

Týmto sme sa zoznámili s úplným základom skriptovania v Bashi. Znalosti využijeme v ďalších lekciách pri tvorbe výrazne zložitejších (a zaujímavejších) skriptov.

V ďalšej lekcii sa pozrieme na premenné v Bashi. Povieme si čo je to premenná a ako nám uľahčí prácu pri skriptovaní.


 

Všetky články v sekcii
Skriptovanie v Bashi
Preskočiť článok
(neodporúčame)
Skriptovanie v Bashi - premenné
Článok pre vás napísal Václav Franz
Avatar
Užívateľské hodnotenie:
1 hlasov
Aktivity