Uvod u shell skripte
Do sada smo koristili Linux komande jednu po jednu u terminalu. Shell skripte nam omogućavaju da grupišemo više komandi u jedan fajl i izvršimo ih automatski. To je osnova automatizacije u Linuxu.
Šta je shell skripta?
Shell skripta je običan tekstualni fajl koji sadrži niz komandi koje shell (u našem slučaju Bash) izvršava redom. Zamislite je kao recept — jednom napišete korake, a zatim ih možete ponavljati koliko god puta želite bez ponovnog kucanja.
Primeri upotrebe:
- Automatsko pravljenje rezervnih kopija (backup) fajlova
- Instalacija i podešavanje softvera
- Generisanje izveštaja o sistemu
- Procesovanje velikog broja fajlova
Shebang linija
Svaka Bash skripta treba da počne sa takozvanom shebang linijom:
#!/bin/bash
Ova linija govori operativnom sistemu koji interpreter da koristi za izvršavanje skripte. #! je poseban par karaktera koji kernel prepoznaje, a /bin/bash je putanja do Bash interpretera.
Napomena: Shebang mora biti prva linija fajla, bez razmaka ispred.
Kreiranje prve skripte
Otvorimo editor i napišimo prvu skriptu:
nano zdravo.sh
Sadržaj fajla:
#!/bin/bash
# Ovo je komentar - shell ga ignoriše
# Moja prva skripta
echo "Zdravo, svete!"
echo "Dobrodošli u Bash skriptovanje."
Komentari počinju sa # i protežu se do kraja linije. Koriste se za objašnjavanje koda i neće biti izvršeni.
Pokretanje skripte
Postoje dva načina da pokrenete skriptu.
Način 1: Eksplicitno pozivanje bash-a
bash zdravo.sh
Ovo radi odmah, bez ikakvih promena fajla.
Način 2: Direktno pokretanje (./skripta.sh)
Da biste pokrenuli skriptu direktno, fajl mora biti izvršiv. Dodelite mu dozvolu za izvršavanje:
chmod +x zdravo.sh
Zatim pokrenite:
./zdravo.sh
Zašto ./? Jer shell traži komande samo u direktorijumima navedenim u PATH promenljivoj. Trenutni direktorijum nije u PATH-u iz sigurnosnih razloga, pa moramo eksplicitno navesti putanju.
Primer izlaza:
Zdravo, svete!
Dobrodošli u Bash skriptovanje.
Komentari
Komentari su veoma važni za razumljivost koda:
#!/bin/bash
# Autor: Marko Markovic
# Datum: 2024-01-15
# Opis: Skripta koja prikazuje informacije o sistemu
# Prikazuje ime korisnika
echo "Korisnik: $USER"
# Prikazuje trenutni direktorijum
echo "Direktorijum: $PWD"
Komentari mogu biti:
- Na početku linije:
# ovo je komentar - Na kraju linije posle komande:
echo "test" # ovo je inline komentar
Debugging sa bash -x
Kada skripta ne radi kako treba, možete je pokrenuti u debug modu:
bash -x zdravo.sh
Shell će ispisivati svaku komandu pre nego što je izvrši, uz prefiks +:
+ echo 'Zdravo, svete!'
Zdravo, svete!
+ echo 'Dobrodošli u Bash skriptovanje.'
Dobrodošli u Bash skriptovanje.
Možete uključiti debug mod i unutar same skripte:
#!/bin/bash
set -x # Uključi debug mod
echo "Ova komanda će biti prikazana pre izvršavanja"
set +x # Isključi debug mod
echo "Ova neće biti prikazana u debug modu"
Primer: skripta za informacije o sistemu
Hajde da napišemo nešto korisnije:
#!/bin/bash
# Skripta: sistem-info.sh
# Prikazuje osnovne informacije o sistemu
echo "=== INFORMACIJE O SISTEMU ==="
echo "Ime računara: $(hostname)"
echo "Korisnik: $USER"
echo "Datum i vreme: $(date)"
echo "Uptime: $(uptime -p)"
echo "============================="
Pokretanje i izlaz:
=== INFORMACIJE O SISTEMU ===
Ime računara: mojracunar
Korisnik: student
Datum i vreme: Mon Jan 15 14:30:00 UTC 2024
Uptime: up 2 hours, 15 minutes
=============================
Rezime
| Koncept | Opis |
|---|---|
#!/bin/bash |
Shebang — označava Bash interpreter |
# |
Komentar — shell ga ignoriše |
chmod +x skripta.sh |
Dodaje dozvolu za izvršavanje |
./skripta.sh |
Pokretanje skripte direktno |
bash skripta.sh |
Pokretanje eksplicitnim pozivom bash-a |
bash -x skripta.sh |
Pokretanje u debug modu |
U sledećoj lekciji naučićemo kako da koristimo varijable i argumente da bismo naše skripte učinili fleksibilnijim.