Skriptování v Bash
Úvod do Bash skriptování
Bash (Bourne Again SHell) je populární příkazový interpretr používaný v operačních
systémech Linux a Unix. Skriptování v Bash umožňuje automatizovat různé úkoly, což šetří
čas a zvyšuje efektivitu práce. Tento článek vám představí základy syntaxe a struktury Bash
skriptů, ukáže, jak vytvářet a spouštět vlastní skripty, a vysvětlí, jak automatizovat úlohy
pomocí Bash.
Základy syntaxe a struktury Bash skriptů
Struktura Bash skriptu
Každý Bash skript začíná tzv. "shebangem", který říká systému, jaký interpretr použít pro
vykonání skriptu. Následují příkazy, které skript vykonává.
#!/bin/bash
# Tento skript vypíše "Ahoj, světe!"
echo "Ahoj, světe!"
- Shebang (
#!/bin/bash): Určuje, že skript bude vykonáván pomocí Bash. - Komentáře (
#): Text za znakem#je komentář a není vykonáván. Slouží k vysvětlení
kódu. - Příkazy (
echo):echovypíše text na obrazovku.
Proměnné
Proměnné slouží k ukládání hodnot, které lze později v skriptu použít.
#!/bin/bash
# Skript pro zobrazení jména
jmeno="Anna"
echo "Ahoj, $jmeno!"
- Definice proměnné:
jmeno="Anna" - Použití proměnné:
$jmeno
Podmínky
Podmínky umožňují vykonávat příkazy na základě splnění určitých kritérií.
#!/bin/bash
# Skript kontrolující, zda je soubor
soubor="dokument.txt"
if [ -f "$soubor" ]; then
echo "Soubor $soubor existuje."
else
echo "Soubor $soubor neexistuje."
fi
if [ -f "$soubor" ]; then: Kontroluje, zda soubor existuje.echo: V ypíše zprávu podle výsledku podmínky.fi: Ukončuje podmínku.
Smyčky
Smyčky opakují určité příkazy vícekrát.
For smyčka:
#!/bin/bash
# Skript vypisující čísla od 1 do 5
for i in {1..5}
do
echo "Číslo: $i"
done
for i in {1..5}: Prochází čísla od 1 do 5.echo "Číslo: $i": V ypíše aktuální číslo.
While smyčka:
#!/bin/bash
# Skript vypisující čísla od 1 do 5 pomocí while smyčky
i=1
while [ $i -le 5 ]
do
echo "Číslo: $i"
((i++))
done
while [ $i -le 5 ]: Pokračuje, dokud jeimenší nebo rovno 5.((i++)): Zvyšuje hodnotuio 1.
Funkce
Funkce umožňují opakované použití kódu.
#!/bin/bash
# Skript s funkcí na pozdravení
pozdrav() {
echo "Ahoj, $1!"
}
pozdrav "Anna"
pozdrav "David"
- Definice funkce:
pozdrav() { ... } - V olání funkce:
pozdrav "Anna"
V ytváření a spouštění vlastních skriptů
Krok 1: V ytvoření skriptu
- Otevřete textový editor: Můžete použít Nano, Vim nebo grafický editor jako Gedit.
- Napište váš skript: Například:
#!/bin/bash
echo "Toto je můj první Bash skript!"
- Uložte soubor s příponou
.sh: Napříkladprvni_skript.sh.
Krok 2: Nastavení spustitelnosti
Před spuštěním skriptu je třeba nastavit, aby byl spustitelný.
chmod +x prvni_skript.sh
chmod +x: Přidá právo na spuštění skriptu.
Krok 3: Spuštění skriptu
Skript lze spustit následujícím způsobem:
./prvni_skript.sh
Výstup bude:
Toto je můj první Bash skript!
Automatizace úloh a zvýšení efektivity práce
Bash skripty jsou velmi užitečné pro automatizaci opakujících se úkolů, jako je zálohování
dat, správa souborů nebo instalace softwaru.
Příklad 1: Automatické zálohování složky
#!/bin/bash
# Skript pro zálohování složky Dokumenty
zdroj="/home/uzivatel/Dokumenty"
cil="/home/uzivatel/Zalohy/Dokumenty_$(date +%Y%m%d).tar.gz"
tar -czvf $cil $zdroj
echo "Záloha byla vytvořena: $cil"
zdroj: Cesta ke složce, kterou chcete zálohovat.cil: Cesta k záložnímu souboru s aktuálním datem.tar -czvf: V ytváří komprimovaný archiv.echo: V ypíše zprávu o úspěšném vytvoření zálohy.
Naplánování skriptu pomocí cron
Cron je nástroj pro plánování úloh v Linuxu. Skript můžete naplánovat, aby běžel
automaticky každý den.
- Otevřete crontab:
crontab -e
- Přidejte následující řádek pro spuštění skriptu každý den v 2 hodiny ráno:
0 2 * * * /home/uzivatel/Zalohy/prvni_skript.sh
0 2 * * *: Časový plán (minuta, hodina, den, měsíc, den v týdnu)./home/uzivatel/Zalohy/prvni_skript.sh: Cesta ke skriptu.
Příklad 2: Hromadné přejmenování souborů
#!/bin/bash
# Skript pro přejmenování všech .txt souborů na .bak
for file in *.txt
do
mv "$file" "${file%.txt}.bak"
done
echo "Přejmenování dokončeno."
for file in *.txt: Pro každý soubor s příponou.txt.mv "$file" "${file%.txt}.bak": Přejmenuje soubor na.bak.echo: V ypíše zprávu o dokončení.
Příklad 3: Automatická aktualizace systému
#!/bin/bash
# Skript pro automatickou aktualizaci systému na Ubuntu
sudo apt update && sudo apt upgrade -y
echo "Systém byl aktualizován."
sudo apt update: Aktualizuje seznam dostupných balíčků.sudo apt upgrade -y: Aktualizuje nainstalované balíčky bez potvrzení.echo: V ypíše zprávu o úspěšné aktualizaci.
Praktické tipy pro Bash skriptování
- Testování skriptů: Před nasazením skriptu ho vždy otestujte, abyste se ujistili, že
funguje správně. - Používejte komentáře: Komentáře pomáhají vysvětlit, co skript dělá, což usnadňuje
jeho údržbu. - Chybová kontrola: Přidejte kontrolu chyb, aby skript správně reagoval na neočekávané
situace.
if [ $? -eq 0 ]; then
echo "Příkaz byl úspěšný."
else
echo "Příkaz selhal."
fi
- Modularita: Rozdělte složité skripty na menší funkce pro lepší přehlednost a údržbu.
- Používejte proměnné: Ukládejte často používané hodnoty do proměnných pro snadnější
úpravy skriptu.
#!/bin/bash
cesta="/home/uzivatel/Dokumenty"
echo "Pracuji se složkou: $cesta"
Další zdroje a doporučení
- Oficiální dokumentace Bash: GNU Bash Reference
Manual - Online kurzy a tutoriály: Například Codecademy Bash
Course - Knihy: "Learning the bash Shell" od Cameron Newham
Příklady použití Bash skriptů
- Automatická aktualizace systému:
#!/bin/bash
sudo apt update && sudo apt upgrade -y
echo "Systém byl aktualizován."
- Hromadné přejmenování souborů:
#!/bin/bash
for file in *.txt
do
mv "$file" "${file%.txt}.bak"
done
echo "Přejmenování dokončeno."
- Zálohování databáze:
#!/bin/bash
databaze="/var/lib/mysql/mojedb"
zalohy="/home/uzivatel/Zalohy/mojedb_$(date +%Y%m%d).sql"
mysqldump -u uzivatel -p mojedb > $zalohy
echo "Záloha databáze byla vytvořena: $zalohy"