UNIX je ljuska (shell) operacijskih sustava baziranih na Linuxu; moglo bi se reći da analognu ulogu, kada je Windows u pitanju, preuzima MS-DOS (kasnije preimenovan u CMD.exe). Ljuska je sučelje koje povezuje korisnika i operacijski sustav te je zbog toga moguće pomoću ljuske izvršavati sve operacije koje operacijski sustav korisniku nudi.

Korisnik se ne mora koristiti grafičkim sučeljem za obavljanje određene operacije, nego može izravno programiranjem u naredbenom retku (engl. command line) zadavati operacije koje je potrebno izvršiti. Iako može biti nejasno na prvi pogled, mnoge radnje se mogu daleko brže i jednostavnije izvesti pomoću ljuske nego korištenjem grafičkog sučelja.

Recimo ako je potrebno masovno preimenovanje, kopiranje i/ili premještanje pa čak i promjena sadržaja datoteka, kodiranjem u naredbenom retku daleko je brže to postići nego npr. tražiti softver koji je potreban za to. U ovom tekstu imate priliku naučiti upravo to – osnove programiranja u Linuxovoj ljusci kako biste kasnije mogli na relativno jednostavan način manipulirati datotekama u nekoj od distribucija operativnih sustava baziranim na UNIX-u.

Postoje mnoge inačice ljuske UNIX-a, no manje više sve imaju vrlo sličnu sintaksu i slične nazive naredbi. U tekstu se bavimo ljuskom bash, koja je temelj vjerojatno najpopularnije distribucije Linuxa – Ubuntu. Ukoliko želite naučiti programirati u UNIX ljusci, a nemate instaliran Linux, možete ga pokrenuti sa CD-a u “live modu” ili instalirati Cygwin koji Windows korisnicima nudi (unutar Windowsa) rad u Linux okruženju. Nakon što ste realizirali jedno od prethodno navedenih rješenja, možete početi sa isprobavanjem onoga što ćete naučiti. Jednostavno otvorite Terminal ili u Windowsu pokrenite Cygwin.

UNIX ljuska je bazirana interpreterski, dakle nakon svakog retka upisanog kôda taj redak se odmah izvršava. Zbog toga je moguć izuzetno interaktivan pa čak i zanimljiv rad, no loša strana ovakvog načina rada je što morate uvijek dobro razmisliti prije nego pritisnete Enter (npr. “prejednostavno” je zabuniti se i obrisati neke bitne podatke koje niste htjeli obrisati).
Bash nudi neke vrlo praktične mogućnosti koje zapravo nisu striktno dio sintakse, a pomoći će vam u kodiranju. Tako sa strelicama gore i dolje (na tipkovnici) možete “putovati” kroz prethodno unesene naredbe te ih ponovo izvršavati i eventualno modificirati.

osnove unixa 1Nadalje, tipkom Tab možete automatski dovršavati naredbu ili putanju datoteke u naredbi, što je vrlo praktično. Primjer: imate u aktivnoj mapi datoteku koja se zove “dugačko ime datoteke”. Kako ne biste upisivali cijeli naziv, upišete samo “d” i pritisnete Tab i ljuska će sama dovršiti naziv. Ako imate više datoteka koje počinju slovom “d”, nakon pritiska Taba se ne događa ništa. No nakon drugog pritiska Taba, dobijete listu mogućnosti koje vam ljuska nudi.
Valja napomenuti i da se unutar ljuske mogu vršiti i Copy/Paste naredbe za tekst s jednom sitnom razlikom: kopirate pomoću Ctrl + Shift + C, a zalijepite pomoću Ctrl + Shift + V.
O

visno o okruženju u kojem radite, možda vam miš nije omogućen, pa ne možete označiti tekst u terminalu. U tom slučaju, možete se poslužiti strelicama i Shiftom.

Svaka naredba se u osnovi sastoji od naziva naredbe i popisa argumenata koji se šalju u naredbu: [naredba] [argument1] [argument2] itd. Za početak: postoji argument koji je manje-više podržan kod svih naredbi, a to je –help, odnosno -help. Pomoću njega možete saznati osnovne informacije o naredbi koja vas zanima, a ukoliko želite opširan manual o naredbi, možete upotrijebiti naredbu man. Naredbi man se kao argument predaje naziv željene naredbe (man man daje informacije o samoj naredbi man).

Valja napomenuti da UNIX ljuska razmak prepoznaje kao prestanak jednog argumenta i početak sljedećeg. Dakle, ako recimo zadate naredbi argument arg1 arg2, ona će taj argument prepoznati kao dva odvojena argumenta, što može dovesti do neželjenog ponašanja naredbe. Više o rješavanju tog problema slijedi u sljedećem poglavlju.

Pošto su Linux operacijski sustavi prilično dobro zaštićeni od zloupotrebe trećih strana, može se dogoditi da nemate dozvolu za izvođenje naredbi unutar određenih direktorija (npr. root directory). Tada u terminal upišite “sudo -i”, bez navodnika i pritisnite Enter. Ukoliko vaš korisnički račun ima šifru morat ćete ju unijeti. Sada ste u “superuser” modu rada te imate sve ovlasti nad računalom (što katkad može biti i opasno), a iz ovog načina rada izlazite naredbom exit. Automatski ste postavljeni u direktorij “root”.

Za “putovanje” kroz mape su svakako najvažnije sljedeće dvije naredbe: cd i ls. Naredba cd se koristi za promjenu aktivne mape, dok ls ispisuje sadržaj mape. Tako ćete najčešće prvo naredbom ls pogledati koje su mape u aktivnoj mapi, a zatim naredbom cd otići u nju. Obje naredbe kao argument primaju relativnu putanju do željene mape, a ukoliko se ne doda argument, naredbe se izvršavaju u aktivnoj mapi (iako naredba cd nema nekog smisla bez argumenta).

osnove unixa 2Apsolutnu adresu predstavlja znak “/”, na početku retka (npr. ući ćete u mapu “Mapa” koja je u korijenskom direktoriju (engl. root directory) naredbom cd /Mapa), a za “home directory” je rezerviran znak “~” (tilda). Zadavanje putanje je klasično: ako recimo u aktivnoj mapi imate mapu naziva “Druga_mapa” i želite ući u tu mapu, to ćete postići upisivanjem . Navedeno vrijedi za sve naredbe koje mogu sadržavati putanju mape kao argument.

Možda ste primjetili da u navedenom primjeru nema razmaka u imenu mape. Ukoliko ime mape, ili općenito ime bilo kojeg argumenta sadržava razmak, najjednostavnije ga koristite tako što ćete argument staviti pod navodnike ili možete razmak “escapeati” sa znakom “”. Ako recimo želite napraviti novu mapu, naziva “Četvrta mapa”, upisat ćete .

osnove unixa 3U principu se sve naredbe za manipulaciju datotekama koriste na identičan način: . Upravo ste premjestili mapu “Četvrta_mapa” u mapu “Treća_mapa” i istovremeno ju preimenovali u “Mapa 5”. Na jednak način funkcionira i naredba cp. Primjetite početak druge putanje “./” – u pravilu se izostavlja, a ljuska ga podrazumijeva ukoliko putanja počinje imenom mape ili datoteke.

Idemo sada smanjiti broj mâpa tako što ćemo naredbom rm obrisati mapu “Mapa 5”. Probajte sami.
Pomoću naredbe možete vidjeti sadržaj datoteke. Međutim, naredbom cat možete i izmjeniti sadržaj datoteke, što ćemo vidjeti u sljedećem poglavlju.

Naveli smo sve bitnije naredbe za rad s mapama. Naredba pwd vam isto može katkad biti od pomoći, ne dajemo joj nikakve argumente, a ona ispisuje trenutnu radnu mapu u kojoj se nalazimo.

Svaka od navedenih naredbi ima čitav niz dodatnih rezerviranih argumenata koje joj možemo proslijediti i tako joj modificirati ponašanje pa bismo mogli poopćiti sintaksu naredbe: .

osnove unixa 4Standardno, po defaultu, svaka naredba vrši ispis na standardni izlaz (stdout), odnosno na monitor. Međutim, rezultat naredbe možemo proslijediti u drugu naredbu ili zapisati u datoteku. Preusmjeravanje se vrši operatorom “>”. Primjer: pozicionirajte se u home, te upišite možete sadržaj datoteke preusmjeriti na standardni ulaz (stdin) kojeg onda pomoću operatora “<” naredba čita.

Navedeni operatori su za preusmjeravanje ulaza i izlaza na datoteku. Međutim, češće je potrebno preusmjeriti izlaze jedne naredbe na ulaz druge. To se postiže cjevovodom (eng pipeline, pipe), znak za njega je “|” (AltGr + W). Recimo, broj datoteka i mapa u trenutnom folderu možete vidjeti pomoću . Naredba ls šalje svoj rezultat naredbi wc (word count), koja kao rezultat daje broj linija, riječi i znakova dobivenih s ulaza. Argumentom “-l” tražimo samo ispis linija, a broj linija je jednak broju datoteka dobivenih naredbom ls. Naredbu wc možete koristiti i nad nekom datotekom tako da joj kao argument date putanju do datoteke.

Pomoću redirekcije i naredbe cat možete mijenjati sadržaj datoteke na način ” dodavati sadržaj na postojeći sadržaj unutar datoteke.

Osnove UNIX-a: Šalabahter

man ime_naredbe – Detaljne informacije o korištenju naredbe
cd putanja – mapa zadana u putanji postaje aktivnom mapom
ls putanja – ispis sadržaja mape u putanji
ls -l putanja – detaljniji ispis po retcima
pwd – ispis putanje aktivne mape
mkdir putanja – stvaranje nove mape
rmdir putanja – brisanje mape
mv putanja1 putanja2 – premještanje i preimenovanje datoteke
cp putanja1 putanja2 – kopiranje i preimenovanje datoteke
(mv ili cp) -i – interaktivni način rada, korisnik dobiva upozorenja
(mv ili cp) -u – izvrši naredbu samo ako je odredišna datoteka/mapa starija od izvorne ili ne postoji
cat – ispis sadržaja ili promjena sadržaja datoteke
cat > – izmjena sadržaja datoteke
wc – ispis broja redaka, riječi i znakova dobivenih na ulazu
wc -l -w -m – ispis broja linija, riječi, znakova dobivenih na ulazu
echo – ispis teksta dobivenih na ulazu

sudo -i – superuser način rada
exit – izlazak iz Terminala ili superuser načina rada
clear – brisanje upisanih linija u Terminalu

.. – prvi naddirektorij aktivne mape
. – aktivna mapa
~ – home mapa
/ – korijenski (root) direktorij

> – prosljeđivanje izlaza naredbe u datoteku
>> – nadodavanje izlaza naredbe na sadržaj datoteke
< – prosljeđivanje datoteke na ulaz naredbe
| – prosljeđivanje izlaza prve naredbe na ulaz druge

Ctrl + Shift + C – kopiranje teksta iz Terminala
Ctrl + Shift + V – lijepljenje teksta u Terminal
Ctrl + Z – slanje prekidnog signala, aktivna naredba prekida s radom
Strelice gore i dolje – “putovanje” kroz prethodno upisane naredbe
Tab – dovršavanje upisivanja naredbe ili argumenta
Tab Tab – ukoliko je dovršavanje nejednoznačno, ispis svih mogućnosti dovršavanja
# – ovim znakom se započinje pisanje komentara

 

Piše: J.U.

Komentiraj