1275
SVEUČILIŠTE U SPLITU STRUČNI STUDIJ RAČUNARSTVA – ZAGREB prof. Pavle Špoljarić Programski alati na Unix računalima ZBORNIK SEMINARSKIH RADOVA 2003/2004 Dražen Hudoletnjak • Marijela Napast • Andrija Martinović • Siniša Julijan Marijana Ladan-Pelivanović • Predrag Jovanović • Marko Vuković • Manuel Vidonis Zoran Zoričić • Mario Strinić • Matko Pejčić • Maja Mehinagić • Nina Žugaj • Frane Gjeldum Davorin Šajnović • Branimir Živković • Tomislav Grgec • Krešimir Hećimović • Janko Rade Marko Ferk • Damir Jajerić • Tomislav Domanovac • Ivan Podhraški • Maja Žugaj Željko Šafar • Damir Šćuric • Goran Jurišić • Krasnodar Krajnik • Vedran Deduš Vanja Harambuša • Krunoslav Zeman • Igor Čopec • Matija Čupen • Saša Dragić • Ivan Brčić Neven Kmetić • Majk Jednaković • Boris Ivanišević • Jurica Božiković • Goran Vlahović Dario Dugić • Zvonimir Janković • Marija Bilić • Jakov Mihaljević • Adriana Mihalinec Domagoj Švegelj • Marina Petrovska • Daniel Van Schepdael • Dario Benko • Amir Kos Tamara Krutman • Ante Penava • Ana Babić • Marijan Poljak • Elizabeta Velkavrh Alja Pavlić-Ravšer Eliot Karlo Pavletić • Saša Protulipac Zagreb, 2004.

Kompletno o Linux HRV

Embed Size (px)

DESCRIPTION

Os Linux how to

Citation preview

SVEUILITE U SPLITU STRUNI STUDIJ RAUNARSTVA ZAGREB

prof. Pavle poljari

Programski alati na Unix raunalima

ZBORNIK SEMINARSKIH RADOVA 2003/2004Draen Hudoletnjak Marijela Napast Andrija Martinovi Sinia Julijan Marijana Ladan-Pelivanovi Predrag Jovanovi Marko Vukovi Manuel Vidonis Zoran Zorii Mario Strini Matko Peji Maja Mehinagi Nina ugaj Frane Gjeldum Davorin ajnovi Branimir ivkovi Tomislav Grgec Kreimir Heimovi Janko Rade Marko Ferk Damir Jajeri Tomislav Domanovac Ivan Podhraki Maja ugaj eljko afar Damir uric Goran Jurii Krasnodar Krajnik Vedran Dedu Vanja Harambua Krunoslav Zeman Igor opec Matija upen Saa Dragi Ivan Bri Neven Kmeti Majk Jednakovi Boris Ivanievi Jurica Boikovi Goran Vlahovi Dario Dugi Zvonimir Jankovi Marija Bili Jakov Mihaljevi Adriana Mihalinec Domagoj vegelj Marina Petrovska Daniel Van Schepdael Dario Benko Amir Kos Tamara Krutman Ante Penava Ana Babi Marijan Poljak Elizabeta Velkavrh Alja Pavli-Raver Eliot Karlo Pavleti Saa Protulipac

Zagreb, 2004.

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima

"...the number of UNIX installations has grown to 10, with more expected..." - Dennis Ritchie and Ken Thompson, June 1972 "... When BTL withdrew from the project, they needed to rewrite an operating system (OS) in order to play space war on another smaller machine (a DEC PDP-7 [Programmed Data Processor] with 4K memory for user programs). The result was a system which a punning colleague called UNICS (UNiplexed Information and Computing Service)--an 'emasculated Multics'; no one recalls whose idea the change to UNIX was"

2/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Sadraj

OVAJ ZBORNIK JE POD OPOM GNU LICENCOM OPISANOM U 1. POGLAVLJU(GNU FILOZOFIJA I GNU LICENCA)

3/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Sadraj

Sadraj1. 2. 3. 4. 5. 6. 7. 8. 9. GNU FILOZOFIJA I GNU LICENCA (Draen Hudoletnjak) STRUKTURA UNIXA (Marijela Napast) SHELL (Andrija Martinovi) SH I BASH (Sinia Julijan) C SHELL, T C-SHELL (Marijana Ladan-Pelivanovi) SHELL PROGRAMIRANJE (SHELL I BASH) (Predrag Jovanovi) BASH ADVANCED SHELL PROGRAMIRANJE (Marko Vukovi) REGEX (Manuel Vidonis, Zoran Zorii) VI EDITOR (Mario Strini)

6 30 42 72 111 138 160 179 213 230 263 273 305 322 343 370 396 419 435 469 509 527 556

10. EMACS (Matko Peji) 11. LOGIN I ID (Maja Mehinagi) 12. TELNET I SSH (Nina ugaj) 13. ARHIVIRANJE NA UNIX RAUNALIMA (Frane Gjeldum) 14. UNIX DEVICES, MOUNTING DEVICES (Davorin ajnovi) 15. AWK I SED (Branimir ivkovi) 16. SED (Tomislav Grgec) 17. GCC COMPILER (Kreimir Heimovi) 18. GDB, THE GNU SOURCE LEVEL DEBUGGER (Janko Rade) 19. GNU MAKE (Marko Ferk) 20. CVS SUSTAV ZA VERZIONIRANJE (Damir Jajeti, Tomislav Domanovac) 21. IDE (Ivan Podhraki) 22. ECLIPSE (Maja ugaj, eljko afar, Damir uric) 23. PIPE I FIFO (Goran Jurii)

4/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Sadraj

24. FORK (Krasnodar Krajnik) 25. PROCESI I UPRAVLJANJE PROCESIMA (Vedran Dedu, Vanja Harambua) 26. SIGNALI (Krunoslav Zeman) 27. FORK PROCESI (Igor opec) 28. SOCKETS, UNIX DOMAIN, NETWORK (Matija upen) 29. TCP/IP (Saa Dragi) 30. TCP/IP API (Ivan Bri, Neven Kmeti) 31. UDP-USER DATAGRAM PROTOKOL (Majk Jednakovi) 32. FILE, DIRECTORY AND INODE PROGRAMMING (Boris Ivanievi) 33. INETD I TCPD (Jurica Boikovi) 34. INTERNET SERVICES (Goran Vlahovi) 35. RPC REMOTE PROCEDURE CALL (Dario Dugi) 36. RLOGIN RSH (Zvonimir Jankovi) 37. SAMBA I NFS (Marija Bili) 38. X WINDOW SYSTEM (Jakov Mihaljevi) 39. KDE (Adriana Mihalinec, Domagoj vegelj) 40. UNIX DESKTOP SYSTEM (Marina Petrovska) 41. DNS I DHCP (Daniel Van Schepdael) 42. INTERNET HISTORY (Dario Benko) 43. UVOD U PERL (Amir Kos) 44. PERL Practical Extraction and Report Language (Tamara Krutman,Ante Penava) 45. PYTHON (Ana Babi) 46. INTERPRETERI TCL/TK (Marijan Poljak) DISTRIBUCIJE LINUXA/UNIX 47. (Elizabeta Velkavrh, Alja Pavli-Raver, Eliot Karlo Pavleti) 48. KOMPAJLIRANJE KERNELA (Saa Protulipac)

578 610 638 662 672 691 718 776 796 815 827 858 876 886 917 926 970 996 1016 1033 1090 1138 1173

1214 1244

5/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima

Draen Hudoletnjak

GNU FILOZOFIJA I GNU LICENCA

6/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima GNU filozofija i GNU licenca

UVODPria o GNU-u poinje otprilike 1971. sa Richardom Stallmanom koji je tada poeo raditi za MIT na njihovom Artificial Intelligence Lab (Labaratorij za Umjetnu Inteligenciju). Tamo je postao dio "software-sharing" zajednice koja je ve postojala mnogo godina. Razmjena softvera je bilo neto to je staro kao i sama raunala i u to doba je to bila normalna stvar, pomo kolegi. No oni su otili korak dalje. AI Lab je koristio operacijski sustav ITS (the Incompatible Timesharing System) kojeg su dizajnirali i u assembleru napisali njihovi programeri (hakeri *) za Digitalov PDP-10. Kao dio tima Stallmanov posao je bio poboljavanje tog sustava. Oni svoj softver tada jo nisu zvali "slobodan softver" (free software) jer taj termin tada nije postojao ali u biti je to bio, jer kad god bi netko sa nekog drugog sveuilita ili neke kompanije elio portati i koristiti njihov program, oni su im to dopustili. Ideja je bila, ako netko koristi nekakav nepoznat i zanimljiv program, uvijek ga moe traiti da vidi njegov izvorni kod (source code) kako bi ga mogao itati, mijenjati ili uzeti dijelove tog programa i iskoristiti ih za neki novi program. No situacija se je drastino promijenila poetkom 80-tih kad je Digital prestao proizvoditi PDP-10 seriju. Njegova arhitektura, koja je bila elegantna i mona u 60-tima se nije mogla "prirodno" proiriti da koristi vei adresni prostor koji je bio primjenjiv u 80-tima. To je znailo da je gotovo sav softver koji radi pod ITS-om postao neupotrebljiv. Neto prije toga hakerska zajednica IT Laba se raspala. 1981. osnovana je tvrtka Symbolics koja je zaposlila gotovo sve hakere iz AI Laba tako da preostala zajednica nije mogla funkcionirati. Kad je 1982. AI Lab kupio novi PDP-10, njihovi administratori su se odlucili za Digitalov operacijski sustav umjesto ITS-a. Moderna raunala toga doba (VAX, 68020) su imali svoje operacijske sustave ali nijedan od njih nije bio slobodan softver. Za svaki, makar dobili samo izvrnu datoteku, morao se je potpisati obvezujui ugovor. To je znailo da je prvi korak u koritenju raunala obeanje da nee pomoi svom susjedu. Pravilo koje su uveli tvorci "vlasnikog" softvera bilo je, "Ako dijeli softver sa susjedom, pirat si. Ako eli bilo to promijeniti, moli nas da ti to napravimo". To je neto to se Stallmanu nikako nije svialo i naao se je pred moralnom dvojbom. Prikljuiti se svijetu "vlasnikog" softvera i potpisati obvezujui ugovor kojim obeaje da nee pomagati kolegama ili potpuno napustiti raunalni svijet i raditi neto drugo. Umjesto toga, kao pravi programer traio je neko tree rijeenje. Razmiljao je da li postoji neki program ili programi koje bi on mogao napisati da zajednica ponovno oivi. Zakljuio je da mu za poetak treba operacijski sustav jer je to kljuni program za koritenje nekog

7/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima GNU filozofija i GNU licenca

raunala. Sa slobodnim operacijskim sustavom ponovno se je mogla osnovati zajednica hakera koji bi slobodno suraivali i izmjenjivali svoje ideje. Zajednica kojoj bi se svatko mogao pridruiti. Obzirom da je on do tada radio na razvoju operacijskih sustava, imao je znanja i iskustva da to napravi a osjeao se i izabranim za taj posao. Odluio je napraviti OS kompatibilan sa Unixom kako bi bio prenosiv i kako bi dotadanji korisnici Unixa mogli lako prijei na njega. Sljedei hakersku filozofiju odabrao je ime GNU, kao rekurzivno za "GNU Nije Unix" (GNU's Not Unix). Shvatio je da naziv "operacijski sustav" ne znai samo kernel ve da to ime ukljuuje i dodatne stvari kao to su komandne linije, assembleri, kompajleri, interpreteri, debuggeri, tekst editori i jo mnogo toga. Budui da su tadanji operacijski sustavi (ITS, Multics, VMS, Unix) imali sve to, on je odluio da i GNU mora imati sve to. Znajui tono to hoe, u sijenju 1984. dao je otkaz na MIT-u i poeo pisati GNU softver. Odlazak iz MIT-a je je bio nuan jer da je ostao, MIT je mogao GNU proglasiti svojim proizvodom i time bi Stallmanova ideja o slobodnom operacijskom sustavu pala u vodu kao i ponovno oivljavanje hakerske zajednice. Sreom, profesor Winston, tadanji ef MIT AI Laba je dozvolio Stallmanu da nastavi koristiti njihove labose i njihovu opremu. Time je GNU operacijski sustav od nekakve same ideje postao stvaran projekt i moe se rei da je to stvarni poetak svega vezanog uz GNU.

* Rije haker (hacker) u znaenju "onaj koji probija zastite" je pogreka koju su stvorili mediji i koji taj pojam pogreno koriste. Pravi hakeri ne priznaju to znaenje. Po njima je haker onaj koji voli programirati i uiva u tome. Zato ja u tekstu dalje koristim i koristiti u taj pojam za to, pozitivno znaenje.

8/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

GNU OS PoetciKratko prije nego je zapoeo GNU projekt, Stallman je uo za "Free University Compiler Kit" poznat takoer i pod nazivom "VUCK". Taj kompajler je podravao vie programskih jezika, ukljuujui C i Pascal te je imao podrku za razne platforme. Stallman je kontaktirao autora VUCK-a i pitao ga moe li dodati taj kompajler u GNU projekt. Odgovor je bio negativan. Stoga je Stallman odluio da prvi program kojeg e napraviti bude viejezini (multi-language), vieplatformni (multi-platform) kompajler. Nadajui se da nee sam morati napisati cijeli kompajler, nabavio je source kod Pastel kompajlera. To je bio vieplatformski kompajler napisan na Lawrence Livermore Lab-u. Podravao je i bio napisan u proirenoj verziji Pascala te bio zamiljen kao sistem-programski jezik. Stallman mu je dodao C frontend i poeo ga prebacivati na Motorolino 68000 raunalo. No morao je odustati jer je otkrio da taj kompajler treba nekoliko megabajta memorije za stack a dostupni 68000 sistemi dozvoljavaju samo 64 kB. Zbog toga je odluio iz poetka napisati svoj kompajler bez da upotrijebi ista od koda Pastel kompajlera. Uspio je jedino upotrijebiti C frontend koji je sam napisao. Taj kompajler je danas poznat kao GCC no njega je dovrio kasnije. Prije toga je radio na GNU Emacsu.

9/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

GNU EmacsStallman je rad na GNU Emacsu poeo u rujnu 1984. i ve poetkom 1985. GNU Emacs je postao upotrebljiv program. To mu je omoguilo da koristi Unix sustave za editiranje bez potrebe da naui vi ili ed. Do tada je koristio druge sustave za editiranje texta. Popularnost GNU Emacsa je rasla i Stallman se pitao kako distribuirati svoj softver. Zato ga je stavio na anonimni server na MIT-u koji je on sam koristio. No kako u to vrijeme nisu svi bili na internetu, Stallman je razmiljao kako svima omoguiti da dou do kopije Emacsa. Obzirom da nije radio traio je nain kako da zaradi novac na slobodnom softveru. Zbog toga je objavio da e poslati kopiju na traci svakome tko mu plati 150$ za nju. Time je Stallman zapoeo distribuciju slobodnog softvera, preteu dananjih kompanija koje distribuiraju cjelokupne Linux-bazirane GNU sustave.

Razvoj GNU OS-aKako je interes za koritenjem Emacsa rastao, sve vie ljudi se ukljuivalo u GNU projekt i ponovno se je javilo pitanje oko financiranja projekta. Zbog toga je 1985. osnovan Free Software Foundation (FSF). FSF je preuzela distribuciju Emacsa a kasnije je dodan i drugi slobodni softver. Takoer su poeli sa prodajom slobodnih uputstava (manuala). FSF je primala donacije, ali najvea dobit im je bila od prodaje kopija slobodnog softvera i ostalih usluga vezanih uz to. Danas FSF prodaje CD-e i DVD-e sa source kodom, izvrnim datotekama, lijepo tampanim uputstvima i sve to sa slobodom da se dalje distribuira i mijenja po elji. Zaposlenici FSF-a su napisali poveu koliinu GNU softver paketa. Dva najznaajnija su C library i shell. GNU C library je napisao Roland McGrath i to je neto to svaki program koji radi na GNU/Linuxu koristi za komunikaciju sa Linuxom (vie o Linuxu u sljedeem poglavlju). Shell koriten na GNU/Linux sistemima je BASH, (Bourne Again Shell) kojeg je napisao Brian Fox. FSF je sve to financirala jer im je najvaniji cilj bio razvoj cijelog operacijskog sustava. Temeljni cilj GNU-a je bio da bude slobodan softver. Iako GNU nije imao tehnikih prednosti pred Unixom, imao je drutvenu prednost jer je omoguavao

10/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

ljudima da surauju i imao je etiku prednost jer je potivao slobodu korisnika. Naravno, obzirom da su na GNU projektu sudjelovali iskusni hakeri, koristili su standarde koji su se pokazali dobrima u praksi. Dodatno, odbacili su Unixovu filozofiju koritenja malo memorije time to nisu podrali 16 bitno adresiranje (znali su da e 32 bitni strojevi postati norma kad GNU bude dovren). Nisu se trudili smanjiti potronju memorije dokle god ne bi prelazila megabajt. Kako je GNU projekt napredovao i sve vei broj sistemskih komponenti je naen ili napisan, napravljena je lista stvari koje jo nedostaju. Ta lista, danas poznata kao "GNU task list" je upotrebljena da se regrutiraju programeri koji e napisati dijelove koji nedostaju. Takoer su na listu dodane i neke stvari koje Unix nije imao a oni su mislili da bi potpuno kompletan sustav trebao imati. ak su i igre dodane kao kljune stvari. Vano je napomenuti da, budui da su oni GNU OS radili potpuno "od nule" da je svaki komad softvera koji je napisan bio testiran na Unixu (GNU OS jo nije postojao). To je znailo da se ve tada taj softver mogao koristiti na Unix sustavima. Druga dobra stvar je da se novi OS razvijao tako da bude potpuno kompatibilan sa Unixom. Sve to je imao Unix napisala je i GNU zajednica s time da je GNU varijanta u pravilu bila monija i pouzdanija. To je privuklo dodatne pokrovitelje i negdje oko 1990. GNU OS je bio gotovo dovren. Falila je jo samo jedna, kljuna stvar - kernel.

11/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

LinuxStallmanova prvotna ideja je bila da sami razviju svoj kernel (GNU HURD). Odluili su ga implementirati kao kolekciju serverskih procesa koji se vrte na Machu. Mach je mikrokernel koji su razvili na Carnegie Mellon University i University of Utah. GNU HURD (krdo gnua) bi bila kolekcija servera koja radi na Machu i obavlja razne poslove kao Unix kernel. Jedan od razloga zbog ega je odabrana takva arhitektura je bio da se izbjegne najtei dio posla, debugiranje kernela bez debugera namijenjenog za to. Taj dio posla je u Machu ve bio obavljen a HURD servere su mogli debugirati sa GDB-om. No poetak razvoja HURD-a je kasnio jer su ekali da Mach bude izdan kao slobodan softver, kao to su im obeali a i pokazalo se da je debugiranje HURD servera koji se pokreu kao tredovi i koji meusobno komuniciraju porukama prilino teak i zahtjevan posao. Posao na HURD-u se zbog toga otegnuo godinama. Paralelno s njima, Linus Torvalds je radio na Unix kompatibilnom kernelu kojeg je objavio na internetu 1991. godine. Nazvao ga je Linux. Negdje 1992. ukomponirali su Linux u dotad nedovreni GNU ime je stvoren komplenti slobodni operacijski sustav. Nazvali su ga GNU/Linux to predstavlja sloenicu od "kombinacija GNU sustava sa Linux kernelom". Ta verzija GNU OS-a je stekla golemu popularnost i danas ju veina ljudi poznaje samo pod imenom Linux iako je Linux samo dio tog OS-a (njegov kernel).

12/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

GNU FILOZOFIJA Slobodan (free) softverKao to smo do sada vidjeli cijeli smisao GNU pokreta je ideja o slobodi. Ljudi koji stoje iza GNU pokreta smatraju da je slobodan softver stvar slobode - ljudi trebaju imati slobodu koristiti softver na bilo koji nain za koji smatraju da im je koristan. Softver se razlikuje od materijalnih objekata. Glavno je pitanje to je to slobodan softver i zato bi softver uope trebao biti slobodan? Prema FSF-u (Free Software Foundation) slobodan softver je stvar slobode a ne cijene. (Pojam slobodan softver dolazi od engleskog "free software" a budui da u engleskom jeziku rije free ima vie znaenja, ideja je da se o rijei "free" razmilja kao u pojmu "free speech" a ne kao "free beer". U hrvatskom jeziku najblie prijevodu odgovara rije "slobodan" a ne "besplatan".) Dakle, slobodan softver je onaj koji korisnici imaju pravo pokretati, kopirati, distribuirati, prouavati, mijenjati i poboljavati. Tonija definicija se sastoji od etiri vrste slobode koji imaju korisnici softvera: Slobodu da za bilo koju svrhu pokreu program (sloboda 0). Slobodu da proue kako program radi i prilagode ga za svoje potrebe (sloboda 1). Uvjet za to je da im je dostupan source kod programa. Slobodu da dalje distribuiraju kopiju programa kako bi pomogli susjedu (sloboda 2). Slobodu da poboljavaju program i objave svoja poboljanja javno kako bi cijela zajednica imala koristi od toga (sloboda 3). Uvjet za to je da im je dostupan source kod programa. To su etiri kljune slobode i program je "slobodan" ako i samo ako zadovoljava sve ove etiri toke. Prema tome, trebali bi biti slobodni dalje dijeliti kopije programa bilo kome i bilo gdje, besplatno ili uz naknadu, bez obzira jesmo li mijenjali program ili ne. Biti slobodan raditi te stvari znai (pored ostalog), da ne moramo traiti ili platiti dozvolu za to. Takoer trebamo imati slobodu promijeniti program i koristiti ga privatno za svoj posao ili igru, bez da ikome uope spomenemo da te modifikacije postoje. Ako objavimo svoje promjene ne bi trebali obavijestiti nikoga zbog toga. Sloboda da se koristi neki program znai slobodu bilo13/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

pojedincu ili organizaciji, da koristi taj program na bilo kojoj vrsti raunala, za bilo kakav posao, i bez potrebe da kontaktira autora ili neku drugu instituciju. Prilikom distribucije slobodnog softvera, bilo svog ili kopije mora se pored izvrne (executable) verzije, priloiti i izvorni kod. To je zbog slobode da svatko ima pravo modificirati i poboljavati program. Dakle pristup izvornom kodu je kjuna osobina slobodnog softvera. Da bi sve ove slobode vrijedile uvijek, one moraju biti neopozive tako dugo dok ne napravite neto pogreno. Ako onaj koji razvije neki softver ima pravo ukinuti licencu bez da ste vi napravili neto to bi mu dalo razlog, onda taj softver nije slobodan softver. Meutim, odreena pravila u vezi distribucije slobodnog softvera su prihvatljiva, ako nisu u suprotnosti sa osnovnim slobodama. Na primjer, copyleft (pojednostavljeno reeno) je pravilo da kad redistribuirate program, ne moete dodati ogranienja kojima biste zabranili ostalim ljudima njihove centralne slobode. To pravilo nije u sukobu sa centralnim slobodama nego ih zapravo titi. Prema tome, vi moete platiti da dobijete kopiju slobodnog softvera ili moete nabaviti kopiju besplatno. No nevezano na to kako ste doli do svoje kopije, uvijek imate slobodu kopirati i mijenjati taj program, imate ak i slobodu prodavati kopije. Slobodan softver ne znai ne-komercijalan softver. Slobodan softver mora biti dostupan za komercijalnu upotrebu, komercijalni razvoj i komercijalnu distribuciju. Komercijalni razvoj slobodnog softvera vie nije neuobiajen, takav slobodan softver je postao vrlo vaan. Pravila kako pakirati modificiranu verziju su prihvatljiva ako ne spreavaju vau slobodu da izdate modificiranu verziju. Pravila koja kau "ako va program napravite dostupnim na ovaj nain, morate ga napraviti dostupnim i na neki drugi nain" takoer mogu biti prihvatljiva uz prethodni uvjet. Ovakvo pravilo vam ipak ostavlja izbor da uope ne distribuirate program. Takoer je prihvatljivo da se u licenci trai da ako distribuirate modificiranu verziju programa, da autor trai da mu poaljete kopiju. U tom sluaju duni ste mu je poslati. Kad se govori o slobodnom softveru, najbolje je izbjegavati termine tipa "besplatan softver" jer ti termini oznaavaju cijenu a ne slobodu (ponovno zbog vieznanosti engleske rijei "free"). Na kraju, kriteriji poput ovih do sad nabrojanih u ovoj definiciji slobodnog softvera zahtijevaju paljivo razmiljanje prilikom njihove interpretacije. Prilikom odluke da li neka licenca zadovoljava kriterije kao licenca slobodnog softvera, sudi se prema tim kriterijima i gleda se da li zadovoljava njihov duh kao i tone rijei. Ako ta licenca sadri bilo kakve zabrane (nesvjesne), odbacuje se ak i ako se ne oekuje problem s tim kriterijem.14/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Ponekad licenca zahtjeva puno premiljanja, ukljuujui razgovore s odvjetnikom, prije nego se odlui da li licenca zadovoljava kriterije. Sve ovo se radi da slobodan softver ostane doista slobodan.

Zato slobodan softverDigitalna informatika tehnologija nam je omoguila lake kopiranje i modificiranje informacija. Raunala su to olakala svima nama. No vlasnika prava (copyright) na neki program su neto to nam to onemoguava. Vlasnici takvog softvera su jedini koji imaju pravo kopirati i mijenjati softver koji mi koristimo. Copyright sustav je nastao sa tiskanjem tehnologijom za masovno kopiranje. Copyright se dobro uklapa u tu tehnologiju jer ograniava samo velike izdavae i ne oduzima slobodu itateljima knjiga. Obian ita koji ne posjeduje tiskaru, moe kopirati knjige samo tako da ih prepie i rijetki imaju volju to raditi. Digitalna tehnologija je mnogo fleksibilnija, kad su podaci u digitalnoj formi, lako se mogu kopirati i dijeliti drugima. No ta fleksibilnost je u sukobu sa idejom copyrighta. Zbog toga su uvedene prilino prljave mjere da se nametne copyright na softver. No, to je doista potrebno drutvu da napreduje? Potrebno je da su sve informacije slobodne, nap. program koji se moe itati, popravljati, prilagoavati i poboljavati a ne samo pokretati. Naalost ono to vlasnici softvera tipino isporuuju je crna kutija koju ne moemo prouiti ili mijenjati. Drutvo takoer treba slobodu. Kada program ima vlasnika, korisnici gube slobodu da kontroliraju dio svog ivota. Ekonomski razlozi koje navode vlasnici softvera su pogreni no ekoneomski problem je stvaran. Neki ljudi piu koristan softver isto iz hobija ili zato to uivaju programirajui neto korisno no ako elimo vie nego ti ljudi naprave, moramo poveati fond. Ve deset godina ljudi koji razvijaju slobodan softver iskuavaju razne metode kako namaknuti novac. Dosad je postignut nekakav uspjeh. Neki rade potrebne preinake svog programa zatraene od klijenata koji im za to plaaju. Iako bi oni i sami mogli napraviti te preinake ponekad je lake platiti autoru da to napravi budui da on ve poznaje svoj program. Neki zarauju tako to prodaju usluge odravanja. Velik dio se financira iz donacija. ini se da je to sve sitno, pokret slobodnog softvera je jo uvijek mali i relativno mlad.

15/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Kao korisnici raunala danas, dosta nas koristi vlasniki softver. Ako nas prijatelj zamoli da mu snimimo kopiju tog programa, pogreno bi bilo odbiti ga. Suradnja je vanija od copyrighta. No takve "underground" aktivnosti ne ine dobro drutvo. Pojedinac bi trebao ivjeti otvoreno i ponosno te rei "ne" vlasnikom softveru. Svatko bi trebao moi suraivati otvoreno s drugim ljudima koji koriste softver. Svatko bi trebao imati pravo nauiti kako neki program radi i ako je potrebno popraviti njegov rad. To je razlog zato nam treba slobodan softver.

16/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Kategorije slobodnog i ne-slobodnog softvera

Ovaj dijagram (napravio Chao-Kuei) objanjava razliite kategorije softvera. Slobodan softver (free software) to je slobodan softver je objanjeno u tekstu do sada, kratka definicija glasi: slobodan softver je softver koji dolazi sa dozvolom da ga svatko smije koristiti, kopirati, distribuirati (bilo izvornu ili modificiranu verziju) besplatno ili uz naknadu. U biti, to znai da takav softver mora dolaziti sa izvornim kodom. Ako je program slobodan onda ga se potencijalno moe ukljuiti u slobodan operacijski sustav kao to je GNU ili neku od slobodnih verzija GNU/Linuxa. Neke kompanije svoj softver zovu "free" no ne u smislu slobode nego cijene. ("Free" znai slobodan ali i besplatan). Zbog toga treba prouiti licencu s kojom takav softver dolazi da se vidi tono na to se taj pojam odnosi. Slobodan softver je obino pouzdaniji od ne-slobodnog. Open source softver Pojam "open source" vie-manje znai isto to i slobodan softver. Meutim kriterij koji neki softver mora zadovoljavati da bi bio open source je neto blai, dozvoljene su neke restrikcije koje u FSF-u smatraju previe ogrniavajuim.

17/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Public domain softver Public domain softver je softver za kojeg ne postoje vlasnika prava. Ako je izvorni kod u public domain onda je to poseban sluaj non-copylefted slobodnog softvera, to znai da neke verzije ili modifikacije moda uope nisu slobodne. Ako je samo izvrna datoteka u public domain a source kod nije onda to nije slobodan softver jer on podrazumijeva da mora biti dostupan izvorni kod. Veina slobodnog softvera nije public domain, nego na njemu postoje vlasnika prava koja pak daju legalno pravo svima da koriste slobodno taj program. Copylefted softver Copylefted softver je slobodan softver iji uvjeti distribucije ne dozvoljavaju distributeru dodavanje nikakvih novih, dodatnih ogranienja prilikom distribucije ili modifikacije softvera. To znai da svaka kopija tog softvera, makar i modificirana, mora biti slobodna. Copylefted je generalni koncept, da bi ga ostvarili morate koristiti specifian skup distribucijskih pravila. Iako se moe postii raznim licencama preporuka je koristiti "GNU General Public License" jer dvije razliite licence mogu biti nekompatibilne to znai da bi spajanje takvih programa bilo nezakonito. Non-copylefted free software Non-copylefted free software dolazi sa dozvolom da se dalje distribuira i modificira ali se takoer mogu dodavati i nove restrikcije. Softver koji dolazi na takav nain moe imati verzije koje uope nisu slobodne. Softverske kompanije mogu kompajlirati takav softver sa ili bez modifikacija i prodavati ga kao vlasniki softver. GPL-covered software GPL-covered software je softver koji je pokriven sa "GNU General Public License". GNU projekt veinu svog softvera distribuira kao takav softver. The GNU system GNU sustav je potpun unixoidni operacijski sustav. Sastoji se od hrpe programa i ukljuuje sav GNU softver kao i mnogo drugih paketa kao to su X Window System i TeX koji nisu GNU softver. Budui da je svrha GNU-a da bude slobodan, svaki njegov dio mora biti slobodan. GNU programi18/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Termin "GNU program" je ekvivalent terminu "GNU softver". Neki program je GNU program ako je GNU softver. Takoer se koristi i termin "GNU paket". GNU softver GNU softver je softver izdan pod nadlenosti GNU projekta. Veina GNU softvera je copylefted, no ne sav. Bitno je da je sav GNU softver slobodan (free) softver. Dio GNU softvera su napisali ljudi iz FSF-a no veinu su napisali volonteri. Ne-slobodan (non-free) softver Non-free softver je softver koji nije slobodan. To ukljuuje "semi-free" softver i vlasniki softver. Semi free softver Semi free softver je softver koji nije slobodan ali dolazi sa dozvolom pojedincima da koriste, kopiraju, distribuiraju i mijenjaju program za neprofitne svrhe. Etiki je semi-free sofver bolji od vlasnikog softvera no svejedno stvara probleme jer se ne moe upotrijebiti kao dio slobodnog operacijskog sustava. Vlasniki (proprietary) softver Vlasniki softver je softver koji nije niti slobodan (free) niti semi-free. Njegovo koritenje, redistribuiranje ili modifikacija su zabranjeni ili zahtijevaju posebnu dozvolu. Freeware Termin "freeware" nema jasnu prihvaenu definiciju. Obino se koristi za softver koji dozvoljava redistribuciju ali ne dozvoljava mijenjanje i izvorni kod mu nije dostupan. Takav softver nije slobodan (free) softver, to su dva potpuno razliita termina. Shareware Shareware je softver koji dolazi sa dozvolom da ga se redistribuira ali svatko tko ga nastavi koristiti mora platiti licencnu naknadu. Shareware nije ni slobodan niti semi-free softver. Dva su razloga: shareware ne dolazi sa izvornim kodom, znai ne moe ga se mijenjati te shareware ne dolazi sa dozvolom da ga se instalira i koristi bez da ga se plati, ak niti u nekomercijalne svrhe.

19/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Privatni softver Privatni ili "prilagoeni" softver je softver razvijen za jednog korisnika (tipino organizacija ili kompanija). Taj ga korisnik uva i koristi za svoje potrebe i ne distribura ga. Privatni softver je slobodan softver u jednostavnom smislu da ako je jedinstven, korisnik ima sva prava na njega. No, dublje gledajui, nema smisla razmiljati o privatnom softveru na nain je li on slobodan ili nije. Komercijalni softver Komercijalni softver je softver razvijen sa ciljem da se na njemu zaradi novac. Komercijalni softver i vlasniki (proprietary) softver nisu ista stvar. Veina komercijalnog softvera je vlasniki softver ali postoji i komercijalni softver koji je slobodan isto kao to postoji neslobodni (non-free) ne-komercijalni softver. Vana stvar je naglasiti da je mogu slobodan komercijalni softver. Zato ne bi smo trebali govoriti komercijalni softver kad mislimo na vlasniki sofver.

20/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

GNU LICENCA GNU Opa javna licenca - prijevodGNU OPA JAVNA LICENCA verzija 2, lipanj 1991.This is an unofficial translation of the GNU General Public License into Croatian. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that. However, we hope that this translation will help Croatian speakers understand the GNU GPL better. Ovo je neslubeni prijevod GNU Ope javne licence na hrvatski jezik. Nije ga objavio Free Software Foundation i zakonito ne izrie uvjete distribucije programa koji koriste GNU GPL - to ini samo izvorni, engleski tekst GNU GPL-a. Meutim, nadamo se da e ovaj prijevod pomoi hrvatskim itateljima u boljem razumijevanju GPL-a. Copyright (C) 1989., 1991. Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Umnaanje i distribuiranje primjeraka ove licence jednakih izvorniku doputeno je svakomu, no njeno je mijenjanje zabranjeno.

PredgovorLicence veine programa nastoje vam oduzeti slobodu da ih dijelite i mijenjate. Tomu nasuprot, GNU Opa javna licenca jami vam slobodu dijeljenja i mijenjanja slobodnih programa -- kako bi program bio slobodan za sve svoje korisnike. Ova Opa javna licenca vrijedi za vei dio programa Free Software Foundationa i bilo koji drugi program iji se autor obvee na njeno koritenje. (Neke druge programe Free Software Foundationa pokriva GNU Opa javna licenca za knjinice.) I vi je moete primjeniti na svoje programe. Kada govorimo o slobodnim programima, govorimo o slobodi, a ne cijeni. Naa Opa javna licenca je stvorena kako bi vam zajamila slobodu distribuiranja primjeraka slobodnih programa (i, ako elite, naplaivanje toga), primanje izvornog koda ili mogunost da ga dobijete, mogunost mijenjanja programa ili koritenja njegovih dijelova u novim slobodnim programima; te saznanje da to moete uiniti. Kako bi zatitili vaa prava, moramo postaviti ogranienja koja zabranjuju bilo kome poricanje ovih prava ili zahtjev da ih se odreknete. Ova ogranienja predstavljaju odreene odgovornosti za vas ako distribuirate ili mijenjate primjerke programa. Na primjer, ako distribuirate primjerke takvog programa, besplatno ili ne, primateljima morate dati sva prava koja imate i sami. Takoer, oni moraju dobiti izvorni kod ili mogunost njegova dobivanja. A vi ih morate obavijestiti o ovim uvjetima kako bi znali svoja prava. Vaa prava titimo u dva koraka: 1. stavljajui autorska prava na program, te 2. nudei vam ovu licencu koja vam omoguava zakonito umnaanje, distribuiranje i/ili mijenjanje programa.

21/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Takoer, zbog zatite svakog autora i nas, elimo biti sigurni da svi razumiju da za ovakve slobodne programe nema jamstva. Ako program netko promijeni i poalje dalje, elimo da njegovi primatelji znaju kako ono to su dobili nije izvornik, kako bilo kakvi problemi u takvoj verziji ne bi utjecali na ugled izvornog autora. Na kraju, svakom slobodnom programu stalno prijete patenti. elimo izbjei opasnost individualnog licenciranja od strane redistributora slobodnog programa, to bi program uinilo vlasnitvom. Da to sprijeimo, razjasnili smo kako svaki patent mora biti licenciran za svaiju slobodnu uporabu ili uope ne biti licenciran. Slijede tone obveze i uvjeti za umnaanje, distribuiranje i mijenjanje.

GNU OPA JAVNA LICENCA OBVEZE I UVJETI ZA UMNAANJE, DISTRIBUIRANJE I MIJENJANJE0. Ova Licenca vrijedi za svaki program ili drugo djelo koje sadri obavijest vlasnika autorskog prava prema kojoj se ono moe distribuirati pod uvjetima ove Ope javne licence. Pojam "Program" nadalje se odnosi na svaki takav program ili djelo, a "djelo zasnovano na Programu" odnosi se na Program ili bilo koji rad izveden iz njega po zakonu o autorskim pravima: dakle, djelo koje sadri program ili njegov dio, toan ili s promjenama i/ili preveden na drugi jezik. (Nadalje, prijevod je bez ogranienja ukljuen u pojam "promjena".) Svakom korisniku licence obraamo se kao "vama". O aktivnostima osim umnaanja, distribucije i mijenjanja ova Licenca ne govori; one su izvan njenog dosega. in pokretanja Programa nije ogranien, a o njegovom rezultatu govorimo samo ako je sadraj rezultata takoer djelo zasnovano na Programu (bez obzira to ga je stvorio Program). Je li to istina ovisi o funkciji Programa. 1. Smijete umnaati i distribuirati tone kopije izvornog koda Programa kakvog ga dobijete, na bilo kakvom mediju, ako oigledno i prikladno na svakoj kopiji istaknete odgovarajuu poruku o autorskim pravima i odricanje jamstava; ostavite nepromijenjenim sve obavijesti koje se odnose na ovu Licencu i na nepostojanje jamstava; i dajte svakom primatelju Programa primjerak ove Licence zajedno s Programom. Smijete naplatiti fiziki in prenoenja kopije i moete po svom izboru ponuditi jamstvo za naplatu. 2. Smijete mijenjati svoj primjerak ili primjerke Programa ili bilo kojeg njegovog dijela, tako oblikovajui djelo zasnovano na Programu, i umnaati i distribuirati takve promjene ili djelo pod uvjetima prethodnog Dijela 1., ako zadovoljavate ove uvjete: a) Promijenjene datoteke moraju nositi istaknute obavijesti da ste promijenili datoteke i datum svake promjene. b) Svako djelo koje distribuirate ili objavite, a koje u cjelosti ili djelomino sadri ili je izvedeno iz Programa ili njegovog dijela, mora biti licencirano u cjelosti bez naplate svima pod uvjetima ove Licence. c) Ako promijenjeni program, kada je normalno pokrenut, ita naredbe interaktivno, on mora, pokrenut za takvu interaktivnu uporabu u najuobiajenijem nainu, ispisati ili prikazati obavijest koja ukljuuje odgovarajuu poruku o autorskim pravima i obavijest da nema jamstva (ili drugaiju, koja kae da vi jamite) i da korisnici mogu ponovno distribuirati program pod ovim uvjetima, i objasniti korisniku kako da proita primjerak ove Licence. (Iznimka: ako je sam Program interaktivan, ali obino ne ispisuje takvu obavijest, vae djelo zasnovano na Programu ne mora ispisati obavijest.)

22/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Ove potrebe vrijede za promijenjeno djelo u cjelini. Ako raspoznatljivi dijelovi tog djela nisu izvedeni iz Programa, i mogu se sami razumno smatrati nezavisnim i odvojenim djelima, onda ova Licenca, i njeni uvjeti, ne vrijede za te dijelove kada ih distribuirate kao zasebna djela. Ali ako distribuirate iste dijelove kao dio cjeline koja je djelo zasnovano na Programu, distribucija te cjeline mora zadovoljavati uvjete ove Licence, ije dozvole drugima koji su je licencirali vrijede za cjelinu, odnosno svaki njen dio bez obzira tko ga je napisao. Dakle, ovom dijelu nije namjera da dobije prava ili da pobija vaa prava na djelo koje ste vi napisali u cjelini; namjera mu je poboljati pravo nadzora distribucije izvedenih ili skupljenih djela zasnovanih na Programu. Takoer, sama integracija drugog djela nezasnovanog na Programu s Programom (ili djelom zasnovanim na Programu) na mediju pohranjivanja ili distribucije ne dovodi to drugo djelo u doseg ove Licence. 3. Smijete umnaati i distribuirati Program (ili djelo na njemu zasnovano, po Dijelu 2.) u objektnom kodu ili izvrnom obliku pod uvjetima Dijela 1. i 2. ako uinite jedno od sljedeeg: a) Popratite ga potpunim odgovarajuim strojno itljivim izvornim kodom, koji mora biti distribuiran pod uvjetima Dijela 1. i 2. na mediju po izboru koritenom za razmjenu programa; ili b) Popratite ga pisanom ponudom, koja vrijedi barem tri godine, da ete svakoj treoj stranci dati, za cijenu ne veu od vaeg troka fizikog vrenja distribucije izvornog koda, potpunu strojno itljivu kopiju odgovarajueg izvornog koda, koju e se distribuirati pod uvjetima Dijela 1. i 2. na mediju po izboru koritenom za razmjenu programa; ili c) Popratite ga informacijama koje ste vi primili o ponudi za distribuciju odgovarajueg izvornog koda. (Ova mogunost vrijedi samo za nekomercijalnu distribuciju i samo ako ste primili program u objektnom kodu ili izvrnom obliku s takvom ponudom, prema prethodnom Odlomku b.) Pod izvornim kodom za djelo mislimo na eljeni oblik djela za njegovo mijenjanje. Za izvrno djelo, potpuni izvorni kod odnosi se na izvorni kod svih modula koje ono sadri, uz datoteke koje definiraju svako ukljueno suelje, uz skripte za nadzor prevoenja i instalacije izvrne datoteke. Meutim, kao posebna iznimka, distribuirani izvorni kod ne mora ukljuiti bilo to to se obino distribuira (bilo u izvornom kodu, bilo u izvrnom obliku) s glavnim dijelovima (prevodioc, jezgra, itd.) operacijskog sustava na kojem izvrna datoteka radi, osim ako sam taj dio prati izvrnu datoteku. Ako se izvrna datoteka ili objektni kod distribuira omoguavanjem pristupa kopiji na odreenom mjestu, onda se omoguavanje jednakog pristupa izvornom kodu smatra distribucijom izvornog koda, iako se drugi ne prisiljavaju na umnaanje izvornog koda zajedno s objektnim. 4. Ne smijete umnaati, mijenjati, podlicencirati ili distribuirati Program osim kako je izraeno u ovoj Licenci. Bilo kakav pokuaj umnaanja, mijenjanja, podlicenciranja ili distribuiranja Programa je nezakonit, i odmah ponitava vaa prava prema ovoj Licenci. Meutim, strankama koje su od vas dobile kopije ili prava pod ovom Licencom nee biti ponitene licence, dok zadovoljavaju sve uvjete. 5. Ne morate prihvatiti ovu Licencu, poto ju niste potpisali. Meutim, nita vam drugo ne jami dozvolu za mijenjanje ili distribuciju Programa ili iz njega izvedenih djela. Te su radnje zakonom zabranjene ako ne prihvatite ovu Licencu. Prema tome, mijenjanjem ili distribuiranjem Programa (ili djela na njemu zasnovanog), pokazujete svoj pristanak na ovu Licencu, i sve njene obveze i uvjete za umnaanje, distribuiranje i mijenjanje Programa ili djela na njemu zasnovanih.23/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

6. Svaki put kada ponovo distribuirate Program (ili bilo koje djelo zasnovano na Programu), primatelj automatski prima licencu od izvornog vlasnika za umnaanje, distribuiranje ili mijenjanje Programa prema ovim obvezama i uvjetima. Ne smijete nametnuti bilo kakva daljnja ogranienja na primateljevo koritenje ovdje zajamenih prava. Niste odgovorni za traenje zadovoljavanja ove Licence od drugih stranaka. 7. Ako vam se, kao posljedicu sudske presude ili tube za krenje patenta ili iz bilo kojeg drugog razloga (ne samo to se tie patenata), nameu obveze (bilo sudskim nalogom, nagodbom, ili drukije) u kontradikciji s uvjetima ove Licence, to ne znai da smijete kriti uvjete ove Licence. Ako ne moete distribuirati tako da zadovoljavate istodobno i svoje obveze pod ovom Licencom i sve ostale odgovarajue obveze, onda kao posljedicu uope ne smijete distribuirati Program. Na primjer, ako patentna licenca ne doputa slobodnu redistribuciju Programa svima koji njegove kopije dobiju izravno ili neizravno od vas, onda je jedini nain na koji moete zadovoljiti i nju i ovu Licencu prestanak distribuiranja Programa. Ako se bilo koji dio ovog Dijela dri nevaeim ili neprovedivim pod bilo kakvim okolnostima, namjena je Dijela da vrijedi i Dio u cjelini namijenjen je da vrijedi u drugim okolnostima. Ovom Dijelu nije svrha da vas potakne na krenje patenata ili drugih prava na vlasnitvo ili na njihovo pobijanje; jedina mu je svrha zatita integriteta distribucijskog sustava slobodnih programa, kojeg implementira javna praksa. Mnogi ljudi su velikoduno pridonijeli velikom broju programa distribuiranim kroz taj sustav pouzdajui se u dosljednu primjenu tog sustava; na autoru/donatoru je odluka da li e programe distribuirati nekim drugim sustavom i korisnik licence ne moe mu nametati svoj izbor. Namjera ovog Dijela je razjanjavanje onoga za to se vjeruje da su posljedice ostatka Licence. 8. Ako je distribucija i/ili koritenje Programa u nekim dravama ogranieno bilo patentima bilo sueljima na koje se polau autorska prava, izvorni vlasnik autorskih prava koji je Program stavio pod ovu Licencu moe dodati eksplicitno zemljopisno ogranienje distribucije izuzimajui takve drave, i inei distribuciju dozvoljenom samo u ili meu dravama koje nisu izuzete. U tom sluaju, ova Licenca ukljuuje ogranienje kao da je napisano u tijelu ove Licence. 9. Free Software Foundation s vremena na vrijeme moe objaviti promijenjene i/ili nove verzije Ope javne licence. Takve nove verzije bit e duhom sline sadanjoj, no mogu se razlikovati u detaljima kako bi se rijeili novi problemi ili brige. Svakoj verziji se daje razliit broj verzije. Ako Program navodi broj verzije ove Licence koja za njega vrijedi i "bilo koja kasnija verzija", smijete potovati obveze i uvjete te verzije ili bilo koje kasnije verzije koju je objavio Free Software Foundation. Ako Program ne odreuje broj verzije ove Licence, smijete odabrati bilo koju verziju ikad izdanu od strane Free Software Foundationa. 10. Ako elite ukljuiti dijelove Programa u druge besplatne programe iji se uvjeti distribucije razlikuju, piite autoru i traite njegovu dozvolu. Za programe ija autorska prava ima Free Software Foundation, piite Free Software Foundationu; ponekad radi toga radimo iznimke. U odluivanju e nas voditi dva cilja uvanja slobode svih izvedenica iz naeg programa i promicanje dijeljenja i ponovnog koritenja programa openito. NEMA JAMSTVA 11. POTO JE PROGRAM LICENCIRAN BESPLATNO, ZA PROGRAM NEMA JAMSTVA, U MJERI DOPUTENOJ PRIMJENJIVIM ZAKONOM. OSIM AKO JE DRUKIJE IZRAENO NAPISMENO, VLASNICI AUTORSKIH PRAVA I/ILI DRUGE24/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

STRANKE PROGRAM DAJU "KAKAV JEST" BEZ JAMSTVA BILO KOJE VRSTE, IZRAENOG ILI PODRAZUMIJEVANOG, UKLJUUJUI, ALI NE SAMO NJIH, PODRAZUMIJEVANA JAMSTVA TRGOVINSKE PRIKLADNOSTI I ODGOVARANJA ODREENOJ SVRSI. SVI RIZICI VEZANI ZA KVALITETU I BRZINU PROGRAMA OSTAJU NA VAMA. AKO SE PROGRAM POKAE NEVALJANIM, VI SNOSITE SVE TROKOVE POTREBNOG ODRAVANJA, POPRAVLJANJA I ISPRAVLJANJA. 12. NI U KOJEM SLUAJU, OSIM NUNO PO PRIMJENJIVOM ZAKONU ILI NAGODBOM NAPISMENO, BILO KOJI VLASNIK AUTORSKIH PRAVA, ILI BILO KOJA DRUGA STRANKA KOJA SMIJE MIJENJATI I/ILI REDISTRIBUIRATI PROGRAM KAKO JE DOZVOLJENO GORE, NEE BITI VAMA ODGOVORAN ZA TETE, UKLJUUJUI OPE, POSEBNE, SLUAJNE ILI POSLJEDINE TETE PROIZALE IZ KORITENJA ILI NEMOGUNOSTI KORITENJA PROGRAMA (UKLJUUJUI, ALI NE SAMO NJIH, GUBITAK PODATAKA ILI INJENJE PODATAKA NETONIM ILI GUBITKE VAS ILI DRUGIH STRANAKA ILI NEUSPJEH PROGRAMA DA RADI S BILO KOJIM DRUGIM PROGRAMOM), AK I AKO JE TAKAV VLASNIK ILI DRUGA STRANKA UPOZORENA NA MOGUNOST TAKVIH TETA. KRAJ OBVEZA I UVJETA

25/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Vrste GNU licenciPostoje tri vrste GNU licenci: GNU GPL Koristi se sa veinom GNU programa i sa vie od polovice svih slobodnih softverskih paketa. Osnovna ideja je da prui potpunu slobodu korisnicima softvera i onemogui dodavanje ikakvih dodatnih restrikcija na program. GNU LGPL Koristi se za neke (ne sve) GNU biblioteke (library). Ova licenca se je nekad zvala "Library GPL" ali joj je ime promjenjeno jer je navodila ljude da je koriste ee no to je to potrebno. Glavna razlika je u tome to se biblioteka izdana pod LGPL moe upotrijebiti i u vlasnikom softveru dok se biblioteka izdana pod obinom GPL smije upotrijebiti samo u slobodnom softveru. to je od toga bolje, stvar je strategije i ovisi za svaku biblioteku posebno. GNU FDL Koristi se za dokumentaciju koja se izdaje uz slobodan softver (no ne nuno samo za to). Daje slobodu svima da koriste, kopiraju, mijenjaju, distribuiraju tu dokumentaciju, besplatno ili uz naknadu. GNU General Public Licence (GNU GPL) GNU Lesser General Public License (GNU LGPL) GNU Free Documentation Licence (GNU FDL)

26/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

ZAKLJUAKGNU pokret je pokrenut iz jednostavog razloga - elje za slobodom, elje da se napravi neto pozitivno, neto od ega e svi imati koristi. Ljudi koji su to gurali imali su teak zadatak ispred sebe, napraviti slobodan operacijski sustav. Nisu imali neograniena materijalna sredstva za to, nisu imali ni obeanje da ih novac eka na kraju tog dugog puta. Imali su samo znanje i veliku volju. Malo po malo, kako se je sve vie ljudi ukljuivalo u pokret, uspjeli su doi do svog cilja (iako ne ba onako kako su imali u planu na poetku). Nastao je GNU/Linux. Svijet je dobio slobodni operacijski sustav (u nekim verzijama). Je li on bolji ili loiji od drugih? O tome postoje podjeljena miljenja no to nije vano. Vano je da je on slobodan to znai da ako netko smatra da neto ne valja i da moe bolje, ima slobodu to sam napraviti. To mu je omogueno time to ima izvorni kod i time to mu GNU licenca pod kojom dolazi osigurava to pravo. Druga stvar koja je proistekla iz tog pokreta je pojam slobodan (free) softver. Pokazalo se da je taj softver u pravilu bolji i pouzdaniji od vlasnikog (proprietary) softvera. Razlog je ponovno taj to slobodan softver dolazi sa izvornim kodom. Dostupnost izvornog koda omoguuje bilo kome da proui taj softver i samim time se bugovi bre pronalaze. Takoer, sloboda da se mijenja kod omoguuje bilo kome da prilagodi program upravo svojim potrebama. Time se dobija velika baza gotovog softvera u kojoj svatko moe nai neto korisno za sebe, pogotovo ako sam nije vian programiranju. Kakva je budunost GNU pokreta i slobodnog softvera? To je teko pitanje. S jedne strane imamo velike kompanije sa mnogo novca koje na razne naine ele zaustaviti slobodan softver koji je zbog svoje kvalitete postao ozbiljan konkurent njihovim loim poluproizvodima, a potpuno je besplatan. Ide se ak tako daleko da se pokuava uvesti patent na softverske algoritme to je po mom miljenju totalno apsurdno i glupo, da ne kaem opasno. Apsurdna je sama ta ideja da se neto tako apstraktno kao to je znanje, moe smatrati materijalnim dobrom i polagati prava na to. Drugi problem GNU pokreta i slobodnog softvera je taj to se izdavanjem programa kao slobodnog (pod GNU GPL) ne moe obogatiti budui da svatko tko jednom dodje do programa tako izdanog, moe ga dalje distribuirati bez ikakve naknade autoru. Iako postoje naini da se i takav softver unovi (donacije, posebne prilagodbe

27/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

softvera i sl.) zarada nikada nije i ne moe biti ni blizu onoj koja se okree u vlasnikom softveru. Kod nekih drava (ukljuujui i Hrvatsku) veliki problem u prihvaanju slobodnog softvera je i vrlo razvijena kultura piratsva. U zemljama gdje piratsvo nije tako raireno slobodan softver je dobar izbor i zbog svoje cijene (besplatan je). Tamo gdje je piratski softver normalna stvar, jedina prednost slobodnog softvera je to sto dolazi sa izvornim kodom, ali ta prednost veini korisnika nije bitna jer samo rijetki imaju znanje to iskoristiti. Na kraju, nebitno kakva budunost eka slobodan softver, on je sada tu. Poeo je kao ideja jednog ovjeka, tekom mukom i uz puno odricanja napravio je poetak, pridruili su mu se i drugi i stvar je krenula. Danas za gotovo sve to postoji kao vlasniki softver postoji i verzija slobodnog softvera, koji budui da je nastao iz ljubavi prema programiranju a ne zbog novca, je obino bolji i kvalitetniji. Zbog toga svi mi imamo mogunost izbora (jo kad bi se i igre izdavale pod GNU licencom kao slobodan softver, gdje bi nam bio kraj). :)

28/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

NAPOMENEMaterijal i ideje za ovaj seminar sam naao uglavnom na web stranici http://www.gnu.org ili linkovima koji su postavljeni tamo. Zbog prirode teme, nisam mogao pisati samo injenice nego je velik dio rada zapravo stav i razmiljanje jednog ovjeka, Richarda Stallmana (osim zakljuka koji je iskljuivo moje miljenje o svemu tome). Najvei problem mi je bio prevoenje nekih rijei koje u hrvatskom jeziku nemaju zamjenu ili ako i imaju, runo zvue. Zbog toga sam neke rijei ostavio u izvornom, engleskom obliku. Prijevod GNU licence (pod 4.1) sam kopirao takoer sa http://www.gnu.org jer ja i tako to ne mogu bolje prevesti a i bilo bi suvino prevoditi kad prijevod ve postoji.

29/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Marijela Napast

STRUKTURA UNIXA

30/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

OPERACIJSKI SUSTAVSvako raunalo ima operacijski sustav. Operacijski sustav je program koji kontrolira rad svih ostalih dijelova raunala, kako hardvera, tako i softvera. Najvanije je to nam doputa da koristimo sve mogunosti koje nam pruaju razni programi. Detaljno govorei Unix nije samo jedan operacijski sustav, on je obitelj operacijskih sustava. Razliiti proizvoai proizvode svoje verzije Unixa. Iako su sve verzije jako sline, postoje male razlike koje mogu uzrokovati probleme. Najoitiji primjer je raspored sustava datoteka i tono odreeni format nekih naredbi. Jedna od velikih prednosti Unixa za programere je to da su svi najbolje napisani korisniki programi neovisni od hardvera to ih ini lako itljivim novim sistemima. Unix je viekorisniki i viezadani operacijski sustav. Tako moe istovremeno postojati vie korisnika povezanih na sistem i svaki od njih moe imati pokrenuto vie programa. Korisnici velikom prednou Unixa smatraju mogunost istovremenog koritenja vie programa jer tako ne gube vrijeme na ekanje da se jedan posao zavri kako bi mogao zapoeti novi. Unix se koristi na radnim stanicama i viekorisnikim serverima. Na X terminalima i radnim stanicama X Windows predstavlja grafiko suelje izmeu korisnika i Unixa. Ali ipak poznavanje Unixa je potrebno za operacije koje nisu pokrivene grafikim programom, ili kad ne postoji X Windows sistem npr. u telnet sessionu.

OSNOVNA STRUKTURA UNIX OPERACIJSKOG SUSTAVAUnix je operacijski sustav koji se sastoji od 3 najvanija dijela: kernela, shella(ljuske) i datotenog sustava tj. programa. Strukturu Unixa moe opisati slika1.

Slika 1.

31/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

KERNELKernel kao to govori i njegovo ime je jezgra svakog Unix sistema i oitava se prilikom svakog pokretanja sistema i vezan je uz sam pokretaki dio programa. Rukuje sa cijelim izvornim sistemom i prezentira nam ga zajedno sa svakim spojenim korisnikim sustavom. Zadaa kernela je da dri procese i korisnike odvojenima i regulira pristup hardveru sistema, ukljuujui i procesor, memoriju, disk i druge ulazno izlazne ureaje. Kernel direktno komunicira sa hardverom i omoguava koritenje korisnikih programa. Ti korisniki programi ne trebaju znati nita o hardveru. Oni samo trebaju znati na koji nain komunicirati s kernelom i traiti od njega da izvri eljenu operaciju. Oni komuniciraju s kernelom kroz skup standardnih sistemskih poziva. Ti sistem pozivi trae od kernela da izvri operacije kao to su: otvaranje, zatvaranje, itanje, pisanje, povezivanje, izvravanje, startanje ili promjenu zapisa zbrojeva, mijenjanje vlasnitva nad datotekom ili direktorijem, promjene u novi direktorij, stvaranje procesa, determiniranje procesa, omoguavanje pristupa hardver ureajima i postavljanje granica izvornom sistemu. Najjednostavnije reeno kernel na naredbu korisnika ukljuuje i iskljuuje dio sistema. Npr. ako traimo da nam raunalo ispie sve datoteke unutar direktorija naredbom ls, onda kernel nareuje raunalu da s diska uita sve datoteke u traenom direktoriju i ispie ih na ekran. Neke od osnovnih funkcije kernela su: rukovanje s memorijom sustava i alociranje memorije za svaki proces rasporeivanje rada procesora kako bi rezultati rada svakog korisnika bili to uspjeniji organiziranje prenaanja podataka iz jednog djela raunala u drugi dio prihvaanje instrukcija od strane shella i njihovo predstavljanje iznuivanje dozvola pristupa koje su na snazi u datotenom sustavu Da bi se prikazao primjer na koji shell i kernel rade zajedno pretpostavimo da korisnik utipka naredbu rm moja_datoteka (koja ima uinak brisanja datoteke moja_datoteka). Shell trai datoteku koja sadri program rm i zatim postavlja zahtjev kernelu kroz sistemske pozive da izvri program rm na mojoj_datoteci. Kad proces rm moja_datoteka zavri, shell tad vraa korisniku znak unixa % to ukazuje na to da eka na nove naredbe. Da bismo locirali kernel potrebno je znati da root direktorij sadri oboje, pokretaki (boot) program i kernel za sistem. Ime kernel datoteke varira od proizvoaa do proizvoaa,

32/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

ali obino ukljuuje skup slova: nix da bi ga se moglo pronai sa tzv. Wildcard znakovima. Npr.: ls /*nix* -rwxr----- 1 root 1558734 Sep 24 1992 /vmunix

Ova lista definira svaku datoteku u root direktoriju sa skupom slova nix u njihovu imenu. U ovom primjeru ispisuje vmunix to je zajedniko ime za kernel file.

33/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

SISTEMSKI POZIVISistemski pozivi su suelje izmeu kernela i korisnikih programa koji se pokreu na vrhu njega. Korisnici koji rukuju samo s shellom, tekst editorima ili drugim aplikacijskim programima nemaju potrebu znati mnogo o sistemskim pozivima, ali pravo poznavanje poziva je najvanije za Unix programere. Sistemski pozivi su jedini nain na koji se moe pristupiti opcijama kernela, kao to je sustav datoteka, mehanizam viezadanosti i meuprocesno komuniciranje. Sistemski pozivi definiraju ono to je Unix, jer sve ostalo tj. subrutine i naredbe se grade na toj osnovi. Neki od njih su povezani sa podacima koje korisnici ne smiju mijenjati. Postavlja se pitanje kako programeri pristupaju sistemskim pozivima. Ne postoji razlika izmeu sistemskog poziva i bilo kojeg drugog poziva funkcije. Npr. sistemski poziv read moe se postaviti ovako: amt = read (fd, buf, numbytes) ; Implementacija subrutine read varira u raznim oblicima Unixa. Obino je to asemblerski jezik koji koristi instrukciju stroja dizajniranu tono za sistemski poziv, a nije direktno izvriva iz C programa. Danas je pametno pretpostaviti da su sistemski pozivi jednostavno C subrutine, ali moramo biti svjesni da s obzirom na to da sistemski pozivi ulaze u promjenu konteksta (od korisnika do kernela i natrag), potrebno je mnogo vie vremena nego za obinu sistemsku subrutinu za koju proces posjeduje svoj adresni prostor. Veina sistemskih poziva vraa neku vrijednost. U navedenom primjeru poziv read vraa broj bita. Da bi ukazao na greku sistemski poziv vraa vrijednost koja se ne moe zamijeniti s tonim podatkom i obino je to 1. Zbog toga bi navedeni primjer trebao biti kodiran na sljedei nain: If ((amt= read(fd, buf, numbytes)) == -1) { printf(Read failed\n) ; exit (1) ; } Primjeujemo da je exit takoer sistemski poziv, ali on ne moe vratiti greku. Postoji vie razloga zbog kojih sistemski pozivi koji vraaju 1 nisu uspjeli obaviti traeni posao. Globalna varijabla errno sadri kod koji ukazuje na razlog. Errno sadri tone podatke samo

34/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

ako sistemski poziv doista vrati 1. Ne moemo koristiti errno da bi smo ustanovili da li je do greke uope dolo. Sistemska rutina perror uzima za svoj argument string i daje string, kolonu i opis razloga greke pohranjenog u errnu. Nain na koji koristimo opisane funkcije prikazuje primjer: If ((amt= read(fd, buf, numbytes)) == -1) { perror (read) ; exit (1) ; } Kao izlaz moemo dobiti sljedei tekst: file does not exist on an error. Na stranicama za pomo moemo pronai deklaraciju za svaki poziv. Tu je prikazano koji tip vrijednosti poziv vraa, koji tip argumenata uzima i koje datoteke moramo ukljuiti za koritenje odreenog sistemskog poziva. Slijedi primjer za poziv read(). #include #include #include int read(int d, char *buf, int nbytes) Read() pokuava proitati nbytes podataka iz objekta referenciranog deskriptorom

datoteke d u spremnik buf. Ako je poziv uspjean, vraa toan broj proitanih bita inae vraa 1 i postavlja globalnu varijablu errno koja pokazuje na greku. Prvi dio koda pokazuje koje datoteke moraju biti ukljuene, a onda je napisana sama deklaracija sistemskog poziva. int read(int d, char *buf, int nbytes) Read() uzima 3 argumenta : int koji je nazvan sa d, pokaziva na znak nazvan buf i jo jedan int nazvan nbytes. Read() vraa int kao rezultat. Imena argumenata odreujemo sami. Jo jedan jednostavan primjer sistemskog poziva je vremenski sistemski poziv:

35/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

long time(timep) long *timep;

/* Vraa vrijeme u sistemu */ /* Pointer na vrijeme */

Time vraa vrijeme u sekundama od 01.01.1970. Ako je argument timep razliit od nule tono vrijeme se pohranjuje u integer na koji pokazuje. Neki od sistemskih poziva najnie razine su: kreiraj otvori zatvori iskljui itaj pii trai Neki od sistemskih poziva za kontroliranje procesa su: razdvoji ekaj izvri izai signal Sistemski pozivi za IPC su: pipe dup

36/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

SHELLSvaki put kad se ukljuujemo u Unix sistem, program za ukljuivanje provjerava nau ifru i korisniko ime i smjeta nas u program koji se zove shell (ljuska). Shell djeluje kao suelje izmeu korisnika i kernela. Shell je dio korisnikog programa, a ne dio kernela. Shell omoguuje izvravanje nekih procesa u pozadini. Shell je prevoditelj naredbi (command line interpreter(CLI)). Moemo vidjeti njegov pokaziva na ekranu obino u obliku imena raunala na kojem radimo kojeg slijedi znak %. Po elji korisnik sam moe promijeniti taj pokazni znak. Da bismo napravili na eljeni posao unaamo naredbe na mjesto tog pokazivaa odnosno komandne linije koja se nalazi odmah iza pokazivaa. Shell funkcionira kao prevoditelj naredbi, uzima svaku naredbu i da bi bila obraena prosljeuje ju kernelu. On tada prikazuje rezultat operacija na ekranu. Da bismo saznali koji shell koristimo treba nam informacija koja se nalazi u shell okrunoj varijabli. Naredba echo $SHELL ispisuje vrijednost te varijable. Da bismo otkrili koji shell upravo koristimo potrebno je znati posljednji dio imena, pa tako postoje sljedee mogunosti: Ime: /.../sh /.../csh /.../tcsh /.../ksh /.../bash Shell: Bourne shell C shell TC shell Korn shell Bourne Again SHell

Najee se koriste dva shella; Bourne shell (sh) i C shell (csh). Moemo koristiti razliite shellove upisivanjem imena shella na mjesto pokazivaa, pa emo tako upisati npr. imeshella% csh da bismo pokrenuli C shell, ili imeshella% sh da bismo pokrenuli Bourne shell. Na shell u koji nas sustav odmah ukljuuje moemo promijeniti koritenjem naredbe chsh. Da bismo napustili odreeni shell koristimo naredbu imeshella% exit. Razliiti shellovi izvravaju razliit broj funkcija. Shell provodi sljedee funkcije: a) stvara okruje susretljivo naim potrebama Nae radno okruje je definirano svaki puta kad se spojimo ili zapoinjemo rad s novim shellom. Okruje je definirano vrijednostima koje shell nalazi u inicijalizacijskim datotekama koje se uvijek itaju prilikom pokretanja. Okruje moemo promijeniti promjenom tih

37/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

datoteka i postavljanjem novih vrijednosti u varijable. Svaki shell rukuje na drugaiji nain sa svojim inicijalizacijskim datotekama. esto koritene varijable za radno okruje su: IME EDITOR PAGER PATH PRINTER SHELL TERM TZ b) npr. mail programa Postavlja pager koji e biti koriten od drugih programa, npr. mana za ispisivanje man stranica Odreuje direktorije kroz koje e shell traiti da bi pronaao odreenu naredbu. Direktoriji se pretrauju redom kojim se pojavljuju Odreuje printer koji e sluiti za ispis svih dokumenata koji e mu biti poslani lpr naredbom Postavlja glavni shell Odreuje tip terminala za programe kao to su editor i pager Postavlja vremensku zonu u kojoj se nalazimo manipulira povijeu naredbi OPIS Postavlja editor koji e biti koriten od strane drugih programa,

Shell uva listu naredbi koje smo upisivali. Ako trebamo ponoviti naredbu, koristimo strelice da bismo se pomicali gore i dolje po listi. c) automatski zavrava linije naredbi Utipkavanjem djela imena naredbe, naziva datoteke ili direktorija i pritiskom na Tab, tcsh shell e zavriti ostatak imena automatski. Ako shell pronae vie od jednog imena koje poinje tim slovima ut e se beep to ukazuje na to da je potrebno utipkati jo nekoliko slova prije ponovnog pritiskanja Taba. d) e) f) pie shell skripte definira naredbene aliase editira zajednike linije

38/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

PROGRAMISve u Unixu je ili datoteka ili proces. Proces je program za izvravanje identificiran jedinstvenim PID-om(Process identifier). Datoteka je kolekcija podataka stvorenih od korisnika koritenjem tekst editora, compilera,itd. Primjeri datoteka su: dokument ( izvjetaj, esej) tekst programa napisan u nekom viem jeziku instrukcije razumljive direktno stroju i nerazumljive prosjenom korisniku, npr. kolekcija binarnih brojeva (executable ili izvrni file) direktorij koji sadri informacije o svojem sadraju koje mogu biti skup drugih direktorija ili poddirektorija i obinih datoteka Okruje aplikacija sastoji se od: shella maila tekst editora (vi, emacs, jove) tekst procesa (nroff, troff, TeX) kontrolnog koda za izvorni sistem (SCCS) razvojnih opcija (as, ld, cpp, cc) drugih opcija (who, date, wc, grep, comp) Programi i naredbe komuniciraju s kernelom kako bi se izvrile funkcije koje je pokrenuo korisnik. Programi su obino grupirani po kategorijama, pa tako npr. imamo programe koje koristimo za pisanje, programe koje koristimo za programiranje ili programe koji slue kao poslovne aplikacije. Sistemski programi su najee binarni i kompajliraju se od C izvornog koda. Smjeteni su na mjesta kao /bin, /usr/bin, /usr/local/bin, /usr/ucb, idr. Oni izvode funkcije na koje nas asocira sama pomisao na Unix, kao to su sh, csh, date, who, more idr. Sve datoteke su grupirane u strukturu direktorija. Sustav datoteka je ureen prema hijerarhijskoj strukturi, kao izokrenuto drvo. Vrh hijerarhije se tradicionalno naziva root i obiljeava se s kosom crtom -/.

39/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

Slika 2 prikazuje strukturu direktorija.

Slika2: Svaki vor predstavlja ili datoteku ili direktorij datoteka, a svaki sljedei sadri druge datoteke i direktorije. Datoteku ili direktorij odreujemo po njegovu imenu, ili punom ili apsolutnom imenu ili jednom relativnom za lokaciju. Puno ime zapoinje s rootom(/), i zatim slijede grane datotenog sustava svaka odvojena s kosom crtom (/), sve dok ne dosegnemo eljenu datoteku. Npr. /home/condron/source/xntp Relativno ime specificira ime relativno drugom imenu, a uobiajeno se odnosi upravo na onaj direktorij u kojem se trenutno nalazimo. Dva posebna direktorij ulaza su: direktorij u kojem se trenutno nalazimo roditeljski direktorij direktorija u kojem se nalazimo Npr. ako se nalazimo u /home/frank i elimo specificirati viu razinu moemo koristiti: ../condron/source/xntp To ukazuje da je prvo potrebno ii jedan nivo direktorija iznad i onda se spustiti kroz condorn direktorij kojeg slijedi source direktorij i onda xntp. Svaki direktorij i datoteka su izlistani u svojem roditeljskom direktoriju. U sluaju root direktorija roditeljski direktorij je on sam. Direktorij je datoteka koja sadri tablicu s imenima datoteka koja se nalaze u njemu i svako ime datoteke pridruuje inode broju u listi. Inode je specijalna datoteka dizajnirana da ju kernel moe itati kako bi dobio informacije o svakoj40/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Struktura Unixa

datoteci. Odreuje dozvole nad datotekama, vlasnitvo, datum stvaranja, zadnjeg pristupa i promjene, te fiziku lokaciju blokova podataka na disku koji sadre datoteku. Sistemu nije potrebna nikakva posebna struktura za podatke koji se nalaze u datoteci. Datoteka moe biti ASCII ili binarna ili kombinacija i moe prezentirati tekstualne podatke, shell skriptu, kod za program, tablicu direktorija, junk ili bilo to drugo. Ne postoji zaglavlje, naslovna informacija ili EOF znak kao dio datoteke. Svaki Unix sustav ima svoju strukturu dozvola. Slijedi jednostavno objanjenje dozvola nad datotekama na serveru temeljenom na Unixu. Svaka stvorena datoteka ili direktorij imaju: a) vlasnika to je obino osoba koja je stvorila datoteku vlasnik datoteke ili direktorija moe davati razliita doputenja b) grupu kako vie korisnika moe biti povezano u korisniku grupu, postoji grupno vlasnitvo vezano za pojedinu datoteku ili direktorij c) ostalo (svijet) svi ostali korisnici, u ovom sluaju bilo tko spojen na Internet Postoje 3 naina zatite datoteka i direktorija a) r ((Read) - itaj) korisnik koji ima dozvolu itanja datoteke i moe zakljuati sadraj te datoteke korisnik koji ima dozvolu itanja nad direktorijem moe saznati koje se datoteke nalaze u direktoriju (ako se trae detaljne informacije o datotekama unutar direktorija, direktorij mora imati execute dozvolu) b) datoteke korisnik koji ima dozvolu pisanja nad direktorijem moe mijenjati sadraj tog direktorija c) x ((Execute)-Izvri) korisnik koji ima dozvolu izvravanja nad datotekom moe koristiti ime te datoteke kao Unix naredbu korisnik koji ima dozvolu izvravanja nad direktorijem moe kopirati direktorije w ((Write) - Pii) korisnik koji ima dozvolu pisanja nad datotekom moe mijenjati sadraj te

41/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

Andrija Martinovi

SHELL

42/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

UVODU doba nastanka i razvijanja UNIX operativnog sistema, 1970-tih i 1980-tih, raunala nisu bila toliko mona koliko su danas, tako da nije postojalo grafiko suelje (GUI). Prvi ulazno / izlazni ureaji bili su terminali i teleprinteri. Postojali su (viekorisniki) multiuser serveri na koje se bilo mogue spojiti putem terminala i moglo se raditi u tekstualnom nainu rada, komandnoj liniji (CLI), tj. SHELL-u. I danas je ostalo popularno raditi u shell-u, ne samo zbog povijesnih razloga, nego i praktinih. Unix korisnicima je gotovo nezamislivo raditi bez shell-a, tj. terminala. Terminali su i danas prisutni u raznim ustanovama i poduzeima, nije potreban dodatan software da bi se dodao jo jedan terminal, a vano je napomenuti i da je mogue i osobno raunalo koristiti kao obian terminal. Nakon logiranja korisnik moe raditi u shell-u. Danas u standardnim distribucijama (ne onima za specijalne namjene) sve ee se korisnik nakon startanja nae automatski u grafikom okruenju - XWindows, tako da terminal niti ne vidi. Naravno, u bilo kojem trenutku moe aktivirati ili terminal ili X-e (npr. Alt+F2). Dakle, Shell je tekstualno okruenje pomou kojega korisnik komunicira sa operacijskim sustavom, po defaultu koristei tastaturu (kao input) i monitor (kao output). Korisnik instrukcije zadaje u obliku znakovnih komandi, a shell ima zadatak prevoditi te komande u instrukcije razumljive OS-u.

43/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

SHELLShell je korisniki program kao i svaki drugi.

Shell je komandni interpreter UNIX operativnog sistema i moe se promatrati kao sloj koji se nalazi izmeu kernela i korisnika. Interaktivan je s obzirom da ima direktnu komunikaciju sa korisnikom. On dobiva korisnike zahtjeve, interpretira ih i predaje kernelu na izvravanje. Shell je komandni interpreter, tj. jo jedan sloj kojim je hardware raunala sakriven od korisnika.

44/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

Shell ili CLI (Command Line Interpreter) je suelje izmeu korisnika i operativnog sustava (UNIX-a), tj program koji interpretira ono to se napie u komandnoj liniji. Prvo to korisnik vidi kad se UNIX digne je login: pa password:. Nakon uspjenog logiranja OS dodijeli UID (user ID) i GID (primary group ID) i doemo do shell-a. Trebali bi biti u svome (HOME) direktoriju ako postoji ili u ROOT (/) direktoriju. U komandnu liniju, iji defaultni prompt moe izgledati: $ ili # (kod Bourne shell-a) ili % (kod C shell-a), upisuju se naredbe. Te komande mogu biti built-in, tj. ve ugraene tako da se izvravaju direktno iz shell-a , ili se mogu indirektno pozivati iz nekih drugih programa. Ugraene naredbe su razliite kod razliitih verzija shell-ova. Iako su verzije UNIX-a sline, ipak postoje odreene razlike izmeu verzija. Kompatibilne verzije (sh, bash, ksh) i posebna vrsta c shell-a (csh, tcsh). U veini verzija UNIX operativnog sustava obino su na raspolaganju sljedee vrste shell-ova: SHELL Bourne Shell KRATAK OPIS /bin/sh - jednostavan za koritenje, fleksibilan, sa ugraenim programskim jezikom. /bin/rsh - reducirana verzija Bourne Shell-a. /bin/csh - komandni interpreter i programski jezik koji podrava komandni buffer, kontrolu poslova i sintaksu C-like. /bin/ksh - dodatne mogunosti u odnosu na Bourne Shell./bin/rksh reducirana verzija Korn shell-a. /bin/tcsh - unaprjeena verzija C shell-a. Ima bolje editiranje komandnih linija, kompletiranje imena fajlova, ponavljanja komandi.

C Shell

Korn Shell

Turbo C Shell

Naravno, postoji daleko vei broj shell-ova, ali o tome kasnije.

45/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

OSNOVNA STRUKTURA UNIX-ANa slici je prikazana arhitektura UNIX operativnog sustava. U centru strukture nalazi se hardware koji opskrbljuje operativni sustav svim potrebnim hardware-skim resursima. Oko hardware-a se nalazi niz slojeva koji odvajaju korisnika od stroja inei mu na taj nain komforniji rad na raunalu. Prvi sloj oko hardvera je jezgra (kernel) operativnog sistema koje ima zadatak da vie slojeve odvoji od sloja ispod, to jest da ih uini hardware-ski nezavisnim. Slijedei sloj ini komandni interpreter (shell). Prvenstveni zadatak ovog sloja jeste interakcija sa korisnikom (prihvaanje korisnikih zahtjeva, njihovo interpretiranje i predavanje niem sloju (kernelu) na izvravanje). U najviem sloju nalaze se razliite komande i korisniki programi iji je zadatak direktno pruanje specifinih usluga korisniku. Na slici (dole), ovaj sloj je podijeljen na vise dijelova. Svaki dio predstavlja skup srodnih komandi. Imajui ovo u vidu, moe se rei da razumijevanje UNIX operativnog sustava zahtjeva poznavanje etiri njegove osnovne komponente: kernel, shell, komande i fajl sistem koji nije eksplicitno prikazan na slici ali je implicitno sadran u djelu kernela.

Dakle, UNIX OS se sastoji od: jezgre (kernel) zajednikih programa ljuske (shell) viih programskih jezika razliitih namjenskih programa Sada emo malo detaljnije objasniti kernel i shell.

46/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

KERNEL (JEZGRA)Kernel UNIX operativnog sistema kontrolira pristup raunaru, upravlja fajl sistemom, resursima raunara, diskovima, trakama, tampaima, komunikacionim linijama i drugim ureajima. Na slici dat je pregled funkcija Kernel-a.

Za kernel (jezgru) moemo rei da je centralni dio operacijskog sustava koji se uitava pri podizanju sustava, a upravlja raunalnim sklopovljem, radom procesora i dodjelom memorije. Poznavanje jezgre operacijskog sustava nije nuno za koritenje raunala. Nedostupna je obinom korisniku koji moe komunicirati s jezgrom samo preko poziva sustavu.

47/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

LJUSKA (SHELL)Ljuska je tuma ( tzv. interpreter ) naredbi i slui kao veza izmeu korisnika i UNIX-a. Svaki korisnik ima odvojenu kopiju ljuske pa prema tome one mogu biti razliite za svakog korisnika. Kod pokretanja operacijskog sustava UNIX, proces init izvodi proces getty za svaku aktivnu liniju terminala. Prilikom prijave korisnika UNIX-u, odvijaju se sljedee akcije: -getty oslukuje liniju i kada otkrije na njoj skup znakova zakljuen znakom za kraj retka, pokree novi proces login, prenese mu proitane znakove i nestaje -login zavrava proces prijave korisnika UNIX-u (ime korisnika i njegova lozinka te provjera identiteta) i ako je sve u redu, provjerava zadnje polje u datoteci etc/passwd za prijavljenog korisnika. To polje je ime ljuske koja e zamijeniti proces login: ime: ime: passwd: broj1: broj2: tekst:maticno kazalo:ime_ljuske Ljuska je interpreter naredbi. Njezini zadaci su: Primanje korisnikih naredbi Pokretanje korisnikih programa i komunikacija sa jezgrom Prikazivanje rezultata na zaslonu Prilikom spajanja na raunalo, po uspjenoj identifikaciji, nalazimo se u poetnoj ljusci

48/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

VEZA UNIX-a I LJUSKEKomunikacija korisnika i ljuske odvija se sljedeim aktivnostima: ljuska znaka odziva (eng. prompt)(%) naredba ljuska. Izlazak iz ljuske rezultira u preuzimanju linije terminala od strane procesa init i sve ide iz poetka (init getty login ). Ljuska pripada grupi korisnikih programa. Kod operacijskog sustava nema nikakvih privilegija. To znai da svaki korisnik moe odabrati jednu od ponuenih ljusaka ili (ako ima dovoljno znanja) moe napisati program koji e biti njegova ljuska. UNIX ne propisuje kako e izgledati ljuska. Zbog toga danas postoji vei broj ljusaka meusobno razliitih po mogunostima ali s istim globalnim zadatkom. Danas su najrasprostranjenije slijedee ljuske u UNIX-u: sh Stephen Bourne standard shell (Bourne shell) ksh David Korn shell (Korn shell) csh Berkeley C-shell (Bill Joy shell) tcsh poboljana verzija ljuske csh bash GNU Bourne-Again Shell (kombinacija sh, ksh i csh sukladna s IEEE Posix Shell&Tools specification (IEEE WG 1003.2) rsh (eng. restricted shell) dozvoljava samo nedestruktivne akcije na UNIX-u (npr. uporaba za sajmove, predstavljanja, informacije i sl.) rsh (eng. remote shell) ljuska koja omoguuje izvoenje naredbi na udaljenim raunalima u mrei (TCP/IP) ssh (eng. secure shell) omoguuje sigurnu uspostavu veze preko mree ali mogu bit i neto "egzotinije", npr.: psh postscript ljuska (akcije posluivaa NeWS) ocsh objektna ljuska (napisana pomou ljuske csh i razvijena u okviru Gruppe predmeta Raunarski sustavi i procesi (RASIP) na FER-u) sh4 (tvrta 4-MATE, Zagreb). Ljuska je napisana u jeziku C uz koritenje biblioteke curses, namijenjena je korisnicima UNIX-a na obinim terminalima i omoguuje ugodan rad s datotekama (slino programu Norton u DOS-u). Openito za sve ljuske vrijedi pravilo: "Ako u obavljanju zadataka koristimo UNIX-ove naredbe kao elemente, za njihovo povezivanje u kompleksnu cjelinu potrebno je koristiti programiranje u jednoj od ljusaka". Ako je za rjeenje zadataka potrebno koristiti osnovne

49/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

strukture i elemente nekog programskog jezika, preporuka je napisati program u jednom od raspoloivih programskih jezika. UNIX-ove ljuske imaju i nedostatke: Ne izvode se pretjerano brzo. Programi napisani u jednoj od ljusaka su tekst datoteke pa se kao takve i raspodjeljuju, a otean je i sigurnosni mehanizam (problem bitova setuid i sticky). Vii programski jezici ( C, Pascal, Fortran, LISP itd.) omoguavaju korisniku izradu vlastitih programskih aplikacija unutar UNIX okruenja. Razliiti namjenski programi (koji se koriste pod UNIX OS) su programi za dizajniranje, obradu teksta, matematike proraune itd. Dobra strana u ovom suparnitvu je u tome to sve ljuske mogu istodobno postojati na jednoj UNIX-ovoj instalaciji, a na krajnjim korisnicima je da odlue koju e koristiti. Ljuske sh i csh su sastavni dijelovi gotovo svih inaica UNIX-a, a ostale ljuske su negdje prisutne, a negdje ih treba dodatno instalirati. Dva su osnovna naina koritenja ljuske: interaktivni rad koritenjem preusmjeravanja i ulanavanja pojedinih naredaba skupna (eng. batch) obrada u kojoj se naredbe itaju iz datoteke (eng. shell script).

50/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

SHELL KAO SKRIPT INTERPRETOR

Uz pomo VI (ili nekog drugog tekst editora) napie se skripta. Ako prva linija poinje sa # onda je C shell scripta. U suprotnom, script se tretira kao Bourne shell script. izvravanje: /bin/csh [-vx] script_name args ... -v -x ili: % chmod +x script_name % script_name args ... Skripte se koriste kada je interaktivni rad teak i previe zamren te kada zahtjeva mnoge komplicirane akcije koje se ponavljaju. ispisuje linije skripte koje se izvravaju ispisuje komande koje se izvravaju

51/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

STARTANJE SHELL-AShell se starta kao i svaki drugi program, programskom naredbom. UNIX je graen tako da u operaciji boot procesa ukljui i startanje Shell-a, zapravo to je zadnji korak u boot procesu. Odmah po ukljuivanju raunala boot proces obavlja niz radnji kako bi kontrolu predao u ruke korisnicima, i pod boot procesom podrazumijevamo u ovom kontekstu tri osnovne faze. Prva faza je uitavanje jezgre odnosno alociranje raunarskih ureaja i kad se jednom starta kernel on ostaje u memoriji tokom itavog rada raunara odnosno do nestanka napona u memoriji. Druga faza je identifikacija korisnika kako bi bila mogua dodjela kontrolnih prava korisniku i u tu svrhu se pozivaju dva programa a to su getty i login. Prvi ima funkciju obezbjeivanja portova odnosno komunikacijskih kanala prema korisniku. Ti kanali se oznaavaju kao tty sa rednim brojem iza toga. getty prima string sa tastature od korisnika i prosljeuje ga programu login koji odreuje na osnovu tog stringa za koji pretpostavlja da je korisniko ime (Username) korisnika kontrolna prava (permissions), zatim se zahtjeva od korisnika da zada sljedei string koji e od login-a biti prepoznat kao korisnika lozinka (password). Ako password ne odgovara postojeem korisniku ili korisnik nije definiran na toj maini onda login ponovno vraa kontrolu programu getty, a ako je identifikacija validna onda program login starta sljedei program koji izmeu ostalog slui za izolaciju jezgra od korisnika a to je Shell. U svrhu ostvarivanja to vee sigurnosti sistema startanje Shell-a moe biti uskraeno odnosno onemogueno. Tu opet postoje opcije pomou kojih se odreuje koji e se program odmah nakon logiranja startati. To moe biti neki text procesor ili neki spreadsheet program tako da korisnik nema pravo upravljanja fajlovima koji nisu odgovarajueg formata za taj program, i poslije iskljuivanja tog programa sistem korisnika vraa ponovo na identifikaciju. Koji program e biti startan odreuje se u fajlu /etc/passwd koji sadri, izmeu ostalog, logine, kriptirane passworde, UID, GID, Ime korisnika, itd. Dva fajla, koja u stvari predstavljaju shell skripte, se izvravaju u toku login procedure. To su .login i .cshrc i oba se nalaze na HOME direktorijumu korisnika. Prvi se izvrava iz login programa koji obavlja autorizaciju korisnika (provjera login imena i passworda). Ako je autorizacija obavljena uspjeno, sam login program starta shell korisnika. Slino, kao login, shell izvrava svoj start-up fajl. Start-up fajl C shell-a je .cshrc. Oba spomenuta start-up fajla slue za inicijalno automatsko izvravanje odreenih komandi, definiranje aliasa, varijabli,

52/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

radne okoline, i slino. Razlika izmeu .login i .cshrc fajla je ta sto se .login izvrava prvi i to prije startanja shell-a, ali to obino nije znaajno Tipian sadraj .cshrc fajla: # Definicija aliasa # alias ls "ls -CF" alias ll "ls -al" alias la "ls -a alias hi "history" alias xdvi "xdvi -geometry 730x860+30-1 -s 4 -paper a4" alias snns "snns -mono" # # Definiranje varijabli shell-a # set history=40 set filec set prompt="`hostname` \!% " set path=($path /usr/TeX/bin ~srle/bin /usr/local/spice/bin) # # Varijable okoline # setenv SPICE_LIB_DIR /usr/local/spice/lib # # Ostalo # umask 077

53/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

PRIJAVLJIVANJE SA TERMINALADa bi se koristile mogunosti udaljenog raunala, potrebno se na njega prijaviti. Da bi ta prijava bila prijava bila jednaka kao da je raunalo lokalno, koriste se dva protokola: TELNET (virtual terminal protocol) i RLOGIN (Remote Login Protocol). Prijavljivanje sa terminala (preko serijske veze) i konzole (kada X-i nisu pokrenuti) osigurava getty program. init pokree posebnu instancu (kopiju) getty-a za svaki terminal za koji je dozvoljeno prijavljivanje. getty uitava ime korisnika i pokree login program koji uitava ifru korisnika. Ako su korisniko ime i ifra ispravni login pokree shell. Shell je tada korisnikova radna okolina; moe biti tekstualna, Bourne komandni shell ili ak grafiki shell - X-i...) . Kada shell program zavri svoj rad npr. korisnik se odjavi, ili ako je login prekinuo izvravanje zbog neispravnog korisnikog imena ili lozinke, init ovo registrira i pokree novu instancu getty-a. Kernel ne zna nita o prijavama jer sve potrebne poslove obave sistemski programi.

54/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

SHELL KAO INTERPRETOR NAREDBI

Sintaksa naredbiKada login ukljui Shell na ekranu se ispisuje komandni prompt koji obino poinje sa znakom $ ili % ili ako je rije o Superuser-u # sharp sign. Iza toga se nalazi komandna linija (kako se jo i naziva) odnosno komandni input, pa se od korisnika zahtjeva zadavanje komande da bi je Shell pokuao interpretirati. Sintaksna pravila nalau format u obliku komande i argumenata: $ naredba argumenti naredba je neka izvrna datoteka kao npr. naredba, alat, shell, skripta, itd. Naredba mora biti executable odnosno user mora imati pravo na izvraanje te komande, pravo x u listi prava koju ima svaka datoteka u UNIX-oidima. Veina komandi oekuje argumente u sljedeoj formi:

55/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

opcije imena_fileova Na primjer: $ ls la example1.c tulip.o ovo su ukupno tri argumenta. Prvi je opcija a druga dva su imena fileova. Naredbe definiraju akcije na UNIX-u. Svaku naredbu jedinstveno odreuje njeno ime i argumenti. Zadaci shella su izmeu ostalog i uklanjanje suvinih informacija kao to su nepotrebni razmaci izmeu argumenata , itd. U komandama se mogu koristiti univerzalni znakovi *,[] , ?. UNIX je CASE SENSITIVE operativni sistem, odnosno string otkucan VELIKIM i malim slovima nema isto znaenje. Na slici je prikazan dijagram toka izvravanje naredbi.

Neki znakovii koji se sa tastature dobivaju kombiniranjem kontrolnih i standardnih tipki imaju specijalna znaenja. Najznaajniji su:

< Ctrl > S < Ctrl > Q < Ctrl > D < Ctrl > C < Ctrl > Z

-izlaz na ekranu se privremeno zaustavlja. -izlaz na ekranu se nastavlja. -najjednostavniji nain odjavljivanja sa sistema. -prekid procesa. -privremeno zaustavljanje procesa.

56/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

Sve komande UNIX-a se, prema svojim funkcijama, mogu svrstati u neku od sljedeih klasa: obrada teksta -tekst editori (ed, ex, vi), spell checker, tekst formateri i slino, upravljanje podacima -kreiranje, organizacija i brisanje fajlova i direktorijuma, elektronske komunikacije -vise programa (write, mail) koji omoguavaju razmjenu poruka meu korisnicima, programska okolina -mogunost definiranja komforne programske okoline koritenjem razliitih uslunih programa, razvojno okruenje -kompajleri i interpreteri raznih programskih jezika, linkeri, debageri,... ostali usluni programi -grafika podrka, X Windows.

Pisanje vie naredbi u jednu linijuesto se javljaju problemi tokom rada glede zadavanja naredbi. Ako korisnik eli zadati nekoliko naredbi u jednom redu, odnosno eli jednom komandom narediti izvravanje vie naredbi od jednom shell nudi takvu mogunost na dva potpuno razliita naina: $ cd /usr/local/apache/conf; vi httpd.conf to su zapravo dvije naredbe stavljene u jednu komandnu liniju koje koriste za editiranje konfiguracionog fajla Apache web servera. Kljuni sintaksni karakter je semikolon ;. On govori shellu da razdvoji dvije naredbe u jednoj komandnoj liniji. Shell e to uraditi, to znai da e prvo promijeniti radni direktorij u /usr/local/apache/conf gdje se nalazi datoteka httpd.conf i zatim e pokrenuti vi editor za editovanje httpd.conf fajla. Ali ovakav nain zadavanja naredbi bi trebao biti koriten samo onda kada korisnik tono zna kakvog tipa izvrne fajlove pokree. Ova vrsta sintakse bi se trebala izbjegavati ukoliko se radi o odreenim shellovim skriptama.

57/1275

Sveuilite u Splitu Struni studij Raunarstva Zagreb

Programski alati na Unix raunalima Shell

Drugi nain zadavanja vie naredbi u jednu komandnu liniju je startanje konkurentnih naredbi: $ named & apachectl start & mysqld & startx & netscape ova komandna linija starta pet programa od toga etiri u pozadini. Procesi startani u pozadini ne zarobljavaju komandni prompt ve se odvijaju u pozadini a prompt ostaje slobodan za zadavanje daljnjih naredbi. Kljuni znak je & i stavlja se iza naredbe koja pokree program koji elimo startati u pozadini. To su obino neki servisi jer nema potrebe da servis zauzme jedan komandni prompt.

Pisanje jedne naredbe u vie linijaPonekad je potrebno zadati naredbe koje sa svojim argumentima zauzimaju vie od jedne komandne linije u promptu. To esto uradi sam terminal ako ima mogunost automatskog wrapiranja teksta ali kod nekih tipova terminala to nije sluaj pa je potrebno manualno prelomiti komandu u vie linija: $ echo ovo moe biti predugaak > jednu komandnu liniju text da bi stao u \

ovo moe biti predugaak text da bi stao u jednu komandnu liniju znak \ je tzv. backslash karakter. Echo naredba ispisuje tekst na standardni output. Kao to ve spomenuo shell uklanja sve nepotrebne razmake (space caracter) tako da je tekst ispisan bez velikih razmaka kao u komandnoj liniji. Shell vidi komandu kao string i dijeli ime programa i argumente pomou razmaka ma koliko veliki oni bili, a kraj komande prepoznaje po newline karakteru.