Professional Documents
Culture Documents
Shell Skripte
Shell Skripte
Što je Shell
Shell ili ljuska je korisnički program kojemu je osnovna namjena olakšati interakciju
korisnika i sustava. To je zapravo naredbeni interpreter koji izvršava naredbe koje korisnik
unosi pomoću tipkovnice. Shell nije dio Unix/Linux jezgre, ali ju koristi za pokretanje
programa, kreiranje datoteka itd.
Osim što je naredbeni interpreter, shell se koristi i kao skriptni jezik za pisanje shell
skripata, koje automatiziraju određene korisničke radnje.
Ako povučemo paralelu s MS DOS operacijskim sustavom Linux shell možemo usporediti s
COMMAND.COM programom, a shell skripte su slične .bat datotekama.
Izvorni UNIX System Shell poznat pod imenima sh ili bourne shell tokom godina doživio je
mnogo nadogradnji tako da danas postoji više inačica shell-a (csh, tcsh, bash, ksh, psh,
zsh) od kojih svaka nudi određena poboljšanja u odnosu na standardni sh shell. Uobičajeni
shell u Linux operacijskom sustavu je bash (Bourne Again Shell) i svi daljni primjeri
odnositi će se na bash ili sh shell.
Prilikom pokretanja ljuska traži .profile datoteku u korisnikovom home direktoriju i sukladno
podacima koji se nalaze u njoj podešava korisnikovu okolinu (environment).
Zadavanje naredbi
Naredbe se mogu unositi jedna po jedna ali moguće ih je i grupirati u istoj liniji pomoću
znaka “;”, npr.:
$ date; ls
što će rezultirati ispisom datuma i sadržaja tekućeg direktorija. Ovakav način zadavanja
naredbi koristan je kada želimo istovremeno započeti njihovo izvršavanje.
Vrlo korisna je i pipeline opcija pomoću koje je moguće napraviti niz naredbi čiji su ulazi i
izlazi međusobno povezani. Pipeline se u shell-u označava znakom “|”. Tako će na primjer
redak:
$ ls | lp
Zamjenski znakovi
Shell omogućuje zamjenu znakova spaecijalnim zamjenskim znakovima koji mogu
predstavljati jedan ili više znakova u nizu. Na taj način lako je obuhvatiti više datoteka
odjednom. Naredba
$ ls *jan
Znak ? Mijenja jedan znak, * mijenja više znakova, dok je pomoću uglatih zagrada
moguće definirati cijelu klasu znakova koja će mijenjati određeni znak.
Zamjenskim znakovima nije moguće zamijeniti neke posebne znakove kao na primjer točku
(.) pa je potrebno pripaziti ukoliko imamo skrivene datoteke koje počinju s točkom.
$ cat *profile
Kao što je već prije spomenuto jedna od općenitih značajki UNIX/Linux sustava je
korištenje standardnog ulaza i izlaza. Naredba prima podatke preko standardnog ulaza i
rezultat šalje na standardni izlaz. Ulaz može biti datoteka, tipkovnica ili izlaz neke druge
naredbe, dok izlaz može ići na ekran, u datoteku ili na ulaz slijedeće naredbe. Sa gledišta
naredbe potpuno je svejedno otkuda dolazi standardni ulaz i kamo ide standardni izlaz.
Preusmjerananje ulaza i izlaza je zadatak shella i zbog toga postoji set posebnih znakova
pomoću kojih se standardni ulaz i izlaz kontroliraju iz naredbenog retka.
$ ls -l | temp
$ cat nepostojeca_datoteka
cat: cannot open nepostojeca_datoteka
Standardna greška se uobičajeno šalje na zaslon, jednako kao i standardni izlaz, tako da
običan korisnik ne primjećuje razliku između standardnog izlaza i standardne greške, ali u
slučaju redirekcije standardnog izlaza u datoteku, standardna greška će se i dalje
prikazivati na zaslonu.
Takav pristup primijenjen je zato što bi u slučaju redirekcije oba izlaza u datoteku korisnik
mogao previdjeti pogrešku koja je nastala kod izvođenje naredbe.
Ukoliko korisnik eksplicitno to zatraži Shell će ipak dopustiti redirekciju standardne greške u
datoteku. U tom slučaju koristi se simbol "2>". Naredba
Shell varijable
Shell varijable koriste se za pohranu informacija koje koriste razni programi ili
sam shell. Korisnik može kreirati i vlastite shell varijable za osobnu upotrebu.
Kod pokretanja, programu su dostupne vrijednosti pohranjene u shell
varijablama i u ovisnosti o njima program se može prilagoditi korisnikovom
okruženju. Set svih shell varijabli naziva se okolina, a varijable se nazivaju
varijable okoline. Naredbom env moguće je izlistati sadržaj varijabli okoline.
$ env
PWD=/home/users/lss/spajic
PS1=\u@\h:\w\$
USER=spajic
MAIL=/usr/mail/spajic
LOGNAME=spajic
SHLVL=1
SHELL=/bin/sh
HOME=/home/users/spajic
TERM=vt100
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
$ TERM=vt100
$ echo $TERM
vt100
$ export TERM.
$ export TERM=vt100.
Upravljanje procesima
$ jobs
[1] + Running find /home/jmf -print
> files &
[2] - Suspend grep supv | awk –f
fixes > files
Kao što je već prije objašnjeno shell naredbeni jezik koristi nekoliko posebnih
znakova (<,>,|,&,…) za izvođenje određenih instrukcija. Postoje slučajevi u
kojima korisnik želi upotrijebiti te znakove kao dio običnog teksta. Primjer je
korištenje grep naredbe za traženje datoteka koje sadrže znak "|".
$ grep | datoteka
Usage:grep -hblcnsvi pattern file..
Znak Značenje
\ Isključuje funkciju sljedećeg posebnog znaka
Isključuje funkciju posebnih znakova u nizu
'...'
znakova koji se nalazi između navodnika
Isključuje funkciju posebnih znakova u nizu
"..." znakova koji se nalazi između navodnika, osim
znakova $,",',\.