Professional Documents
Culture Documents
Shell
Shell
CS PMF KG
SHELL
RAD IZ KOMANDNE LINIJE
Grafiko radno okruenje optereuje procesor i poveava rizik u smislu sigurnosti sistema, tako
da se, po pravilu, ne instalira na serverima. Tada sistem administratorima na raspolaganju ostaje
komandni interpreter (shell) i pratei skup alata za rad sa datotekama.
KOMANDNI INTERPRETER (shell)
Shell je interfejs izmeu korisnika i kernela, odnosno jezgra operativnog sistema. Shell prihvata
komande koje korisnik zadaje, zatim ih interpretira i potom ih izvrava, pri emu po potrebi
pokree odgovarajue programe. Na UNIX sistemima postoji vie razliitih komandnih
interpretera, a korisnici u toku rada po potrebi mogu prei iz jednog u drugi.
Komandni interpreter je proces koji obavlja sledee funkcije:
pokretanje programa,
shell programiranje.
INTERPRETACIJA KOMANDNE LINIJE
Kad se korisnik prijavi na sistem u kontekstu tekueg login procesa izvrava se proces shell,
odnosno komandni interpreter. Na ekranu se prikazuje komandni prompt (shell prompt), a to je
najee znak $, ukoliko se na sistem prijavi obian korisnik, odnosno #, ukoliko se na sistem
prijavi root. Kada korisnik zada neku komandu (odnosno otkuca neki tekst i pritisne Enter), shell
to pokuava da interpretira. Tekst unet u shell prompt naziva se komandna linija (command
line), iji je opti oblik:
$command[opcije][argumenti]
Znak $ je odzivni znak komandnog interpretera (shell prompt). Komanda moe biti interna
(ugraena u shell) ili eksterna (realizovana kao poseban program koji se nalazi u sistemskoj
putanji). Opcije i argumenti su parametri koje shell prenosi komandi, pri emu su argumenti
najee obavezni i predstavljaju ime neke datoteke, direktorijuma, korisnika ili, na primer,
identifikator procesa.
Ime komande, opcije i argumenti razdvajaju se razmakom. Shell interpretira razmak kao
graninik i na osnovu toga razdvaja argumente i opcije od imena komande. U jednu komandnu
liniju moe se uneti najvie 256 karaktera. Imena veine UNIX komandi po pravilu se formiraju
od malih slova (izuzeci su razni shell programi, poput /dev/MAKEDEV). Vie UNIX komandi mogu
se navesti u istoj komandnoj liniji ukoliko su razdvojene znakom taka-zarez.
$cal#samokomanda
$df/dev/sda#komanda(fd)iargument(/dev/sda)
$cp1.txt2.txt#komanda(cp)idvaargumenta(1.txti2.txt)
$dateu#komanda(date)iopcija(u)
$lsl/etc#komanda(ls),opcija(l)iargument(/etc)
#dvekomandekojeseizvravajujednazadrugom
$clear;date
Komandni interpreter
1/8
CS PMF KG
Opcije su osetljive na velika i mala slova (case-sensitive) i mogu se navesti na dva naina:
-x
znak minus (-) praen jednim slovom,
--option
dva znaka minus (--) praena punim imenom opcije.
INICIJALIZACIJA PROGRAMA
Nakon interpretacije komandne linije shell inicira izvrenje zadate komande. Ukoliko komanda
nije interna (ugraena u shell, poput komande cd) shell trai izvrnu datoteku koja odgovara
imenu komande u direktorijumima navedenim u sistemskoj putanji. Nakon toga shell pokree
program i prosleuje mu argumente i opcije navedene u komandnoj liniji.
Napomena: Ukoliko se izvrna datoteka nalazi u tekuem direktorijumu ili u nekom
direktorijumu koji nije u sistemskoj putanji, ime komande se mora zadati sa putanjom. Slede i
primeri koji ilustruju pokretanje programa koji se nalaze u tekuem direktorijumu i
direktorijumu /usr/sbin:
$./myscript
$/usr/sbin/useradd
REDIREKCIJA ULAZA I IZLAZA
UNIX komande primaju podatke sa standardnog ulaza (stdin), rezultate izvrenja alju na
standardni izlaz (stdout), a poruke o grekama na standardni ureaj za greke (stderr). Veina
UNIX komandi koristi tastaturu kao standardni ulaz, a monitor kao standardni izlaz i ureaj za
greke.
Ulaz komande preusmerava se pomou znaka < (manje od) na sledei nain:
$command<inputdevice
Primer:
$wcl</tmp/jsnmith.dat
Za redirekciju izlaza se koristi znak >. Ukoliko se redirekcija vri u postojeu datoteku,
datoteka se brie, a zatim se kreira nova u koju se smeta rezultat izvrenja komande. Za
dodavanje izlaza na postojeu datoteku koristi se znak >>.
$sortkyuss.txt>/dev/lp0
$lsl/home/jsmith>myfile
$lsl/tmp/jsmith>>myfile
$>emptyfile
POVEZIVANJE KOMANDI U PIPELINE
Pipeline funkcionie na sledei nain: standardni izlaz komande sa leve strane znaka pipe (|)
postaje standardni ulaz komande sa desne strane znaka. Znak pipe zahteva komande i sa leve i
sa desne strane, a razmaci izmeu znaka i komande su proizvoljni.
Primer.
$lsl/etc>/tmp/files_in_etc
$lsl/etc|wcl
$wcl</tmp/files_in_etc
145
145
2/8
Opseg
CS PMF KG
3/8
CS PMF KG
$aliasc=clear
jednom komandom se moe zameniti sekvenca komandi
$aliashome="cd;ls"
moe se kreirati jednostavno ime za izvravanje komandi sa odreenim parametrima
$aliasls="lsl"
$aliascopy="cpi"
Ukoliko shell u tekuem direktorijumu pronae vie od jedne datoteke ije ime poinje tim
karakterima, korisnik e morati da unese jo nekoliko karaktera u imenu datoteke, a zatim da
ponovo pritisne taster <Tab>. Dodatno, ako korisnik dva puta pritisne <Tab>, shell e prikazati listu
datoteka ije ime odgovara poetku imena koje je korisnik uneo.
4/8
CS PMF KG
Lokatori komandi
whereis
prikazuje lokaciju izvrnih datoteka, izvornog koda i pratee dokumentacije programa
$whereis[bms]command
bez parametara prikazuje lokacije svih elemenata programa
-b izvrne datoteke
-m uputstva
-s izvorni kd
Primer.
$whereisinsmod
insmod:/sbin/insmod/usr/share/man/man8/insmod.8.gz
which
prikazuje samo lokaciju izvrnih datoteka; trai izvrnu datoteku u direktorijumima
navedenim u sistemskoj putanji i ukoliko je nae, prikazuje putanju i ime prve pronaene
komande
$which[a]command
a primeri komande kada je poyiva root korisnik (jer navedene komande nisu dostupne
obinom korisniku) su:
#whichinsmod
/sbin/insmod
#whichfdisk
/sbin/fdisk
whichinsmod moe pozvati samo root korisnik, jer samo on i ima pravo da izvi insmod
apropos
na ekranu prikazuje ime i opis svih komandi koje u opisu imaju zadati string.
$aproposwhoami
ldapwhoami(1)LDAPwhoami?tool
whoami(1)printeffectiveuserid
Komandni interpreter
5/8
CS PMF KG
$cp/home/a.a/tmp/b.b
$cpa*/tmp
$cp/etc/[ad][15]*.
$cpr/etc/tmp/oldconfig
$cpr/etc/*/tmp/oldconfig
$cpra*/tmp/mybackup
file
cat
head
tail
less
more
touch
mv
rm
wc
Komandni interpreter
6/8
CS PMF KG
$wcl/etc/protocols
find
Finds a file/directory.
trai datoteke iji atributi zadovoljavaju kriterijume pretrage u direktorijumu koji je
naveden kao poetna taka pretrage i svim poddirektorijumima, rekurzivno; ukoliko
korisnik ne naznai komandi ta da uradi sa datotekama koje pronae, komanda nee
izvriti nikakvu akciju.
$find/nameurgent.txtprint
$find/tmpuserjsmithsize+50print
$find/home/jsmithname"*.old"print
Ostali kriterijumi pretrage su:
usernameuname
groupnamegname
atimentrae se datoteke kojima niko nije pristupio tano n dana (n mora biti ceo
broj, a dozvoljeni su i oblici -n i +n);
mtimentrae se datoteke koje niko nije modifikovao -// permmodeprava pristupa zadata u oktalnom obliku
linksntrae se sve datoteke sa n hard linkova (n mora biti ceo broj, a dozvoljeni
su i -n i +n);
typextrae se sve datoteke koje su tipa x, pri emu x moe biti b (blok ureaj),
c (karakter ureaj), d (direktorijum), p (imenovani pipe);
inoden trae se sve datoteke iji je i-node n;
newerfname trae se sve datoteke koje su modifikovane pre datoteke fname;
local trae se sve datoteke koje se nalaze na lokalnim diskovima.
$find/usr/homenamelist.txtexecrm{}\;
TRAENJE TEKSTA U DATOTECI
grep
$greponlymyfile
$grep'w.r'myfile
LINKOVI
hard link,
simboliki link (symbolic link).
HARD LINKOVI
Kada korisnik pozove datoteku po imenu (na primer: cat tekst1), UNIX prevodi simboliko ime
datoteke koje je naveo korisnik u interno ime, koje koristi operativni sistem. Zbog posebne
interne reprezentacije, korisnici mogu datotekama dodeliti vei broj imena. Hard link je jedno
od tih imena, odnosno alternativno ime datoteke.
$lnfile1file2
$lsfile*
file1file2
Ukoliko korisnik obrie datoteku file1, file2 se ne brie.
Osobine:
link i original imaju isti i-node, tako da se moraju nalaziti na fiziki istom sistemu
datoteka (hard link se ne sme nalaziti na drugoj particiji ili na drugom disku). Ne mogu se
linkovati datoteke sa mrenog sistema datoteka (NFS);
ne moe se linkovati direktorijum niti nepostojea datoteka;
vlasnik, grupa i prava pristupa su isti za link i za original;
slobodan prostor na disku neznatno se umanjuje (jedna dir-info struktura vie za
alternativno ime datoteke);
Komandni interpreter
7/8
CS PMF KG
SIMBOLIKI LINKOVI
Simboliki linkovi se mogu kreirati na dva naina:
$lnsoriginallinkname
$cpsoriginallinkname
osobine:
svaki simboliki link koristi poseban i-node i jedan blok podataka u sistemu datoteka; mogu
se kreirati nalaziti na fiziki istom ili razliitom sistemu datoteka, odnosno na istoj ili drugoj
particiji (disku). Takoe, mogu se linkovati datoteke sa mrenog sistema datoteka (NFS);
moe se linkovati direktorijum, kao i nepostojea datoteka;
u odnosu na original, link moe imati razliitog vlasnika, grupu i prava pristupa. Na korisnika
koji datoteci ili direktorijumu pristupa putem simbolikog linka primenjuje se unija
restrikcija (presek dozvola) linka i datoteke. Na primer, neka je korisnik user2 vlasnik linka
link1 koji ukazuje na datoteku file1, i nek pripada grupi kojoj je ta datoteka formalno
dodeljena. Ukoliko su pristupna prava za link i datoteku 777 i 640 respektivno, korisnik e
imati samo pravo itanja te datoteke;
slobodan prostor na disku se umanjuje (za jedan blok podataka). Takoe, simboliki link troi
jedan i-node iz i-node tabele;
broj linkova originalne datoteke se ne uveava za jedan nakon linkovanja, ve ostaje isti kao
pre linkovanja;
s obzirom da simboliki link moe ukazivati na nepostojei objekat, originalna datoteka se
moe obrisati sa diska bez obzira na broj simbolikih linkova koji upuuju na nju.
$lns/etcdir_etc
$lsldir_etc
lrwxrwxrwx1rootroot4Sep514:40dir_etc>/etc
$lslunexist
ls:unexis:Nosuchfileordirectory
$lnsunexistjunk
$lsljunk
lrwxrwxrwx1rootroot15Sep514:40junk>unexist
Komandni interpreter
8/8