Gym
lesson

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.