351
reStructuredHgWiki Book Distribucija 2017-07-02 12:47:14 Vedran Mileti´ c srp 02, 2017

reStructuredHgWiki Book - inf2.uniri.hr · PS. Yes – it’s free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably

  • 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