Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
reStructuredHgWiki BookDistribucija 2017-07-02 12:47:14
Vedran Miletić
srp 02, 2017
Kolegiji
i
ii
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
HgWiki, pokretan MoinMoinom, vjerno nas je služio od 2011. do 2014. godine i uvelike nam olakšao pripremumaterijala za vježbe, a studentima omogućio pristup nastavnim materijalima putem interneta. Med̄utim, kako webevolvira izrazito brzo, tako i očekivanja od načina prezentacije nastavnih materijala rastu. Specifično, od samogpočetka HgWikija postojao je značajan interes od strane studenata za poboljšanjem podrške za mobilne ured̄aje;svjesni smo da je popularnost mobilnih ured̄aja u današnje vrijeme velika i da oni nude brojne prednosti predklasičnim računalima. Kako bi studentima omogućili da uče kad žele i gdje žele, jedan od temeljnih zahtjevaprema nasljedniku HgWikija je od samog početka da bude potpuno responzivan, odnosno da ga bude mogućekoristiti i na web preglednicima na mobilnim ured̄ajima različitih veličina ekrana. Naravno, to nije jedini zahtjevprema nasljedniku HgWikija; htjeli smo i skup materijala učiniti jednostavnijim za navigaciju i pretraživanje,staviti fokus isključivo na sadržaj vježbi i prateće zadatke te smanjiti količinu distrakcije na stranicama, naročitona mobilnim ured̄ajima gdje je prostor na ekranu vrlo ograničen.
U procesu ostvarenja svih tih ciljeva sadržaj HgWikija pretvoren je u reStructuredText, pa je rezultat ime-novan reStructuredHgWiki (količina kreativnosti koju smo primijenili u imenovanju ponekad iznenadi i nassame). Specifično, responzivnost su nam omogućili sveprisutni Bootstrap i vizualno dojmljivi Bootswatch (temaCerulean) putem teme Bootstrap za Sphinx; alat Sphinx koristimo za prevod̄enje sadržaja u HTML, (LaTeX-proizvedeni) PDF i ostale formate. Sadržaj se kontinuirano nadopunjava i osvježava, a datum zadnje promjeneuvijek je naveden u naslovnoj traci. Sugestije za poboljšanje sadržaja su dobrodošle, med̄utim, još su više do-brodošli doprinosi u vidu zakrpi za izvorni kod materijala. Izvorni kod, upute za prevod̄enje i opis procesa slanjadoprinosa dostupni su putem službenog repozitorija na korisničkom računu Odjela za informatiku na Bitbucketu.Pogreške u sadržaju su moguće, naročito stilske pogreške i tipfeleri; molimo da uočene pogreške prijavite putemBitbucketa.
Kolegiji 1
https://moinmo.in/https://en.wikipedia.org/wiki/Responsive_web_designhttps://en.wikipedia.org/wiki/ReStructuredTexthttps://getbootstrap.com/https://bootswatch.com/https://bootswatch.com/cerulean/https://ryan-roemer.github.io/sphinx-bootstrap-theme/http://www.sphinx-doc.org/https://bitbucket.org/infuniri/restructuredhgwikihttps://bitbucket.org/infuniri/https://bitbucket.org/https://bitbucket.org/infuniri/restructuredhgwiki/issues/newhttps://bitbucket.org/infuniri/restructuredhgwiki/issues/new
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
2 Kolegiji
POGLAVLJE 1
Osnove informatike 1
1.1 Vježbe
1.1.1 Operacijski sustav Linux
Autor sekcije: Vedran Miletić, Vanja Slavuj
Povijesni pregled razvoja Unixa i operacijskih sustava sličnih Unixu
Počeci Unixa, BSD, Solaris
• Ken Thompson i Dennis Ritchie, AT&T Bell Labs
– započinju razvoj operacijskog sustava Multics 1960-tih godina
– videoigra Space Travel ima problema s performansama na tom OS-u
– motivirani time razvijaju Unics (izgovara se eunuchs, simbolizira kastrirani Multics) kao zamjenu zaMultics, cilj je da bude bitno jednostavniji te zbog toga boljih performansi
– Unics postaje Unix 1970-tih godina
• Unix se dijeli u dvije grane
– AT&T izdaje UNIX System III i UNIX System V 1980-tih godina
– nastaje Berkeley Software Distribution (BSD) kao modifikacija AT&T Unixa
• BSD Unix, krajem 1970-tih i tijekom 1980-tih godina
– začetnik je Bill Joy sa University of California, Berkeley
– brzo postaje popularan na sveučilištima i institutima, vrlo je važan za razvoj tehnologija na kojima sezasniva Internet
– verzije 1BSD, 2BSD, 3BSD, 4BSD, 4.1BSD, 4.2BSD, 4.3BSD, ...
• FreeBSD, nasljednik BSD Unixa, 1990-te
– A Narrative History of BSD, video u kojem Marshall Kirk McKusick priča o razvoju Unixa i Internetana Berkeleyu
3
https://vedran.miletic.net/https://en.wikipedia.org/wiki/Ken_Thompsonhttps://en.wikipedia.org/wiki/Dennis_Ritchiehttps://en.wikipedia.org/wiki/Bell_Labshttps://en.wikipedia.org/wiki/Multicshttps://en.wikipedia.org/wiki/Space_Travel_(video_game)https://en.wikipedia.org/wiki/Unixhttps://en.wikipedia.org/wiki/AT&Thttps://en.wikipedia.org/wiki/UNIX_System_IIIhttps://en.wikipedia.org/wiki/UNIX_System_Vhttps://en.wikipedia.org/wiki/Berkeley_Software_Distributionhttps://en.wikipedia.org/wiki/Bill_Joyhttp://www.berkeley.edu/https://en.wikipedia.org/wiki/Internethttps://en.wikipedia.org/wiki/FreeBSDhttps://youtu.be/ds77e3aO9nAhttps://en.wikipedia.org/wiki/Marshall_Kirk_McKusick
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
– BSD is Dying, Jason Dixon, NYCBSDCon 2007, šaljiv video na temu FreeBSD-a, parodija na “Net-craft now confirms: *BSD is dying, ima priču o povijesti Unixa od početka do doba FreeBSD-a
• Sun Microsystems, danas Oracle, takod̄er ima svoju verziju Unixa
– SunOS, tijekom 1980-tih i početka 1990-tih godina, zasnovan na BSD Unixu
– Solaris, od 1990-tih godina nadalje, zasnovan na već spomenutom AT&T UNIX System V Release 4
GNU i Linux, otvoreni kod
• Unix vs Unix-like
• GNU’s Not Unix (kraće GNU), započinje 1984., pokretač Richard Stallman
– projekt ima za cilj stvoriti slobodan operacijski sustav sličan Unixu
– ime dolazi od toga što GNU nije zasnovan na Unixu
• Linux, započinje 1991., autor Linus Torvalds
Hello everybody out there using minix -
I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for386(486) AT clones. (...)
PS. Yes – it’s free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses386 task switching etc), and it probably never will support anything other than AT-harddisks, asthat’s all I have :-(.
– Torvalds ipak nije razvio čitav operacijski sustav, već “samo” njegovu jezgru
– Debata Torvaldsa i Tanenbauma na temu arhitekture jezgre Linuxa i operacijskih sustava uopće, 1992.
– jezgra Linuxa je danas velik projekt, razvija ga 3700 ljudi (podatak iz 2013. godine), a razvoj i daljevodi Torvalds kao dobronamjerni diktator
• GNU/Linux – kombinacija Linux jezgre i GNU softvera, cjeloviti operacijski sustav sličan Unixu
– nazivlje Linux ili GNU/Linux – postoje zagovornici oba
– operacijski sustavi slični Unixu prilično su različiti od Windowsa, pa je to i Linux
* zbog tih razlika i brojnih mogućnosti koje nude ponekad su neprivlačni novim korisnicima
* zbog tih razlika i brojnih mogućnosti koje nude odlična su podloga za izučavanje značajki opera-cijskih sustava
• Program otvorenog koda
– nije isto što i besplatan program; izvorni kod programa dostupan je svakome tko ga želi preuzeti imijenjati
– programski kod napisan je u nekom od poznatih programskih jezika
– pojedinci nadopunjuju funkcionalnost i testiraju promjene
– svatko može pridonijeti – razvoj interneta je to omogućio (mailing liste, forumi, i sl.); volonteri iprofesionalci imaju jednaku priliku da sudjeluju u razvoju softvera
Linux distribucije danas
• Linux distribucija
– skupina programa koje su spojile grupe ljudi (najčešće iz idealističkih motiva) ili tvrtke (najčešće zbogprofita)
– uključuje sve komponente koje su potrebne da bi korisnik mogao koristiti operacijski sustav
4 Poglavlje 1. Osnove informatike 1
https://youtu.be/g7tvI6JCXD0https://everything2.com/title/BSD+is+dyinghttps://everything2.com/title/BSD+is+dyinghttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/SunOShttps://en.wikipedia.org/wiki/Solaris_(operating_system)https://en.wikipedia.org/wiki/UNIX_System_V#SVR4https://en.wikipedia.org/wiki/Unix-likehttps://en.wikipedia.org/wiki/GNUhttps://en.wikipedia.org/wiki/Richard_Stallmanhttps://en.wikipedia.org/wiki/Linuxhttps://en.wikipedia.org/wiki/Linus_Torvaldshttps://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debatehttps://www.kernel.org/https://youtu.be/abTSM8hvkb8?t=11m19shttps://en.wikipedia.org/wiki/GNU/Linux_naming_controversyhttp://linux.oneandoneis2.org/LNW.htmhttps://en.wikipedia.org/wiki/Open-source_softwarehttps://en.wikipedia.org/wiki/Linux_distribution
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
– najviše korištene distribucije se mijenjaju vremenom, nepreciznu statistku vodi DistroWatch Page HitRanking
– deset najpopularnijih distribucija s opisom: DistroWatch: Top Ten Distributions
• Neke od najvažnijih Linux distribucija:
– Ubuntu, započeo 2004.
* osnova joj je distribucija Debian GNU/Linux, čiji je razvoj započeo 1993.
* primarno namijenjena krajnim korisnicima, velik naglasak na uključivanje popularnih desktopaplikacija
* na njoj se zasniva Linux Mint
– Fedora, započela 2003.
* osnova joj je distribucija Red Hat Linux, čiji je rauzvoj započeo 1994. i čiji je nasljednik upravoFedora
* primarno namijenjena Linux entuzijastima, velik naglasak na slobodu softvera i nove značajke
* na njoj se zasnivaju Red Hat Enterprise Linux i CentOS
Ponovimo!
• Kada je započeo GNU projekt i koji je njegov cilj?
• Što je Linux, a što GNU/Linux?
• Što je program otvorenog koda?
• Navedite barem dvije poznate Linux distribucije.
Autor sekcije: Luka Vretenar
Osnove rada sa komandnom linijom
• Komandna linija (eng. command line interface, CLI) je način upravljanja računalom unosom tek-stualnih naredbi koje se predaju operacijskom sustavu za izvršavanje.
• Većina računalnih korisnika se susrela pretežito sa grafičkim sučeljima (eng. graphical userinterface, GUI), koja iako najpopularnija nisu i najrasprostranjenija.
• Upravljanje računala komandnom linijom pruža veliku fleksibilnost, posebice kada su u pitanju operacijenad tekstualnim podacima, no nedostatak je ograničenje samo na tekstualni unos.
• Operacijski sustavi GNU/Linux pružaju više grafičkih korisničkih sučelja, kao i više sučelja komandnelinije, no danas najrasprostranjenije sučelje za komandnu liniju je program bash.
Pristup komandnoj liniji
• Iako imamo mogućnost rada na sustavu koji je podignut isključivo u komandnu liniju, najlakši način da jojpristupimo je iz grafičkog sučelja pokretanjem emulatora komande linije (eng. terminal emulator).
• Emulator komandne linije možete pronaći instaliran med̄u ostalim aplikacijama na vašem sustavu.
• U slučaju računala koje imate na vježbama, emulator komandne linije se naziva Konsole.
Zadatak
• Pokrenite emulator komandne linije.
1.1. Vježbe 5
https://distrowatch.com/stats.php?section=popularityhttps://distrowatch.com/stats.php?section=popularityhttps://distrowatch.com/dwres.php?resource=majorhttps://www.ubuntu.com/desktop/featureshttps://www.debian.org/https://www.linuxmint.com/https://getfedora.org/https://en.wikipedia.org/wiki/Red_Hat_Linuxhttps://www.redhat.com/en/technologies/linux-platforms/enterprise-linuxhttps://centos.org/http://luka.vretenar.pro/
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• Pri pokretanju komandne linije dočekati će vas polje za unos (eng. prompt):
korisnik@racunalo:~$
• Polje za unos sadrži odred̄ene korisne informacije:
– ime trenutnog korisnika pod kojim smo logirani na sustav
– naziv računala na kojem smo logirani
– trenutnu putanju na direktorij u datotečnom sustavu u kojem se nalazimo
• Iza znaka $ možemo upisivati vlastite naredbe.
• Naredbe se izvršavaju u direktoriju u kojem se nalazimo u trenutku pokretanja te naredbe!
• Naredbe su oblika:
naredba -parametar argument1 argument2 ...
Savjet: Pri pisanju naziva naredbe, možemo na tipkovnici pritisnuti dva puta tipku da dobijemo popissvih naredbi koji započinju unesenim slovima.
• Svaka naredba može imati nijedan, jedan ili više parametara kao i nijedan, jedan ili više argumenata.
• Parametre prethodi simbol - i oni govore kako da se naredba ponaša.
• Svi argumenti iza naziva naredbe moraju biti odvojeni praznim znakom.
• Izvršavanje unesene naredbe izvodimo pritiskom tipke Enter.
Savjet: U slučaju da želimo prekinuti izvršavanje naredbe koja se odvija dugo ili se čini da se zamrznula, možemoto učiniti kombinacijom tipki + C.
Savjet: Za sve naredbe koje će biti spomenute može se pristupiti dokumentaciji u komandnoj liniji naredbomman dajući kao argument naziv aplikacije, iz dokumentacije izlazimo tipkom q.
Datotečni sustav
• Datotečni sustav možemo zamisliti kao stablo direktorija i datoteka koje se grana na svakom direktoriju.
• Linux, kao i ostali Unix sustavi koristi unificirani datotečni sustav:
– svi ured̄aji za pohranu se nalaze pod istim stablom direktorija
• Vrh stabla datotečnog sustava označavamo znakom / i nazivamo korjenom (eng. root).
/- bin- boot- dev- etc- home| - lukav| - Desktop| - Documents| - Downloads| - Music| - Pictures| - Public
6 Poglavlje 1. Osnove informatike 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
- lib- lib64..
• Put do pojedinih direktorija i datoteka u datotečnom sustavu može biti zadan:
– relativno, od direktorija u kojem se trenutno nalazimo
– apsolutno, cjela putanja do direktorija od korjena /
• U slučaju da zadajemo put relativno, od direktorija u kokjem se nalazimo, zapisujemo ga:
put/do/direktorija/put/do/datoteke
• Kada imamo apsolutni put od korjena /:
/apsolutni/put/do/direktorija//apsolutni/put/do/datoteke
• Putanje za direktorije i za datoteke se razlikuju po tome što putanja za direktorije završava znakom /.
• Znak / se pored označavanja korjena datotečnog sustava koristi i za odvajanje direktorija u putanji.
Savjet: Kod pisanja putanji u komandnoj liniji, možemo dva puta pritisnuti tipku na dipkovnici dadobijemo popis svih datoteka u putanji čije ime započinje unesenim znakovima.
• Pored navedenih putanji u datotečnom sustavu postoje dodatne specijalne putanje:
– .. – pokazuje na direktorij iznad onog u kojem se trenutno nalazimo
– . – pokazuje na trenutni direktorij u kojem se nalazimo
– ~ – pokazuje na home direktorij, to je direktorij u kojem se nalaze svi podaci trenutnog korisnikasustava
– / – korjen datotečnog sustava, u kojem se nalaze svi ostali direktoriji i datoteke
• Moguće je iz prikazanih specijalnih putanji i navedenih oblika putanji graditi kompleksne putanje spajanjemznakom /.
Savjet: Znak ~ se naziva tilda i možete je dobiti kombinacijom tipki + 1.
Savjet: Svaki korisnik na sustavu ima vlastiti home direktorij koji se nazali u /home/korisnik gdje jekorisnik naziv korisnika. Pojedini korisnik može upravljati datotekama samo u vlastitom home direktoriju.
Upravljanje direktorijima
Ispis trenutne pozicije – naredba pwd
Zadatak
• Ispišite putanju direktorija u kojem se trenutno nalazite uz pomoć naredbe pwd.
1.1. Vježbe 7
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Ispis sadržaja direktorija – naredba ls
• Naredbom ls možemo ispisati sadržaj direktorija u kojem se trenutno nalazimo.
• Naredbi možemo postaviti dodatne argumente koje mjenjanju njezino izvršavanje:
– argument -a prikazuje i sakrivene datoteke i direktorije
– argument -l prikazuje detalje za svaku datoteku i direktorij, detalji su prava pristupa, veličina i vri-jeme izmjene
– putanju do nekog direktorija, govori naredbi ls da nam da ispis sadržaja nekog drugog direktorija kojijoj specificiramo
lsls -als -lls -a -lls /apsolutna/putanja/ls relativno/
Zadatak
• Ispišite sadržaj trenutnog direktorija u kojem se nalazite.
• Ispišite sadržaj trenutnog direktorija uključujući i sakrivene datoteke.
• Ispišite sadržaj direktorija koji se nalazi iznad vašeg home (~) direktorija.
• Ispišite sadržaj korjena (/) datotečnog sustava.
Promjena pozicije u datotečnom sustavu – naredba cd
• Za promjenu trenutnog direktorija u kojem se nalazimo možemo koristiti naredbu cd.
• Naredba prima jedan argument koji je putanja u direktorij u koji želimo ući.
cd direktorijcd /putanja/cd ..cd ../..cd ~
• Argument može biti putanja zadana:
– relativno, od trenutnog direktorija
– apsolutno
Zadatak
• Postavite se u korjen datotečnog sustava.
• Postavite se u direktorij /usr/.
• Postavite se u direktorij /usr/local/ relativnom putanjom.
• Provjerite trenutnu lokaciju sa pwd.
• Za promjenu direktorija možete koristiti i specijalne putanje:
– .. da odemo u direktorij iznad
– ~ da odemo u naš home direktorij
8 Poglavlje 1. Osnove informatike 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Zadatak
• Postavite se u vlasiti home direktorij.
• Odite direktorij iznad onog u kojem se trenutno nalazite.
• Provjerite trenutnu lokaciju sa pwd.
Izrada novog direktorija – naredba mkdir
• Naredba mkdir prima jedan argument, naziv direktorija kojeg želimo kreirati.
• Putanja do direktorija može biti zadana relativno i apsolutno.
mkdir novidirektorijmkdir novidirektorij/drugidirektorijmkdir /apsolutno/novidirektorij
• Ukoliko se samo zada naziv direktorija, izraditi ćemo ga gdje se trenutno nalazimo u datotečnom sustavu.
Zadatak
• Pozicionirajte se u vaš home direktorij.
• Izradite direktorij oi1.
• U direktoriju oi1 izradite dva direktorija: vjezbe i predavanja.
• Ispišite sadržaj direktorija oi1.
Brisanje postojećeg direktorija – naredba rmdir
• Naredbom rmdir brišemo pojedini direktorij iz datotečnog sustava, naziv direktorija zadajemo argumen-tom.
rmdir direktorijrmdir putanja/direktorij
• Važno je da je direktorij kojeg brišemo prazan, inače ga ne možemo obrisati naredbom rmdir!
Zadatak
• Pobrišite sve direktorije iz prethodnog zadatka.
• Naredbom ls provjerite da su svi pobrisani.
Upravljanje datotekama
Brisanje datoteka – naredba rm
• Datoteke možemo izbrisati naredbom rm, na način da naziv datoteke ili putanju do nje specificiramo kaoargument naredbi.
rm datotekarm /put/do/datoteka
1.1. Vježbe 9
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• U većini slučajeva nepovratno briše zadanu datoteku!
Zadatak
• Prepisati i izvršiti naredbu touch prazna.txt u trenutnom direktoriju.
• Provjeriti postojanje datoteke prazna.txt naredbom ls.
• Pobrisati datoteku.
Kopiranje datoteka – naredba cp
• Datoteke kopiramo naredbom cp, potrebna su dva argumenta:
– izvor
– destinacija
• Kao drugi argument možemo zadati i put do direktorija, u tom slučaju kopiramo datoteku pod istim imenomu taj direktorij.
cp izvor destinacijacp /put/do/izvor /put/do/destinacije/
Zadatak
• Kreirati praznu datoteku naredbom touch prazna.txt u trenutnom direktoriju.
• Kopirati tu datoteku u isti direktorij pod nazivom kopija.txt.
• Napraviti novi direktorij pohrana i iskopirati prazna.txt u njega.
Pomicanje datoteka, – naredba mv
• Naredba mv nam služi za pomicanje datoteke izmed̄u direktorija, i kao cp prima dva argumenta.
mv izvor destinacijamv /put/do/izvor /put/do/destinacije/
• Naredbu mv koristimo i za preimenovanje datoteke ako radimo pomicanje u istom direktoriju pod drugoime.
Zadatak
• Kreirati praznu datoteku naredbom touch prva.txt u trenutnom direktoriju.
• Preimenovati ju u druga.txt.
• Premjestiti druga.txt u direktorij pohrana iz prethodnog zadatka.
Autor sekcije: Luka Vretenar
Pretraživanje, prava pristupa, rad sa tekstom
Pretraživanje datoteka i direktorija
10 Poglavlje 1. Osnove informatike 1
http://luka.vretenar.pro/
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Filtriranje naziva datoteka po obrascima
• Komandna linija bash koju koristimo omogućuje nam zadavanje naziva datoteka ili direktorija preko odre-d̄enih uzoraka.
• Na taj način možemo obuhvatiti više datoteka ili direkotirja odjednom.
• Ta funkcionalnost bash komandne linije se naziva glob expansion.
• Primjer:
– brišemo više datoteka koje završavaju na .txt
– ispisujemo sadržaj direktorija filtrirajući samo datoteke koje završavaju na .txt
ls *.txtrm *.txt
• Takvi uzorci se nazivaju globs i sastoje se od teksta po kojem filtriramo i simbola:
– * – zamjenjuje nam više znakova u nazivu
– ? – zamjenjuje nam jedan znak u nazivu
Zadatak
• Ispišite sadržaj direktorija /usr/bin/ filtrirajući samo datoteke čiji naziv započinje znakom b.
Pretraživanje datoteka u datotečnom sustavu
• Datotečni sustav možemo pretraživati naredbom find.
• Naredba pretražuje počevši od zadanog direktorija, sve direktorije ispod njega u potrazi za danim nazivomdatoteke.
• Mogu se koristiti uzorci za pretragu.
• U najjednostavnijem obliku, pretražujemo po nazivu datoteke naziv u nekom direktoriju direktorij(-name je dio naredbe):
find direktorij -name naziv
• Postoje različiti argumenti sa kojima možemo specificirati pretragu po veličini datoteke, vremenu izmjeneitd. Za opise pojedinih argumenata konzultirati dokumentaciju naredbe.
Zadatak
• Potražiti u direktoriju /usr/share/ sve datoteke naziva index.html.
Prava pristupa datotekama i upravljanje pravima
Način rada prava pristupa
• Operacijski sustav Linux nam omogućuje upravljanje vlasništvom i pravima pristupa datotekama i direkto-rijima pojedinim korisnicima.
• Za provjeru vlasništva i prava nad pojedinom datotekom možemo iskoristiti naredbu ls -l.
• Primjer dobivenog izlaza:
1.1. Vježbe 11
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
drwxr-xr-x 2 lukav lukav 4096 Nov 9 22:38 direktorij-rw-r--r-- 1 lukav lukav 74 Nov 9 22:38 primjer.txt
• Od značaja su nam vrijednosti prvog, trećeg i petog stupca:
– -rw-r--r-- je niz znakova koji nam definira prava pristupa
– lukav je korisnik koji je vlasnik prikazane datoteke
– lukav koji se pojavljuje drugi put, je naziv grupe korisnika
– 74 je veličina datoteke u bajtovima
Savjet: Linux je višekorisnički sustav te omogućuje upravljanje vlasništvom datoteka za svakog korisnika,pored korisnika postoje i grupe korisnika koje takod̄er mogu biti vlasnici datoteka.
• Niz koji definira prava pristupa možemo dalje podijeliti na četri segmenata:
d rwx rwx rwx
• Niz prava pristupa se sastoji od četri segmenata:
– prvi segment je samo jedan znak i može biti - ili d, u slučaju da je d specificira nam da se radi odirektoriju
– drugi segment sadrži tri znaka rwx ili - na mjestu bilo kojeg znaka, specificira nam pravo pristupavlasnika datoteke
– treći segment je sličan drugom, specificira pravo pristupa grupi korisnika koja posjeduje datoteku
– četvrti segment je isto sličan drugom, specificira pravo pristupa svih ostalih korisnika na sustavu
• Znakovi rwx imaju slijedeće značenje:
– r – mogućnost čitanja iz datoteke ili direktorija
– w – mogućnost pisanja u datoteku ili direktorij
– x – mogućnost pokretanja datoteke kao aplikaciju ili mogućnost ulaska u direktorij
• Svaki znak može biti zamjenjen sa -, u tom slučaju to pravo je onemogućeno na toj datoteci.
Zadatak
• Koja su prava pristupa definirana i za koga za datoteku primjer.txt prikazanu u tekstu?
Izmjena prava pristupa – naredba chmod
• Ako smo vlasnik datoteke ili direktorija, možemo izmjeniti prava pristupa koristeći naredbu chmod.
• Naredba chmod prima dva argumenta:
– modifikato kojim zadajemo koje pravo želimo izmjeniti
– naziv datoteke ili direktorija čije pravo pristupa izmjenjujemo
chmod XYZ datoteka
• Modifikator XYZ se sastoji od tri dijela:
– X – specifikacija segmenta koji mjenjamo, u za vlasnika, g za grupu koja posjeduje datoteku, o zaostale korisnike, a za sva prava
– Y – operaciju izmjene, + za dodavanje prava, - za uklanjanje prava
12 Poglavlje 1. Osnove informatike 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
– Z – pravo pristupa koje izmjenjujemo, r, w ili x
chmod o-r primjer.txt
Zadatak
• U komandnoj liniji izvršiti naredbu touch prazna.txt, koja kreira datoteku prazna.txt.
• Provjeriti koja prava pristupa ima nova datoteka.
• Dati svim ostalim korisnicima pravo čitanja iz datoteke.
• Ukloniti pravo pisanja u datoteku grupi korisnika koja je vezana na datoteku.
Rad sa tekstualnim datotekama
Editor teksta nano
• Na svim Linux sustavima u komandnoj liniji dolazi editor teksta nano.
• Pokrećemo izmjenu ili izradu nove datoteke pozivom alata nano na slijedeći način:
nano datoteka.txt
• Nakon što smo završili unos ili izmjenu, datoteku možemo spremiti kombinacijom tipki + x tepratiti upite na dnu ekrana.
• Sve naredbe editora su navedene na dnu ekrana.
Naredbe za pregled sadržaja
• Pregled sadržaja tekstualne datoteke naredbom less:
– kao argument prima naziv tekstualne datoteke
– sa tipkom ili tipkama gore i dolje prolazimo kroz datoteku
– sa tipkom q izlazimo iz prikaza
• Pregled prvih n linija u tekstualnoj datoteci sa head:
– kao argument prima naziv tekstualne datoteke
– ispisuje prvih 10 linija sa vrha tekstualne datoteke
– kao parametar -n se može zadati da ispisuje n brojeva linija
head datoteka.txthead -2 datoteka.txt
• Pregled n linija sa kraja tekstualne datoteke sa tail:
– isto kao head samo ispisuje linije sa kraja datoteke
• Brojanje riječi i linija u tekstualnoj datoteci sa wc:
– prima naziv datoteke kao argument
– ispisuje tri broja: broj linija, broj riječi i broj znakova u datoteci
• Sortiranje linija u datoteci naredbom sort:
– prima naziv datoteke kao argument
– ispisuje sve linije iz izvorne datoteke sortirane po abecednom redu
1.1. Vježbe 13
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• Konkatenacija i ispisivanje datoteka sa cat:
– prima nijedan, jedan ili više naziva datoteka kao argumente
– ispisuje datoteke zadanim redoslijedom u komandnu liniju
– u slučaju da se pokrene bez argumenta, samo ponavlja unešeni tekst, unos se prekida sa +d
Zadatak
• Naredbom less pregledati sadržaj datoteke iz prethodnog zadatka.
• Naredbom tail ispisati zadnje tri linije iz iste datoteke.
• Ispisati sve sortirane linije iz datoteke.
• Ispisati sadržaj cijele datoteke u terminalu.
Pretraga sadržaja datoteka sa grep
• Naredba grep nam omogućuje pretragu sadržaja neke datoteke po zadanom uzorku.
• Prima dva argumenta:
– niz koji pretražujemo, ograd̄en navodnicima ""
– datoteku koju pretražujemo
grep "izraz" datoteka.txt
• Pretraga je osjetljiva na mala i velika slova, u slučaju da želimo zanemariti veličinu slova potrebno je kaoargument dodati -i.
Zadatak
• U datoteci iz koju smo kreirali sa nano pretražiti jednu od riječi ignorirajući velika i mala slova.
Preusmjeravanje izlaza naredbi
• Komandna linija bash omogućuje preusmjeravanje izlaza pojedinih naredbi u datoteke ili u druge naredbe.
• Na taj način je moguće zapisati izlaz koji dobijemo ispisan na ekranu u neku datoteku ili nizati više naredbiza redom.
• Operacije preusmjeravanja su:
– > datoteka, zapisuje izlaz naredbe u datoteku
– >> datoteka, doda izlaz naredbe na kraj već postojeće datoteke
– < datoteka, naredbi na ulaz daj sadržaj datoteke
– |, preusmjeri izlaz jedne naredbe na ulaz druge
sort datoteka.txt | head -2cat dat1.txt dat2.txt > out.txt
Zadatak
• U datoteku dupla.txt nadodati preusmjeravanjem sadržaj konkatenacije datoteke iz nano zadatka samesa sobom.
14 Poglavlje 1. Osnove informatike 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• Iskoristite naredbu cat za izradu datoteke, izlaz naredbe preusmjerite u datoteku izlaz.txt. (Unosprekidate tipkama + d na praznoj liniji)
1.1.2 Regularni izrazi i Perl
Autor sekcije: Luka Vretenar
Regularni izrazi i konačni automati
Regularni izrazi
• Nizovi znakova sa posebnim značenjem koji nam služe za pretragu i opisivanje nekog ulaznog niza znakova.
• Način specificiranja konačnog automata koji procesira zadani ulazni niz znakova.
• Imaju podršku u većini programskih jezika i alata koji se danas koriste.
• Najčešće nam služe za:
– opisivanje uzoraka u tekstu i pretragu teksta
– izmjenu i manipulaciju opisanih uzoraka u tekstu
• Neke od primjena regularnih izraza:
– sustavi za bojanje sintakse (syntax highlighting)
– srovjera validnosti podataka kod korisničkog unosa (form validation, text validation)
– eskstrakcija pojedinih elemenata iz formatiranog niza
• Primjer regularnog izraza koji opisuje sve prirodne brojeve u nekom tekstu: [1-9][0-9]*.
• Kako bi nam olakšali izradu i testiranje regularnih izraza postoje razni pomoćni web alati:
– regex101
– RegExr
– regexpal
– Regex Crossword
• U ovim vježbama se koriste prošireni regularni izrazi ili ERE.
Uzorci teksta i ostali znakovi
• Uzorak koji odgovara odred̄enom nizu znakova možemo specificirati kao točno taj niz znakova.
• Ako pretražujemo tekst za niz Dobar dan, uzorak za traženje tog niza bi bio Dobar dan.
Savjet: Važno je paziti na mala i velika slova u uzorcima jer su regularni izrazi osjetljivi na veličinu slova.
• Ako želimo zadati uzorak koji na odred̄enom mjestu ima bilo koji znak, onda možemo koristiti specijalniznak ..
• Primjer takvog uzorka je d..r, nizovi koji tom uzorku odgovaraju mogu biti:
– daar
– dabr
– dacr
1.1. Vježbe 15
http://luka.vretenar.pro/http://regex101.com/http://www.regexr.com/http://regexpal.com/http://regexcrossword.com/
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
– i tako dalje za sve kombinacije dva znaka na mjestima gdje je .
Zadatak
• Zadan je tekst na dnu poglavlja.
• Regularnim izrazom označiti sva pojavljivanja riječi Perl.
• Regularnim izrazom označiti pojavljivanje sve riječi koje počinju sa izraz a završavaju bilo kojim slovom.
• Odred̄eni znakovi u regularnim izrazima imaju posebno značenje, da bi ih koristili u uzorku kao znakovekoje zapravo predstavljaju, potrebno ih je označiti znakom \ ispred samog znaka.
• Ti znakovi su:
– \ i /
– ^ i $
– .
– |
– ?
– * i +
– ( i )
– [ i ]
– {
• Primjer je traženje izraza $20, kako sadrži jedan od posebnih znakova potrebno je napraviti regularni izraz\$20 da bi ga mogli tražiti.
• Specijalni znakovi koji predstavljanju neki element niza su:
– . – bilo koji znak
– ^ – označava početak linije
– $ – označava kraj linije
– \b – označava početak ili kraj riječi (gdje je riječ odvojena razmacima)
Zadatak
• Regularnim izrazom označiti izraz (automate) uključujući i zagrade.
• Regularnim izrazom označiti izraz Perl koji se nalazi na početku linije.
Višestruki izbor i grupiranje
• Moguće je pretraživati izraze koji mogu biti sastavljeni od jednog ili više različitih podnizova.
• Da bi specificirali pretragu po jednom i drugom nizu koristimo simbol | kojem ih odvajamo.
• Regularni izraz jedan|dva će nam pronaći nizove jedan i dva.
Zadatak
• Regularnim izrazom označiti sve nizove reg i izraz u zadanom tekstu.
• Ako želimo specificiratid da su pojedini podnizovi djelovi većeg niza koji tražimo, možemo grupirati poje-dine višestruke izbore u odvojene grupe koristeći ( i ).
16 Poglavlje 1. Osnove informatike 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• Regularni izraz gr(a|e)y će nam pronaći nizove gray i grey.
Zadatak
• Regularnim izrazom označiti sve nizove ama i aka grupirajući po slovu m ili k u zadanom tekstu.
Klase znakova
• Već smo vidjeli da sa . možemo specificirati da želimo bilo koji znak na odred̄enom mjestu, no ako želimoda bude samo jedan od definiranih znakova možežmo koristiti klase znakova.
• Klasa znakova se definira unutar [ i ], primjer [abcd] i [0-9].
• Klasom znakova definiramo da odred̄eni znak u nizu možež biti jedan od znakova u toj klasi.
• Regularni izraz [Dd]obar dan će nam pronaći nizove Dobar dan i dobar dan.
Zadatak
• Pronaći sva velika slova u zadanom tekstu.
• Pronaći sva velika slova i znamenke 0 i 1.
• Pronaći sve brojeve duljine 4 u tekstu, pronad̄eni niz ne smije biti sastavljen ododvojenih znakova.
• U klasama možemo definirati i raspone znakova koristeći - da odvojimo početni i krajnji znak u rasponu.
• Klasu [abcdefghijklmnoprsquvwxz] koja nam predstavlja sva mala slova, možemo zapisatiti i kao[a-z].
• Ako želimo obrnuti znakove koje predstavlja klasa, koristimo znak ^ na početku klase.
• Regularni izraz [^0-9] će nam pronaći sve znakove koji nisu znamenke 0123456789.
Zadatak
• Pronaći sve znamenke koji nisu 0.
• Pronaći sva slova koja nisu u rasponu od a do j i koja nisu znakovi ( i ).
Ponavljanja izraza
• Ako želimo da se odred̄eni znak, klasa znakova ili grupa znakova ponavlja nula, jednom ili više puta,možemo koristiti modifikatore ponavljanja.
• Modifikatori ponavljanja su ?, + i * i nalaze se nakon znaka, klase ili grupe čije ponavljanje odred̄uju.
• Značenja pojedinih modifikatora su:
– ? – znak koji prethodi se može pojaviti jednom ili nijednom
– + – znak koji prethodi se može pojaviti jednom ili više puta
– * – znak koji prethodi se može pojaviti nijednom ili više puta
• Regularni izraz [a-z]* će nam pronaći sve nizove koji sadrže samo mala slova: a, aa, ab, asdf...
• Regularni izraz abc? će pronaći nizove ab i abc.
Zadatak
• Pronaći sve brojeve duljine jedan ili više koristeći klasu i ponavljanja.
1.1. Vježbe 17
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• Pronaći sve nizove velikih slova koristeći klasu i ponavljanja.
• Pronaći sve riječi koji započinju velikim slovom i završavaju malim slovima.
• Ponavljanja takod̄er možemo specificirati i brojčanim vrijednostima m i n u modifikatoru oblika {m,n}gdje su:
– {0,1} – ekvivalentno ?
– {1,} – ekvivalentno +
– {0,} – ekvivalentno *– {m,n} – znak, klasa ili grupa se ponavlja najmanje m a najviše n puta
Zadatak
• Pronad̄i sve riječi koji su duljine veće od 8 znakova.
Primjena u alatu grep
• Na svim Linux sustavima postoji alat koji nam omogućuje pretragu teksta koristeći regularne izraze.
• Alat grep podržava proširene regularne izraze i možemo ga pozvati slijedećom naredbom:
egrep "regex" datoteka
• Gdje je regex regularni izraz koji pretražujemo a datoteka naziv daoteke u kojoj pretražujemo.
• Izlaz iz programa su sve linije koje sadrže tražene izraze.
Zadatak
• Koristeći alat egrep pretraživati datoteku /etc/passwd iz komandne linije.
• Pronaći sve linije koje imaju izraze /var ili /bin.
• Pronaći sve linije koje počinju sa nizom slova duljim od 4.
• Pronaći sve linije koje završavaju na bash.
• Pronaći sve linije dulje od 50 znakova.
• Pronaći sve brojeve koji započinju sa znamenkom 1.
Tekst za vježbe
Porijeklo regularnih izraza leži u teoriji automata i teoriji formalnih→˓jezika, pri čemu su oboje discipline teoretskog računarstva.Ove discipline proučavaju modele računanja (automate) te načine opisa i→˓klasifikacije formalnih jezika.Matematičar Stephen Kleene je 1950-ih opisao ove modele koristeći→˓matematičku notaciju zvanu regularni skupovi.Ken Thompson je ugradio ovu notaciju u ured̄ivač QED, a potom i u Unix→˓editor ed, što je s vremenom dovelo do uporabe regularnih izraza u grep-→˓u.Otad se regularni izrazi naširoko koriste u Unixu i Unixoidnim pomoćnim→˓programima kao što su expr, awk, Emacs, vi, lex i Perl.
Perl i Tcl regularni izrazi su izvedeni iz regex biblioteke koju je→˓napisao Henry Spencer, iako je Perl kasnije proširio Spencerovu regex→˓biblioteku i dodao mnogo novih svojstava.
18 Poglavlje 1. Osnove informatike 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Philip Hazel je razvio PCRE (Perl Compatible Regular Expressions) koji→˓jako dobro oponaša funkcionalnost regularnih izraza u Perlu, i kojeg→˓koriste mnogi moderni programski alati kao što su PHP, ColdFusion, i→˓Apache.Dio napora uloženog u dizajn Perla 6 je baš u smjeru poboljšanja→˓integracije Perlovih regularnih izraza, te povećanju njihovog područja→˓djelovanja u svrhu dozvole definicije tzv. 'parsing expression grammar'.Rezultat je mini-jezik zvan Perl 6 pravila, koja se koriste kako za→˓definiciju gramatike Perla 6 tako i kao alat Perl programerima.Ova pravila čuvaju sva svojstva regularnih izraza, ali i dozvoljavaju→˓definicije u BNF stilu parsera tehnikom rekurzivnog spusta preko→˓potpravila.
Korištenje regularnih izraza u strukturiranim informacijskim standardima→˓(za modeliranje dokumenata i baza podataka) se pokazalo vrlo važnim,→˓počevši od 1960-ih te se proširujući 1980-ih konsolidacijom→˓industrijskih standarda kao što je ISO SGML.Jezgra standarda jezika specifikacije strukture su regularni izrazi.Jednostavnija i evidentnija uporaba jest u groupnoj sintaksi DTD-a.
Izvor: Wikipedia
Konačni automati
• Regularni izraz zadan nizom specijalnih znakova se prije korištenja u računalu pretvori u konačni automat.
• Optimalan alat za izvršavanje regularnog izraza.
• Mogu opisivati i mnoge druge pojave vezane za svijet oko nas.
S1
1
S200
1
• Čitanjem odred̄enog ulaznog znaka, konačni automat prelazi u novo stanje i generira neki izlazni znak.
• Odred̄eni konačni automat definiran je:
– stupom stanja u kojima se taj automat može nalaziti
– skupom ulaznih znakova koje taj automat može pročitati sa ulaza
– skupom prijelaza koji definiraju kako automat prelazi u nova stanja
Deterministički konačni automati
• Najjednostavniji oblik konačnog automata.
• Determinizam konačnog automata nam govori da za pojedini ulaz i odred̄eno stanje postoji samo jedno novostanje u koji taj automat može preći.
1.1. Vježbe 19
https://hr.wikipedia.org/wiki/Regularni_izraz
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• Konačni automat možemo specificirati:
– matematičkom definicijom
– tablicom prijelaza
– grafičkim prikazom
• Matematički, konačni automat možemo specificirati parom skupova: 𝐴 = (𝑄,Σ,∆, 𝑞0, 𝐹 )
– 𝑄 – skup svih stanja u kojima može biti automat
– Σ – skup svih ulaznih znakova koje automat može pročitati
– ∆ – skup svih funkcija prijelaza, funkcije su oblika 𝛿(𝑞, 𝜎) = 𝑞
– 𝑞0 – početno stanje u kojem se nalazi automat prije čitanja znakova
– 𝐹 – skup svih prihvatljivih stanja, stanja u kojima prihvaćamo pročitani niz kao ispravan
Zadatak
• Za konačni automat zadan matematičkom definicijom napraviti tablicu prijelaza i grafički prikaz:
𝑄 = {𝑆,𝐴}; Σ = {𝑎, 𝑏}; 𝑞0 = 𝑆;𝐹 = {𝐴}; 𝛿0(𝑆, 𝑎) = 𝐴; 𝛿1(𝑆, 𝑏) = 𝐴; 𝛿2(𝐴, 𝑎) = 𝑆; 𝛿3(𝐴, 𝑏) = 𝐴
• Za isti atuomat provjeriti da li prihvaća ulazni niz znakova baab.
• Iz zadane matematičke definicije konstruiramo tablicu prijelaza:
a b> S A A 0
A S A 1
• Grafički prikaz istog automata:
S Aa, ba
b
• Provjera da li konačni automat prihvaća zadani niz baab se vrši postupkom:
𝑆𝑏−→ 𝐴 𝑎−→ 𝑆 𝑎−→ 𝐴 𝑏−→ 𝐴
• Niz je ispravan i prihvaća se jer je završno stanje 𝐴 u skupu prihvatljivih stanja 𝐹 .
Zadatak
• Za konačni automat zadan matematičkom definicijom napraviti tablicu prijelaza i grafički prikaz:
𝑄 = {𝑝𝑝, 𝑛𝑝, 𝑝𝑛, 𝑛𝑛}; Σ = {0, 1}; 𝑞0 = 𝑝𝑝;𝐹 = {𝑝𝑝, 𝑛𝑛}𝛿0(𝑝𝑝, 1) = 𝑝𝑛; 𝛿1(𝑝𝑝, 0) = 𝑛𝑝; 𝛿2(𝑝𝑛, 1) = 𝑝𝑝; 𝛿3(𝑝𝑛, 0) = 𝑛𝑛; 𝛿4(𝑛𝑝, 1) = 𝑛𝑛; 𝛿5(𝑛𝑝, 0) = 𝑝𝑝; 𝛿6(𝑛𝑛, 1) = 𝑛𝑝; 𝛿7(𝑛𝑛, 0) = 𝑝𝑛
• Za isti atuomat provjeriti da li prihvaća ulazni niz znakova 10110.
20 Poglavlje 1. Osnove informatike 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Autor sekcije: Luka Vretenar
Skriptiranje u Perl-u
• Interpretirani skriptni programski jezik osnovne namjene za obradu teksta.
• perl interpreter je besplatan i slobodno dostupan sa adrese perl.org.
• perl interpreter dolazi preinstaliran na gotovo svim unix sustavima, uključujući i linux.
• Više informacija o perl jeziku i o njegovoj povjesti na Wikipediji.
• Danas većinom na putu u zaborav, nekada je pogonio većinu skripti za generiranje sadržaja dostupnog nainternetu (cgi scripts).
• Na modernim sustavima u potpunosti zamjenjen dinamičkim interpretiranim jezicima kao što su python iruby.
Pokretanje perl aplikacija
• Skripte za izvršavanje perl koda pišemo u običnim tekstualnim datotekama.
• Za pisanje skripti možemo koristiti klasične tekstualne editore ili neki IDE (Integrateddevelopement environment).
• Programske skripte moraju započeti sa posebnom linijom koja definira da želimo skriptu izvršiti kao perlprogram:
#!/usr/bin/perl
• Perl skriptu možemo pokrenuti na dva načina, ako pretpostavimo da se naša skripta naziva skripta.pl:
– pokretanje direktnim pozivanjem perl interpretera:
perl skripta.pl
– dodjeljivanjem prava za pokretanje skripti te pokretanje skripte kao zasebnu aplikaciju na Linux-u:
# prvo datoteci dodijelimo prava pokretanjachmod u+x skripta.pl
# pokrenemo skriptu./skripta.pl
Savjet: Znak # na početku linije nam ujedno označava i komentar u kodu. Linije koje započinju tim znakom ćebiti ignorirane od strane perl interpretera pri izvršavanju skripte.
Zadatak
• Napravite novu skriptu naziva prva.pl i u nju zapišite:
#!/usr/bin/perlprint("Hello world!\n");
• Postavite skripti prava pokretanja i pokrenite ju u komandnoj liniji.
1.1. Vježbe 21
http://luka.vretenar.pro/https://www.perl.org/https://hr.wikipedia.org/wiki/Perl
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Osnove sintakse
• Svaka linija koda u perl skripti, koja nije komentar ili početak logičkog grananja, mora završavati znakom;!
Varijable i vrijednosti
• Varijable su simboli kojima imenujemo odred̄ene vrijednosti u memoriji računala.
• U perl-u sve varijable počinju znakom $ nakon čega slijedi ime varijable.
• Pri odabiru imena pojedine varijable potrebno je paziti da se zadovolje slijedeći uvjeti:
– naziv varijable mora započeti znakom $
– nakon znaka za varijablu slijedi najmanje jedno slovo iz abecede
– može slijediti kombinacija bilo kojeg broja slova, znamenki brojeva i znakova _.
• Primjer ispravnih naziva varijabli:
$x$var$my_variable$var2
• Primjer neispravnih naziva varijabli:
$47x$_var$variable!$new.var
• Nazivi varijabli su osjetljivi na velika i mala slova, $Var nije isto što i $var.
• Vrijednosti varijablama pridružujemo korištenjem znaka =, primjeri:
$var = 42;$ime = "Lucija";$a = $b;
• Prije korištenja odred̄ene varijable u skripti, potrebno ju je definirati tako da joj pridružimo neku početnuvrijednost.
• Nije potrebno specificirati vrste podataka u varijablama pri definiciji, perl interpreter sam prepoznaje vrstupodataka.
• Vrijednosti koje dodijeljujemo varijabljama u perl skriptama su najčešće:
– nizovi znakova, ograd̄eni navodnicima – "Hello world!"
– brojčane vrijednosti – 42, 3.14
Operacije sa varijablama
• Nad vrijednostima varijabli možemo izvoditi numeričke i logičke operacije.
• Numeričke operacije su primjenjive na varijablama koje sadrže brojeve i vraćaju nam novu numeričkuvrijednost:
– + – zbrajanje
– - – oduzimanje
– * – množenje
22 Poglavlje 1. Osnove informatike 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
– / – dijeljenje
• Logičke operacije primjenjujemo kada želimo usporediti vrijednosti dvaju varijabli i vraćaju nam logičkeizraze točno ili netočno:
– == – logička usporedba jednakosti
– != – provjera nejednakosti
– – manje od, veće od
– = – manje ili jednako od, veće ili jednako od
– &&, || – logičko I, logičko ILI
• Logičku vrijednost točno nam predstavlja broj 1 a netočno broj 0.
• Ako želimo koristiti vrijednost pojedine varijable u izrazu, zapišemo njezino puno ime:
$c = $a + $b;$tekst = "Pozdrav $ime $prezime !";
• Na isti način možemo koristiti vrijednosti varijabli u nizovima znakova: zapisom punog imena varijablegdje želimo njezinu vrijednost.
Čitanje i pisanje u komandnu liniju
• Čitanje linija teksta iz komandne linije u naš perl program se izvodi preko specijalne varijable .
• Mjesto u skripti na kojem se nalazi simbol će biti tijekom izvršavanja skripte zamijenjeno jednompročitanom linijom sa ulaza programa.
• Ispis vrijednosti jedne ili više varijabli nazad u komandnu liniju vršimo naredbom print() kojoj u zagra-dama dajemo vrijednost za ispis.
• Ulaz i izlaz u program su nam najčešće komandna linija u kojoj smo pokrenuli program.
• Primjer čitanja jedne linije i njen ispis u komandnu liniju:
$linija = ;print($linija);
• Kada čitamo neki broj ili niz znakova iz jednog reda potrebno je prvo pročitanu liniju pročistiti od znaka zakraj linije sa chomp() naredbom:
$broj = ;chomp($broj);$dvostruko = $broj * 2;print("dvostruka vrijednost unesenog broja je ", $dvostruko);
Primjer
• Program za pretvaranje metara u kilometre i obrnuto:
#!/usr/bin/perlprint("Unesite vrijednost udaljenosti za pretvoriti: ");$udaljenost = ;chomp($udaljenost);
$metri = $udaljenost * 1000;$kilometri = $udaljenost / 1000;
print("$udaljenost kilometara = $metri metara\n");print("$udaljenost metara = $kilometri kilometara\n");
1.1. Vježbe 23
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Zadatak
• Napiši skriptu koja učitava dva broja, zbroji ih i ispiše rezultat.
Logička grananja
Grananja if, if-else
• Logička grananja koristimo da bi izvršili odred̄eni dio koda samo kada vrijedi odred̄eni logički izraz.
• Grananja se sastoje od jednog ili više logičkih izraza i od jednog ili više blokova koda koji izvršavamo.
• Blokovi koda u grananja su grupirani izmed̄u znakova { i }.
• Najjednostavnije logičko grananje nam je if:
if (uvjet){
naredbe;}
• Grananje možemo proširiti i na slučaj da se ne ispuni uvjet na else i na provjeru više uvjeta:
if (uvjet){
naredbe;}else{
naredbe;}
if (uvjet1){
naredbe;}elsif (uvjet2){
naredbe;}else{
naredbe;}
• Provjere elsif možemo ponavljati više puta u istom logičkom grananju.
• Uvjet se sastoji od logičkog izraza koji može imati jednu ili dvije varijable i neki od logičkih operacijaizmed̄u njih.
• Najčešće provjeravamu jednakost vrijednosti dvije varijable logičkim izrazom za jednakost ==.
Primjer
• Primjer provjere jednakosti unesenih brojeva.
24 Poglavlje 1. Osnove informatike 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
#!/usr/bin/perlprint("Unesite broj: ");$broj1 = ;chomp($broj1);
print("Unesite drugi broj: ");$broj2 = ;chomp($broj2);
if ($broj1 == $broj2){
print("Uneseni brojevi su jednaki.\n");}else{
print("Uneseni brojevi nisu jednaki.\n");}
Petlje while, until
• U slučaju da odred̄ene naredbe želimo ponavljati sve dok je odred̄eni uvijet zadovoljen koristimo petljewhile i until.
• Petlja while se sastoji od uvijeta i bloka naredbi koje ponavljamo. Sve dok je uvijet zadovoljen ponavljase izvršavanje tih naredbi:
while (uvjet) {naredbe;
}
• Petlja until se razlikuje od petlje while po tome što je logika uvjeta obrnuta, izvršavanje naredbi seponavlja sve dok nije zadovoljen zadani uvjet:
until (uvjet) {naredbe;
}
Primjer
• Odbrojavanje do nule:
#!/usr/bin/perl$brojac = 10;while ($brojac >= 0){
print($brojac, "\n");$brojac = $brojac - 1;
}
• Čitanje ulaza dok nije pročitan ispravan broj:
#!/usr/bin/perlprint("Koliko iznosi 17 plus 26? ");$broj = ;chomp($broj);
while ($broj != 43){
print("Krivo! Pokušaj ponovo: ");
1.1. Vježbe 25
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
$broj = ;chomp($broj);
}print("Točno!\n");
Zadatak
• Napiši program koji koristi until petlju za ispis prvih 10 brojeva silazno (10-1).
Zadatak
• Napiši program koji koristi while petlju za ispis prvih 10 brojeva uzlazno (1-10).
Regularni izrazi
• Najvažnija funkcionalnost jezika perl.
• Regularni izrazi se zadaju kao vrijednosti ograd̄ene sa dvije kose crte / i /:
/[0-9]+//xy+//$var/
• Primjena zadanog regularnog izraza nad nekom varijablom koja sadrži niz znakova se vrši specijalnimoperaterom =~:
$tekst =~ s/123/abc/;$uvjet = $ime =~ /luka/i;
• Unutar ograda regularnog izraza / i / mogu se nalaziti i nazivi varijabla čije vrijednosti želimo koristiti uregularnom izrazu.
Pažnja!
• Operater =~ se može promijeniti vrijednost varijable nad kojom se primjenjuje. U slučaju pretrage nizaregularnim izrazom, rezultat operacije je logičko točno ili netočno, ako regularni izraz koristimo za substi-tuciju onda se mjenja sama vrijednost varijable.
Pretraga teksta
• Regularne izraze u perl-u možemo, u najjednostavnijem obliku, koristiti za pretragu odred̄enih vrijednostiu nekom tekstu.
• U tom slučaju regularni izraz poprima oblik /regex/mod, gdje je regex naš regularni izraz a mod možebiti prazan ili sadržavati specijalan znak i kojim definiramo neosjetljivost na mala i velika slova.
Primjer
• Pronalaženje odred̄enog niza teksta u liniji pročitanoj sa ulaza:
#!/usr/bin/perl$recenica = "Svaka prava ptica leti.";
26 Poglavlje 1. Osnove informatike 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
print("Sto moram traziti? ");$trazi = ;chomp($trazi);
if ($recenica =~ /$trazi/){
print("Našao sam $trazi u $recenica.\n");}else{
print("Nisam pronašao.\n");}
Substitucija teksta
• Substitucija teksta primjenom regularnog izraza nam mjenja samu vrijednost varijable nad kojom radimosubstituciju.
• Substitucija se izvrši na prvom nizu kojeg pronad̄e regularni izraz ako ne zadamo drugačije odred̄enimmodifikatorom.
• Regularni izrazi substitucije su oblika s/regex/sub/mod, gdje su značenja pojedinih elemenata slije-deća:
– znak s – govori da se radi o substitucijskom regularnom izrazu, mora biti zapisan kao takav
– regex – niz specijalnih znakova koji nam predstavljaju regularni izraz
– sub – niz znakova u koji mjenjamo znakove koji podudaraju zadanom regularnom izrazu
– mod – može biti prazan ili sadržavati specijalne znakove koji mjenjaju ponašanje regularnog izraza, tiznakovi su:
* g – globalno, promjeni sve pojave zadanog regularnog izraza u nizu
* i – zanemari razliku izmed̄u velikih i malih slova
• Primjer regularnog izraza koji mjenja sva pojavljivanja znakova 123 za znakove 456:
$string = "abc123def123";$string =~ s/123/456/g;print($string);
• Primjer zamjene djela niza neovisno o razlici velikih i malih slova:
$string = "abc123def123";$string =~ s/Abc/def/gi;print($string);
Zadatak
• Dana je vrijednost varijable $var = "abc123abc";
• Koje su vrijednosti $var nakon slijedećih zamjena?
• Provjeri pomoću perl skripte, zasebno za svaku zamjenu.
– $var =~ s/abc/def/;
– $var =~ s/[a-z]+/X/g;
– $var =~ s/B/W/i;
1.1. Vježbe 27
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Prevod̄enje teksta
• Regularne izraze možemo koristiti i za specificiranje tablice prevod̄enja pojedinih znakova.
• Oblik regularnog izraza za prevod̄enje znakova je tr/niz1/niz2/, gdje niz1 i niz2 moraju imatijednak broj znakova.
• Prevod̄enje se izvodi na način da se svaki znak iz prvog niza prevede u znak koji je na istom mjestu ali udrugom nizu.
$string = "abcdefghicba";$string =~ tr/abc/123/;print($string);
Zadatak
• Dana je vrijednost varijable $var = "abc123abc";
• Koje su vrijednosti $var nakon slijedećih prijevoda?
• Provjeri pomoću perl skripte, zasebno za svaki prijevod.
– $var =~ tr/a-z/A-Z/;
– $var =~ tr/123/456/;
– $var =~ tr/231/564/;
Dodatni zadaci
Zadatak
• Pronad̄i grešku/e u slijedećem kodu:
#!/usr/bin/python$value = if ($value = 17){
print("Unio si broj 17.\n");else{
print("Nisi unio broj 17.\n");
Zadatak
• Napiši skriptu koja provjerava je li korisnik unio pravilan e-mail.
• Pretpostaviti ćemo da je pravilan e-mail oblika [email protected], gdje je tekst bilokoji niz znakova i znamenki.
• Ispisati e-mail ispravan u slučaju da je, u suprotnom ispisati neispravan e-mail.
28 Poglavlje 1. Osnove informatike 1
POGLAVLJE 2
Operacijski sustavi 1
2.1 Vježbe
2.1.1 Osnove rada u komandnolinijskom sučelju
Autor sekcije: Vedran Miletić, Vanja Slavuj, Sanja Pavkov
Uvod u komandnolinijsko sučelje
• korisnik – identifikator (UID, user ID), korisničko ime i zaporka
– korisnik root (UID 0) je poseban, ima sve ovlasti i koristi se za administraciju sustava
• grupa – identifikator (GID, group ID), ime i korisnici u njoj
• GUI – Graphical user interface (demonstracija)
• CLI – Command-line interface (demonstracija)
• Secure SHell (SSH) – protokol koji koristimo za rad na udaljenom računalu; klijenti su:
– PuTTY, koristi se na Windowsima
* demonstracija: Host treba biti inf2.uniri.hr, Translation treba osigurati da je UTF-8
– OpenSSH klijent, dolazi s većinom operacijskih sustava sličnih Unixu
* naredba ssh korisnik@domacin
• Početak rada s komandnom linijom
– koristimo distribuciju Edubuntu, varijantu Ubuntu-a prilagod̄enu za edukacijsku upotrebu
– Logiranje u sustav -> čim se završi postupak pokretanja servera, rad na terminalima je moguć; nijepotrebna zaporka niti korisničko ime
• naredba -parm arg1 arg2 – općenita struktura: naredba, parametri, argumenti (nakon naredbe op-cionalno idu prvo parametri pa argumenti)
29
https://vedran.miletic.net/http://www.putty.org/https://www.openssh.com/https://edubuntu.org/
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Naredbe echo i man
• echo vraća korisniku uneseni tekst
• man ime_naredbe daje stranicu priručnika koji opisuje način korištenja naredbe
– q služi za izlaz iz man-a
• echo != ECHO, man != Man
– operacijski sustavi slični Unixu osjetljivi su na velika i mala slova
Zadatak
• Ispišite na ekranu svoje ime i prezime.
• Jednom naredbom ispišite svoje ime i prezime u jednom redu, a u drugom redu ispišite grad iz kojeg dolazite.
• Na ekran ispišite sljedeće: Došao je do “Hemingway-a”, ali nije nastavio dalje.
(Uputa: koristite man stranice kao pomoć.)
Naredbe cal i date
• cal prikazuje kalendar za odred̄enu godinu i u odred̄enom obliku * ovdje ćemo isprobati korištenje argu-menata i parametara naredbe
Zadatak
• Ispišite na ekranu kalendar za tekuću godinu.
• Ispišite na ekranu kalendar za 2004. godinu.
• Ispišite na ekranu julijanski kalendar za 3. mjesec 2004. godine.
• Koliko argumenata prima naredba cal u prethodnom zadatku? A koliko parametara?
• date ispisuje datum u odred̄enom formatu
Zadatak
Na ekranu ispišite današnji datum oblika DanUTjednu, Mjesec Dan Godina (npr. Ponedjeljak, Rujan 052013.).
Naredbe ls i cat
• ls izlistava datoteke u direktoriju
• ls -a izlistava sve datoteke u direktoriju, uključujući i skrivene
• ls -l izlistava datoteke u tzv. dugom ispisu
– izlistava datoteke u direktoriju zajedno sa detaljnim informacijama (npr. znakovni niz dozvole, vlas-ništvo, veličina, datum izmjene, ...)
• cat ispisuje sadržaj (tekstualne) datoteke na ekran; primjer:
$ cat examples.desktop
– kad se pokrene bez argumeanata radi beskonačno dugo
30 Poglavlje 2. Operacijski sustavi 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• ^ je oznaka za tipku Ctrl
• ^C == Ctrl + C služi za prekid izvod̄enja većine naredbi (više informacija)
• ^D == Ctrl + D kraj rada, izlaz iz terminala (više informacija)
Zadatak
• Saznajte imena svih datoteka koje postoje u vašem direktoriju (uključujući i skrivene).
• Ispišite sadržaj datoteke .bash_logout na ekran.
• Ispišite sadržaj datoteke .profile na ekran, ali tako da ispišete i brojeve linija.
• Izlistajte sadržaj direktorija .config prema veličini datoteka i direktorija koji su u njemu, i to tako da seveličina prikaže u KB.
(Uputa: koristite man.)
Ponovimo!
• Što je CLI?
• Ispišite opći oblik naredbe u komandnoj liniji.
• Čemu služi naredba echo?
• Što je manual i kako se koristi?
• Zbog čega kažemo da cat != Cat?
• Prisjetite se kako koristimo parametre i argumente na primjeru naredbe date.
Autor sekcije: Vedran Miletić, Vanja Slavuj, Sanja Pavkov
Stablo direktorija
• višekorijenski operacijski sustav za više više particija ima više korijenskih direktorija
– primjerice, operacijski sustav Windows particije označava kao C:\, D:\, E:\, ...
• jednokorijenski operacijski sustav za više particija imaju jedan korijenski direktorij
– operacijski sustavi slični Unixu mogu imati particije u direktorijima /, /home, /media/usbdisk,...
Uloga pojedinih direktorija u sustavu
• Filesystem Hierarchy Standard definira naziv u ulogu direktorija u datotečnom sustavu
– dugo vremena je bila aktualna verzija 2.3, siječanj 2004., trenutna aktualna je verzija verzija 3.0, ljeto2012.
– više informacija možete pronaći na stranici s dokumentima o FHS
• /bin, /sbin, /lib – izvršne datoteke i bibliotečne datoteke
– izvršne datoteke napravljene iz izvornog koda koji ima funkciju main()
– bibliotečne datoteke napravljene iz izvornog koda koji nema funkciju main()
• /dev sadrži u sebi ured̄aje
• /etc sadrži konfiguracijske datoteke – one odred̄uju kako se programi ponašaju
2.1. Vježbe 31
https://en.wikipedia.org/wiki/Control-Chttps://en.wikipedia.org/wiki/Control-Dhttps://vedran.miletic.net/https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standardhttp://www.pathname.com/fhs/
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• /root, /home/ su redom root direktorij administratora, kućni direktoriji ostalihkorisnika
• /proc, /sys sadrže u sebi inforamcije o sustavu (hardveru)
• /lost+found sadrži dijelove datoteka koje su pronad̄ene u datotečnom sustavu prilikom oporavka odpada sustava
• /media, /mnt sadrži direktorije putem kojih je dostupna vanjska memorija (USB, fotoaparat, digitalnakamera..)
• /opt unutar njega su poddirektoriji, najčešće sa komercijalnim programima koji se instaliraju drugačije odostalog softvera
• /tmp sadrži privremene datoteke
• /var sadrži datoteke koje program koristi kod pokretanja (datoteke koje se mijenjaju dok program radi)
• /usr, /usr/local sadrži programe razdijeljene po poddirektoirjima /usr/bin, /usr/sbin, /usr/lib, /usr/share
– konvencija je da se softver koji se instalira putem upravitelja paketima (sustav sličan Apple Store-u iGoogle Play-u) postavlja u /usr, a softver koji administrator instalira mimo upravitelja paketima u/usr/local
Zadatak
• Izlistajte sve obične i sakrivene direktorije i datoteke u vašem kućnom direktoriju.
• Izlistajte sve direktorije u /home direktoriju. Što vidite?
• Objasnite što se nalazi u sljedećim direktorijima:
– /home/student12
– /usr/include/c++/4.6
– /dev/input
– /etc/acpi
(Uputa: podsjetite se koje je značenje kratice ACPI.)
Rad s direktorijima, naredbe pwd i cd
• pwd ispisuje putanju do radnog direktorija
• cd mijenja radni direktorij u dani
– bez argumenata vraća vas u kućni direktorij
• – kompletiranje imena datoteka i direktorija
– postoji razlika izmed̄u i
– na sličan način kompletiraju se imena naredbi
– na sličan način kompletiraju se nazivi parametara nekih naredbi (u novijm verzijama bash ljuske,datoteka /etc/bash_completion i direktorij /etc/bash_completion.d)
Zadatak
Isprobajte sljedeće naredbe i objasnite što rade:
• cd
• cd .
32 Poglavlje 2. Operacijski sustavi 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• cd ..
• cd ~
• cd -
• cd ../..
• cd ./././..
• cd ../.././.
• cd ../../../../../..
• . referira na trenutni direktorij
• .. referira na direktorij iznad trenutnog
• ../.. referira na direktorij iznad direktorija iznad trenutnog (tako možemo i dalje)
Naredbe mkdir i rmdir
• mkdir stvara direktorij s danim imenom
• rmdir briše (prazan) direktorij danog imena
Zadatak
• U Vašem kućnom direktoriju napravite predloženu strukturu direktorija:
studentXY ---------- Ispiti ------------- Ispit1 -------- 15102012| || |----- Ispit2||--------- Kolokviji ---------- Kolokvij1| || |----- Kolokvij2 ----- Rjesenja||--------- Seminari||--------- DZ ----------------- Grafovi
• Ud̄ite u direktorij Ispiti i pokušajte izbrisati direktorij Ispit1. Što se dogad̄a?
• Pozicionirajte se u direktorij Kolokviji i u jednoj naredbi pokušajte izbrisati sve poddirektorije koji seondje nalaze.
• Vratite se do direktorija Seminari i ud̄ite u njega. Pokušajte ga izbrisati. Što se dogad̄a? Zašto?
• Otid̄ite do svog kućnog direktorija i od tamo pokušajte izbrisati direktorij 15102012. Zašto ga ne možeteizbrisati?
• Ud̄ite u direktorij Kolokvij i iz njega pokušajte izbrisati direktorij DZ. Možete li to učiniti? Zašto?
Dodatni zadatak
• U svom kućnom direktoriju stvorite poddirektorij trnoruzica. Ud̄ite u taj direktorij.
• Stvorite direktorije mikimaus i minimaus.
• Ud̄ite u direktorij mikimaus.
• Probajte sada izbrisati direktorij minimaus. Objasnite zašto to ne možete.
• Vratite se u direktorij trnoruzica i izbrisite direktorij minimaus.
2.1. Vježbe 33
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• Isprobajte naredbe cd -, cd ../. i cd -/.. te objasnite što rade.
Apsolutno i relativno referenciranje
• /home/vedran/radnidir
– apsolutno referira na radnidir, radi od svugdje
– apsolutno referenciranje kreće od korijenskog direktorija i ide do traženog direktorija, uvijek započinjesa /
• radnidir
– relativno referira na radnidir, radi samo kad se nalazimo u direktoriju /home/vedran
– relativno referenciranje kreće od trenutnog direktorija i ide do traženog direktorija, nikad ne započinjeznakom /
Zadatak
• Izlistajte kućni direktorij korisnika prof:
– apsolutnim referenciranjem iz svojeg kućnog direktorija,
– apsolutnim referenciranjem iz korijenskog direktorija,
– relativnim referenciranjem iz svojeg kućnog direktorija,
– relativnim referenciranjem iz korijenskog direktorija.
• Objasnite zašto prva dva dijela imaju isto rješenje.
• Koji je vaš kućni direktorij na računalu na kojem trenutno radite?
• U kojem se direktoriju nalazi moj kućni direktorij?
• U kojem se direktoriju nalazi vaš kućni direktorij, a u kojem vaš home direktorij?
• Imate li pristup kućnom direktoriju korisnika student08? Izlistajte sadržaj neke njegove datoteke.
Rekurzivnost u radu s direktorijima i datotekama
• ls -R radi rekurzivno izlistavanje
– izlista direktorij i njegove poddirektorije
– na sličan način radi brisanje direktorija u kojem postoje poddirektoriji i datoteke
Zadatak
• Koristeći naredbu ls izlistajte rekurzivno svoj kućni direktorij.
• Izlistajte rekurzivno sljedeće direktorije:
– /usr,
– /usr/local (ovaj direktorij izlistajte dva puta: prvi put koristeći relativno, a drugi put apsolutnoreferenciranje).
• Što se dogad̄a kada umjesto parametra -R koristite parametar -r? Isprobajte.
Ponovimo!
34 Poglavlje 2. Operacijski sustavi 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• Navedite po jedan primjer za jednokorijenski i višekorijenski operacijski sustav.
• Što je FHS?
• Prisjetite se koja je uloga pojedinih direktorija u datotečnom sustavu.
• Postoji li razlika izmed̄u kućnog i home direktorija korisnika?
• Na koji način možemo kompletirati nazive direktorija i datoteka?
• Kako izglda referenca za trenutni (radni) direktorij? Kako za onaj jednu hijerarhijsku razinu više?
• Ponovite razliku izmed̄u apsolutnog i relativnog referenciranja.
• Ako se nalazite u vlastitom kućnom direktoriju, napišite relativnu i apsolutnu adresu koja će vas odvesti dokorijenskog direktorija.
• Čemu služi rekurzivno izlistavanje direktorija?
• Kakve informacije daje naredba pwd?
Autor sekcije: Vedran Miletić, Vanja Slavuj, Sanja Pavkov
Baratanje datotekama u datotečnom sustavu
Stvaranje, kopiranje, brisanje i preimenovanje datoteka
• touch stvara praznu datoteku danog imena
• rm briše datoteku danog imena
• cp kopira datoteku danog imena u datoteku drugog danog imena; primjer:
$ cp datoteka1 datoteka2 # kopira datoteke (prvu u drugu)
• mv preimenuje (miče) datoteku danog imena; primjer:
$ mv datoteka1 datoteka2 # premješta datoteku1 u datoteku2 i preimenuje ih
Zadatak
• U svom kućnom direktoriju napravite direktorij zadatak1510 i ud̄ite u njega.
• U njemu napravite 3 datoteke: vjezba1, vjezba2 i vjezba3 jednom naredbom (linijom). Ispišite naekran sadržaj datoteke vjezba2.
• Izbrišite zatim datoteku vjezba1.
• U istom direktoriju napravite i direktorij dir1.
• Kopirajte datoteku vjezba3 u dir1, jednom koristeći reltivno a drugi put apsolutno referenciranje.
• cp -r i rm -r označava rekurzivno kopiranje i brisanje, briše direktorij i sve datoteke i poddirektorije unjemu
– kod mv ``naredbe, za razliku od ``cp i rm, nema potrebe za rekurzijom; radi se o pre-imenovanju
Zadatak
• U Vašem kućnom direktoriju napravite predloženu strukturu direktorija:
2.1. Vježbe 35
https://vedran.miletic.net/
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
studentXY ------ Studij --------- Preddiplomski -------- DINP.txt| ||----- Pravilnik.txt |--- Raspored.txt
• Kopirajte datoteku Pravilnik.txt u direktorij Preddiplomski.
• Kopirajte sav sadržaj direktorija Preddiplomski, u direktorij Diplomski, koristeći apsolutno referen-ciranje.
• Izbrišite direktorij Preddiplomski.
• Direktorij Diplomski preimenujte u Dipl.
Dodatni zadatak
Provjerite čemu služi i kako se koristi program Midnight Commander (naredba mc).
Glob uzorci
• mnogo radimo sa nazivima datoteka pa postoji mogućnost rada sa posebnim znakovima (koji nemaju dos-lovno značenje) da bismo brzo i lako specificirali nazive većeg broja datoteka
• glob uzorci, globovi ili wildcards
– koriste se za pretraživanje uzoraka koji odgovaraju zadanome
– način da više datoteka koje imaju slična imena povežemo jednom naredbom
– glob != regex, samo ima donekle sličnu sintaksu i namjenu
• ? – jedan znak, bilo koji
• * – bilo koliko bilo kojih znakova
• [chars] – jedan znak, bilo koji od navedenih u zagradama, može i raspon oblika [A-Z], [a-z] ili[0-9]
• ``__ – zamjenjuje samo jedan, bilo koji znak koji je član navedene klase
– najčešće korištene klase su: [:alnum:], [:alpha:], [:digit:], [:lower:], [:upper:]
• \ – tzv. prekidni znak
Zadatak
• U svom kućnom direktoriju stvorite poddirektorij Zadatci i u njemu datoteke zadatak, zadatek,zadatuk, zadatak1, zadatak2, zadatakABC, zadatakabc, zadacnica, zadacnicA, zad3i dat05.
• Jednom naredbom, koristeći se glob-om, izlistajte samo:
– zadatak, zadatek, zadatuk;
– zadatek, zadatuk;
– samo datoteke koje na 8 mjestu naziva imaju veliko slovo
– samo datoteke koje počinju slovom z, na 5 mjestu naziva im nije ni malo ni veliko slovo koja se poabecedi nalazi nakon slova s, i čiji naziv završava malim slovom
– sve datoteke čiji naziv završava brojem manjim od 4
– sve navedene datoteke
• Isprobajte naredbu ls [^ad]* i razmislite o njezinom značenju.
36 Poglavlje 2. Operacijski sustavi 1
https://en.wikipedia.org/wiki/Midnight_Commanderhttps://en.wikipedia.org/wiki/Glob_(programming)
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• Isprobajte naredbu ls {ab,dat,f}?? i razmislite o njezinom značenju.
• Isprobajte naredbu cat *`
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Proučite man stranicu naredbe iconv, a zatim je isprobajte kod prebacivanja datoteke iz UTF-8 kodiranja uUTF-7, UTF-16, ISO-8859-2.
Ured̄ivači teksta
• prije grafičkih sučelja, programi bili dizajnirani na način da koriste plain text
• programi za rad s tekstom u komandnoj liniji nisu programi za obradu teksta (engl. word processors) negoured̄ivači teksta (engl. text editors )
• GNU Emacs, naredba emacs
– iznimno moćan ured̄ivač teksta, velike mogućnost prilagodbe i proširenja funkcionalnosti
– podržava bojenje sintakse, kompletiranje naredbi i automatsko uvlačenje koda za desetke različitihprogramskih jezika
– podržava UTF-8 i koristi ga kao zadani ako je on zadan sustavskim lokalnim i regionalnim postav-kama; više detalja o kodiranjima u Emacsu
– ne sadrži modove, za razliku od popularnog Vim-a
– https://xkcd.com/378/\T1\textbar{}xkcd:RealProgrammers
Zadatak
• Proučite vodič za Emacs od Stanfordovog Centra za računalna istraživanja u glazbi i akustici ili papir sEmacsovim naredbama. Isprobajte iduću funkcionalnost:
– open, close, read, save
– mark, copy, cut, paste
– search forward, search backward
• Napravite u svom kućnom direktoriju datoteku mjeseci.txt i u nju upišite nazive mjeseci tako da jesvaki naziv u svome retku.
• Kopirajte sav sadržaj i zalijepite ga na kraj datoteke tri puta.
• Sačuvajte Vašu datoteku pod nazivom mjeseci3.txt.
• Dodajte svoje ime i prezime na kraj datoteke i sačuvajte Vaš trenutni rad.
• Odaberite dvije stvorene kopije sadržaja, izrežite ih, a zatim spremite u novu datoteku mjeseci2.txt.
• Pozicionirajte se u neki redak datoteke mjeseci2.txt i otkrijte broj linije u kojoj se trenutno nalazite.
• Pronad̄ite u datoteci string anj i zamijenite ga sa rječju ZAMJENA.
Dodatni zadatak
• Otvorite u Emacsu datoteku nazvanu moj_program.cpp. Uočite u koji način rada (mode) vas postavlja.
• Unesite kod hello world C++ programa i spremite ga, a zatim ponovno spremite datoteku pod imenommoj_program2.cpp.
• Otvorite obje datoteke istovremeno i prebacite se iz jedne u drugu.
• Uočite da Emacs u zadanim postavkama ne vrši bojenje pripadnih zagrada (), odnosno [], odnosno {},odnosno . Pronad̄ite u “Options” način da to uključite.
(Napomena: Vremenom ćemo naučiti kako koristiti program-prevoditelj za prevod̄enje C++ programa na Li-nuxu.)
38 Poglavlje 2. Operacijski sustavi 1
https://en.wikipedia.org/wiki/Word_processorhttps://en.wikipedia.org/wiki/Text_editorhttps://en.wikipedia.org/wiki/GNU_Emacshttp://www.emacswiki.org/emacs/ChangingEncodingshttps://en.wikipedia.org/wiki/Vim_(text_editor)https://xkcd.com/378/\T1\textbar {}xkcd:RealProgrammershttps://ccrma.stanford.edu/guides/package/emacs/emacs.html
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Dodatni zadatak
• Proučite program Vi IMproved (naredba vim).
Dodatni zadatak
• Pokrenite GNU nano (naredba nano), koji je vrlo jednostavan ured̄ivač teksta, zamjena za nekoć popularnipico.
• Isprobajte u GNU nano-u iduću funkcionalnost:
– ^X -> Exit,
– ^C -> Cur Pos,
– ^O -> WriteOut,
– ^R -> Read File,
– ^K -> Cut Text i ^U -> UnCut Text,
– ^W -> Where Is (i varijante ^W^R, ^W^Y, ^W^V, ^W^T).
Ponovimo!
• Što je kodiranje znakova?
• Što je UTF-8? A UTF-32?
• Na što sve utječu lokalne i regionalne postavke sustava?
• Što je Emacs i čemu služi?
Autor sekcije: Vedran Miletić, Vanja Slavuj, Sanja Pavkov
Pretraživanje i obrada tekstualnih datoteka
Izdvajanje linija iz tekstualnih datoteka
• regularni izrazi (regex ili regexp) su simbolička notacija koju koristimo za pretraživanja obrazaca unutarnekog teksta
– koriste se u mnogim alatima i programskim jezicima za rješavanje problema povezanih sa manipula-cijom teksta
– regularni izrazi mogu varirati s obzirom na alat ili programski jezik
– razlikujemo dvije vrste znakova kod regularnih izraza
– regex != glob
• grep služi za izdvajanje linija prema odred̄enom uzorku iz tekstualnih datoteka, primjer:
$ grep "x" datoteka.txt # izdvaja linije koje sadrže slovo x u tekstualnoj→˓datoteci datoteka.txt
– ime dolazi od naredbe g/re/p (global / regular expression / print) tradicionalnog Unix editora ed
– navodnici su značajni: postoji velika razlika izmed̄u grep rij ec datoteka.txt i grep"rij ec" datoteka.txt
– više detalja o naredbi pronad̄ite na Wikipedijinoj stranici i u službenom priručniku
2.1. Vježbe 39
https://vedran.miletic.net/https://en.wikipedia.org/wiki/Grephttps://www.gnu.org/software/grep/manual/grep.html
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• [chars] – jedan znak, bilo koji od navedenih u zagradama
– kao i glob, podržava i sintaksu oblika [A-Z], [a-z], [0-9]
• [^chars] – jedan znak, bilo koji osim navedenih u zagradama
• . – jedan znak, bilo koji
• ^ – početak retka
• $ – kraj retka
• poznajemo dvije vrste regularnih izraza: basic regular expressions (BRE) i extended regular expressions(ERE)
– razlikuju se u interpretaciji posebnih znakova
– BRE: ^ $ . [ ] *
– ERE: ( ) { } ? + |
– grep je program koji koristi BRE
– grep -E '(xd|xy)' dat.txt
• * – nijedno, jedno ili bilo koliko ponavljanja prethodnog znaka (npr. .* je bilo koliko ponavljanja bilokojeg znaka)
• + – jedno ili bilo koliko ponavljanja prethodnog znaka (ali ne niti jedno!)
• ? – jedno ili nijedno ponavljanje prethodnog znaka
• {n,m} – element koji prethodi mora se pojaviti odred̄en broj puta
– specijalni slučajevi {n}, {n,}, {,m}
• (ab|cd) – predstavlja alternaciju tj. uzorak mora sadržavati ili niz ab ili cd
• puno više o regularnim izrazima čuti ćete na kolegijima Formalni jezici i jezični procesori 1 i 2
Zadatak
• Stvorite datoteku mjeseci.txt u koju ćete, u svaki red posebno, zapisati sve mjesece u godini i sve daneu tjednu. Zatim iz nje izdvojite sljedeće linije:
– sve koje sadrže slovo a;
– sve koje sadrže slovo O ili o;
– sve koje ne sadrže slovo i;
– sve koje sadrže niz znakova an i još barem jedno slovo nakon n;
– sve koje počinju slovom S ili s;
– sve koje imaju točno 8 slova.
• Napravite datoteku adrese1.txt i u nju upišite sljedeće e-mail adrese (svaka u svome retku):
[email protected]@[email protected]@[email protected]@[email protected]@[email protected]
• Izdvojite iz datoteke adrese1.txt adrese koje:
– koriste bar jedno veliko slovo u korisničkom imenu;
40 Poglavlje 2. Operacijski sustavi 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
– završavaju na .hr ili .com;
– čije se korisničko ime sastoji od točno 8 slova;
– počinju sa bilo kojim slovom koje se u abecedi nalazi nakon slova o;
– koriste znak . ili -- u korisničkom imenu;
– čije korisničko ime ne završava brojem;
– sadrže slovo v, nakon kojeg slijedi niz ic (koji se može ponavljati više puta), a iza kojeg odmah slijediznak @;
– su oblika mail(broj7).
Dodatni zadatak
Napravite datoteku studenti.txt u koju napišite popis studenata prisutnih na satu u formatu Ime Prezime,pri čemu je svaki student u svom redu te datoteke. Izdvojite iz nje:
• sve studente kojima prezime počinje na P,
• sve kojima prezime počinje slovom koje je dio hrvatske abecede,
• sve kojima ime počinje hrvatskim dijakritičkim znakom,
• sve koji nemaju hrvatski dijakritički znak ni u imenu ni u prezimenu,
• sve kojima ime počinje na P, a prezime završava na ć,
• sve čije prezime ima točno 6 slova, ali zadnje nije ć.
Napomene:
• \(abc\) čini da se niz znakova abc tretira kao cjelina, može se koristiti u kombinaciji sa * i +,
• \(abc\|de\) ima značenje niz abc ili niz de,
• . i - dobijemo kao \\. i \\- respektivno (jedan escape “pojede” ljuska, drugi se prosljed̄uje grepu), aunutar zagrada [] escape nije potreban,
• \ dobijemo kao \\\\.
Dodatni zadatak
Iz datoteke mjeseci.txt u koju ste upisali nazive mjeseca u godini izdvojite:
• sve mjesece koji sadrže slovo a,
• sve mjesece koji sadrže niz znakova an,
• sve mjesece koji ne sadrže slovo e.
Obrada tekstualnih datoteka
• sed je skraćenica od stream editor
– dozvoljava rad nad nizom podataka
– podaci sa standardnog ulaza ured̄uju se prema prethodno napisanim uputama, naredbama spremljenimu datoteku i prosljed̄uju se na standardni izlaz
– više detalja o naredbi pronad̄ite na Wikipedijinoj stranici i u službenom priručniku ili http://www.grymoire.com/unix/sed.html\T1\textbar{}tutorialuodBruceaBarnetta
sed nudi dvije osnovne mogućnosti primjene.
2.1. Vježbe 41
https://en.wikipedia.org/wiki/Sedhttps://www.gnu.org/software/sed/manual/sed.htmlhttp://www.grymoire.com/unix/sed.html\T1\textbar {}tutorialuodBruceaBarnettahttp://www.grymoire.com/unix/sed.html\T1\textbar {}tutorialuodBruceaBarnetta
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
• sed za zamjenu (s); primjer:
$ sed 's/dan/noć/' text1.txt # mijenja slijed dan za noć u datoteci text1.txt
– koristi se zajedno sa regularnim izrazima, kao i kod naredbe grep, za zamjenu traženog uzorka,zadanim uzorkom
– sintaksa: sed 's/traženiUzorak/zamjenskiUzorak/' file.txt
• sed za transformaciju (y); primjer:
$ sed 'y/aeiou/AEIOU/' file1.txt # zamjenjuje svako od navedenih malih slova s→˓odgovarajućim velikim slovom
– svaki se traženi znak zamjenjuje odgovarajućim zadanim znakom
– sintaksa: sed 'y/uzorak1/uzorak2/' file.txt
Najčešće korišteni parametri naredbe sed su:
• sed -n čini da ne ispisuje na ekranu nikakav tekst, osim ako to nije eksplicitno navedeno zastavicom (podefaultu sed ispisuje sve na ekran)
– ako se -n opcija ne koristi, sed je vrlo sličan naredbi cat
• sed -e koristi se za višestruku obrada
– koristi se kada imamo više naredbi za sed prije prvog delimitatora (npr. sed -e 's/a/A/' -e's/e/E/')
Zadatak
Napravite datoteku dani.txt koja će sadržavati sve dane u tjednu (jedan ispod drugoga).
• zamijenite riječ utorak sa drugi,
• koristeći samo jednu naredbu sed, zamijenite riječ subota sa početak, a nedjelja sa kraj,
• transformirajte svaki samoglasnik u slovo koje se po abecedi nalazi iza njega
Napomena: poslije zadnjeg delimitatora dodajte g; g s y ne funkcionira, funkionira samo sa s.
Zadatak
Iz sustava MudRi preuzmite datoteku receniceSED.txt i sačuvajte ju u svom kućnom direktoriju. Zatim:
• zamijenite svaku riječ koja počinje sa an, a završava na samoglasnik, sa rječju BRAVO. Možete li to učiniti?,
• svaku rečenicu koja sadrži broj, zamijenite sa rječju RECENICA,
• svako pojavljivanje znaka a ili e zamijenite sa SAMae, a svaku pojavu o ili i sa SAMoe,
• izbrišite sve samoglasnike iz svih rečenica.
• sed zastavice se dodaju nakon posljednjeg delimitatora (/)
– /g = zamjena svih pojavljivanja traženog uzorka
– /p = ispisuje se izmjenjena linija (usporedite rezultat sa i bez -n)
– /5 = izmjenjuje 5. uzorak koji je pronad̄en
– /5g = izmjenjuje 5. uzorak i svaki poslije njega
– /w file.txt = odred̄uje se odredišna datoteka u koju se upisuje rezultat naredbe sed
• zastavice se mogu kombinirati, no /w mora biti na posljednjem mjestu
• u kombinaciji s y ne koristimo zastavice
42 Poglavlje 2. Operacijski sustavi 1
reStructuredHgWiki Book, Distribucija 2017-07-02 12:47:14
Zadatak
Koristite datoteku receniceSED.txt za sljedeći zadatak:
• zamijenite svaku (osim prve!) riječ koja počinje sa an ili An a završava na suglasnik, sa rječju BRAVO.Možete li to sada učiniti?,
• svako pojavljivanje znaka a ili e nakon njegova (ukupno) trećeg pojavljivanja zamijenite sa SAMae, a svakupojavu o ili i sa SAMoe,
• preuredite prvu naredbu tako da se na ekran ne ispisuje ništa osim promijenjenih linija, te da se samoizmjenjene linije upisuju u datoteku pod nazivom receniceSED1.txt.
Zadatak
Napravite datoteku drzave.txt u kojoj upišite Hrvatska i nazive 6 zemalja s kojima graniči (svaku u svomeredu). Zatim napravite sljedeće:
• Sve nazive država koje počinju slovom S promijeniti u naziv sa s, upisati u datoteku maledrzave.txt,te prikazati promjene na ekranu.
• Promijenite nazive svih država koje završavaju na ija u ZAMJENA, upisati rezultat u datoteku zam.txti onemogućiti ispis na ekranu.
• Dodajte sljedeće države na popis: Kazahstan, Kirgistan, Uzbekistan, Afganistan, Pakistan i Turkmenistan,te zamijenite sve nazive koji završavaju na stan sa nije susjed, ali samo nakon trećeg pojavljivanjatog uzorka, te ispišite sve, ne samo izmijenjene linije.
• sed restrikcije: navode se ispred izraza koji opisuje zamjenu ili transformaciju
– restrikcija broja retka
* sed '3 s/[0-9]*//' – brisanje prvog broja u trećem retku
* sed '/^g/ s/Mark/Sonya/g' – u svakom retku koji počinje sa slovom ‘g’ zamijenitiMark sa Sonya
– restrikcija prema rasponu retka
* sed '1,100 s/a/A/g' – zamjena ‘a’ sa ‘A’ vrši se u prvih 100 redaka (uočite da nije isko-rišten znak ^)
* sed '21,$ s/a/A/g' – zamjena ‘a’ sa ‘A’ se vrši od 21. retka do kraja datoteke
Zadatak
• Napišite sed naredbu koja će prikazati sadržaj prvih 7 redaka datoteke drzave.txt.
• Napišite sed naredbu koja će u datoteci pretražiti pojavljivanja uzorka an i ispisati broj redaka pojaveuzoraka.
• Napišite sed naredbu koja će u retcima koji završavaju slovom n mijenjati sva mala slova u velika slova.
• Napišite naredbu kojom ćete u datoteci drzave.txt promijeniti svako a u A, te s u S, ali samo ako riječu retku ima 8 slova.
Dodatni zadatak
• Stvorite datoteku file1 proizvoljnog sadržaja.
• Napišite sed naredbu koja će prikazati sadržaj prvih 7 redaka datoteke file1.
• Napišite sed naredbu koja će u recima koji završavaju sa slovom b mijenjati sva mala slova u velika.
2.1. Vježbe 43
reStructuredHgWiki Book, Distribucija 2017-0