U svim operativnim sistemima koje se temelje na UNIX-u, konzola (terminal) se upotrebljava u velikoj meri (u osnovi ne koristi se izvorna konzola, već shell - spoljašnji sloj koji omogućava interakciju korisnika sa konzolom).
Većina distribucija Linux-a ima malo grafičkih alata koji se koriste za podešavanje i održavanje sistema, tako da se veliki broj operacija mora vršiti iz konzole, jednostavnim unošenjem komandi preko tastature. Stoga, da bi uspešno mogli raditi na jednom Linux operativnom sistemu, svakako je potrebno dobro poznavati konzolu. Konzole većine operativnih sistema zasnovanih na UNIX-u koriste BASH shell (Bourne Again Shell).
Da biste ispratili ovaj kurs biće vam potreban kompjuter sa Ubuntu operativnim sistemom ili nekom drugom verzijom Linux distribucije.
Kako instalirati ovu verziju Ubuntu sitemaŠta znači kada se kaže da se ukuca komanda u terminal, komandnu liniju ili shell?
Uglavnom, misli se na istu stvar i termini se koriste ravnopravno.
Medjutim na modernim Linux sistemima, postoji mala praktična razlika.
Kao imenica, terminal ima mnoga značenja: “kombinacija tastature I izlaznog uređaja pomoću
kojih se podaci mogu unositi ili se preko računara ili nekog
elektronskog komunikacionog sistema mogu prikazivati”
Čoveku je potreban interfejs za unos informacija u računar I čitanje izlaznih podataka.
Ulazni uredjaji uglavnom obuhvataju tastaturu, miš I mikrofon,
dok izlazni uredjaji uključuju monitor I zvučnik. Obično se nazivaju perifernim uredjajima.
U svetu Linux-a, ulazni I izlazni uredjaji se nazivaju terminali - okruženje za unos i izlaz teksta.
Terminal je program koji vam omogućava da pokrenete shell, uredjaj sa ekranom čitljivim ljudima koji
prihvata niz znakova i prikazuje ih.
Konzola je vrsta interfejsa. Razlikuje se od grafičkog interfejsa po odsustvu
grafičkih elemenata odnosno prozora, dugmadi, polja za opcije...
Umesto otvaranja prozora i kliktanja na polja za potvrdu, u konzoli se podešavanja menjaju
izmenom datoteka u kojima se podešavanja čuvaju, a komande zadaju kucanjem naziva komandi i
sažetih podešavanja.
Konzola je fizički terminal koji je primarni terminal direktno povezan sa mašinom.
To je prozor u kome su aktivni vaši programi u tekstualnom režimu.
Konzola i terminal se često koriste kao sinonimi na ličnim računarima.
Terminal je, u stvari samo mehanizam za prenos informacija. Da bi te informacije razumeo
operativni sistem, potreban nam je shell.
Shell (interpreter komandne linije)u Linux -u je program koji tumači komande koje unosite
u prozor terminala i daje rezultate, tako da operativni sistem može da razume ono što želite
da uradite.
Za razliku od korisnika, shell ima pristup jezgru. Korisnici mogu da dobiju pristup jezgru
samo korišćenjem shell-a i unosom odgovarajućih komandi.
Najčešći shell je Bash shell, o kome ćete kasnije čitati, ali postoje više varijanti; Ubuntu
koristi Dash shell, a neki korisnici preferiraju Fish ili ZSH shell.
Da biste proverili koji tip vi koristite, pokrenite sledeću komandu:
$ echo $0
Na Ubuntu 18.04 sistemu možete pokrenuti terminal kliknuvši na Activities
dugme u gornjem levom uglu ekrana i nakon toga kucajući prvih par slova reči
“terminal”, “command”, “prompt” ili “shell”
(developeri su za pokretanje omogućili upotrebu svih najčešćih sinonima)
Ako ne možete pokrenuti Terminal na ovaj način, ili samo želite brži način za
pokretanje, večina Linux sistema koriste istu prečicu na tastaturi za pokretanje:
Ctrl-Alt-T.
Kako god da ste pokrenuli terminal, dobićete prozor jednostavnog
izgleda sa tekstom u gornjem levom uglu, i velikim delom za kucanje teksta.
U zavisnosti od vašeg sistema boje će biti drugačije i tekst će se razlikovati.
Generalno, kada ukucate komandu, ona se pojavi u istom redu kao i početni tekst.
Taj tekst je tu da bi vam rekao da je kompjuter spreman da prihvati komandu,
tako vas on obaveštava (na engl. prompting). Zato se taj tekst
obično zove prompt.
Na prompt možemo da gledamo kao obaveštenje da postoji linija u terminalu
gde možete kucati komandu (tj. komandna linija).
Još jedna bitna stvar je, da kada pokrenete komandu, bilo koji output će se,
obično videti direktno na terminalu. Nakon toga, kada je izvršavanje komande završeno, prikazaće vam se još jedan prompt u narednoj liniji.
Neke komande će prikazati dosta teksta, dok druge kao output
neće prikazati ništa.
Sada tu možete pisati svoje komande.
Komada je program koji juniksolikim sistemima govori
da nešto urade.
Opšta forma svake Linux komande je:
$ command [opcije] [argumenti]
[argumenti]- lista fajlova, ili samo jedan fajl koji
govori na čemu se komada primenjuje; u zavisnosti od vrste fajlova
komanda će se izvršavati na različite načine
[opcije] - uglavnom im prethodi crtica (-), kada se navedu menjaju
način izvršavanja komande
Za većinu komandi može se navesti više od jedne opcije u formi:
$  command -[opcija] [opcija] [opcija]
ili
$  command -opcija1 -opcija2 -opcija3
⇀ komande su case-sensitive, tj pravi se razlika u velikim i malim
slovima u nazivu
⇀ Postoje konvencije za komande, ali ne prate sve Linux komande
standard - neke ne zahtevaju crticu ispred opcija,a kod nekih ne možete
da grupišete opcije
Postoje korisne prečice koje vam mogu uštedeti dosta vremena u kucanju, ako fajlovi imaju slična imena:
• upitnik (”?”) se koristi da označi “bilo koji karakter” u imenu fajla
• zvezdica (”*”) se koristi da označi “nula ili više karaktera”
⇀ Opcije i sintaksa za svaku komandu su izlistane na man stranici za tu komandu.
Man stranica (manual page) je dokumentacija softvera za juniksolike
operativne sisteme, dostupna je on-line kako bi detaljnije objasnila
korišćenje sistema i komandi.
Da bi iskoristili man stranicu, treba ukucati
`man` i
komandu za koju želimo dokumentaciju u terminal.
Sintaksa:
$  man [opcije] ime_komande
Najčešće opcije:
$ man -f [ime_komande]
⇀ daje nam broj sekcije u kojoj je komanda prisutna
$ man -a [ime_komande]
⇀ vraća sve man stranice navedene komande sukcesivno
$ man -k [ime_komande]
⇀ pretražuje navedenu komandu kao regularni izraz u svim man stranicama i vraća sve one, sa brojem sekcije u kome je pronadjena
$ man -w [ime_komande]
⇀ vraća lokaciju gde se man stranica za navedenu komandu nalazi
$ man -I [ime_komande]
⇀ komanda čije ime se navodi postaje `case-sensitive`
Sve man stranice imaju uobičajeni raspored sa sekcijama:
NAME - ime komande ili funkcije, praćeno
jednolinijskim opisom šta komanda radi
SYNOPSIS - formalni opis kako pokrenuti
komandu i koje opcije može imati, za programske funkcije, daje listu parametara
funkcije i koji fajl sadrži njenu deklaraciju
DESCRIPTION - tekstualni opis funkcionalnosti
komande ili funkcije
EXAMPLES - neki primeri uobičajene upotrebe
SEE ALSO - lista povezanih komandi i funkcija
Takodje, i druge opcije mogu biti prisutne: OPTIONS,
EXIT STATUS, RETURN VALUE, ENVIRONMENT, BUGS, FILES, AUTHOR, REPORTING BUGS,
HISTORY i COPYRIGHT.
Kako je uputstvo podeljeno na sekcije, ova komada se koristi kako bismo videli samo
specifičnu, traženu sekciju čiji broj navodimo ispred imena komande:
$ man  [broj_sekcije] [ime_komande]
Linux sistem fajlova je drvolike strukture i počinje od korena .
Koreni (`root`) direktorijum sistema je predstavljen znakom (/).
Sistemski i korisnički direktorijumi su organizovani pod korenim.
Korisnik nema koreni direktorijum u Linux-u, te se korisnici loguju na svoj home direktorijum, pod njim mogu stvarati druge direktorijume.
Sledeća tabela opisuje glavne komande za navigaciju i kontrolu fajl sitema:
cd [direktorijum] | menjamo direktorijum |
ls [opcije] [direktorijum ili fajl] | prikazujemo sadržaj direktorijuma ili fajla |
mkdir [opcije] direktorijum | pravimo direktorijum |
pwd | štampamo trenutni (radni) direktorijum |
rmdir [opcije] direktorijum | uklanjamo direktorijum |
pwd komanda
(‘print
working
directory’)
stampa trenutni radni direktorijum u kojem se korisnik nalazi,
nema nikakvih dodatnih argumenata
Kliknite mišem na prozor da biste bili sigurni da ćete tu otkucati vaš tekst.
Kada otkucate komandu u terminal:
Trebali biste da vidite odštampan put do direktorijuma
/home/vaše_korisničko_ime i ponovljen tekst sa početka.
Šta je radni direktorijum?
Ako pokušate da napravite nove fajlove ili direktorijume,
da pogledate postojeće ili da ih obrišete, shell
pretpostavlja da ih tražite u trenutnom radnom direktorijumu,
osim ako ne naglasite drugačije. Zato je veoma bitno da
znate u kom direktorijumu je shell u svakom trenutku .
cd komanda
(‘change
directory’) menja
trenutni radni direktorijum, na direktorijum koji
navodimo kao agument, kucanjem:
$ cd  [direktorijum]
Ova komanda radi i sa relativnim i sa apsolutnim putanjama podjednako.
Primer:
Recimo da želimo da dodjemo do “etc” foldera (on se nalazi u korenu fajl sistema)
Ako ste već u korenom direktorijumu sve će raditi odlično. (slika 1)
Ali ako niste, dobićete grešku “No such file or directory”. (slika 2)
Zaključak: Promena direktorijuma navodjenjem imena, ili korišćenje .. će imati različite efekte u odnosu na to gde se nalazite u tom trenutku. Putanja ima smisla samo relativno u odnosu na vaš radni direktorijum.
Svaka putanja koja počinje sa /
je apsolutna putanja.
(Možete je zamisliti kao da kažete “prebaci se na koreni direktorijum,
i odatle prati putanju” ).
Tako se mnogo lakše prebacujemo na recimo etc direktorijum,
bez obzira na to gde smo trenutno u fajl sistemu.
Prečica ~
Korišćenje karaktera tilda ~ na početku vaše putanje,
znači da počinjete od vašeg home direktorijuma.
Primeri:
1.
Narednom komandom naš radni direktorijum postaje “/”,
baza fajl sistema (root). Odatle sve se grana u drvo
direktorijuma i poddirektorijuma.
$ cd /
2.
Iz korenog direktorijuma, sledeća komanda će vas
premestiti u “home” direktorijum, koji je prvi
poddirektorijum “/”:
$ cd home
3.
Da bi prešli u roditeljski direktorijum nazad,
u ovom slučaju u “/”, koristimo dve tačke (..)
kada menjamo direktorijum (izmedju cd i ..
mora postojati razmak).
$ cd ..
4.
Možete koristi .. više od jednom, ukoliko
želite da se krećete kroz više nivoa
roditeljskih direktorijuma
$ cd ../..
5.
Ukolko samo otkucate cd to vas vodi ponovo
na vaš “home” direktorijum.
$ cd
mkdir komanda
(‘make
directory’) -
omogućava korisnicima da naprave nove direktorijume,
a možemo napraviti i više (pod)direktorijuma odjednom
$ mkdir [opcije] direktorijum
Primer:
Pravimo direktorijum tutorial direktno u direktorijumu /tmp
koristeći apsolutnu putanju, i pozicioniramo se u njemu komandom:
$ mkdir /tmp/tutorial
$ cd /tmp/tutorial
Bez / na početku, mkdir komanda bi probala da nadje tmp direktorijum u trenutnom radnom direktorijumu, i onda da napravi direktorijum tutorial u njemu. Ako ne bi pronašla tmp folder, komanda se ne bi izvršila.
$ mkdir dir1 dir2 dir3
Ova komanda stvara tri podirektorijuma u našem radnom direktorijumu.
Ovde vidimo da mkdir komada može raditi sa više argumenata, a svakako zahteva bar jedan. Sa druge strane, komanda cd može raditi bez argumenata, ili samo sa jednim.
mkdir komada je napravila sve direktorijume u jednom direktorijumu tutorial. Nije stvorila dir3 u dir2 u dir1, ili bilo koju ugnježdenu strukturu. Ali nekad mi to baš želimo, i mkdir komanda ima opciju -p za to:
$ mkdir -p dir4/dir5/dir6
Sada je samo dir4 dodat u listu, jer je dir5 u njemu, a dir6 u dir5.
Šta ako želimo da napravimo folder koji ima dva imena?
Ako želimo da radimo sa razmacima u imenima fajlova moramo da ih eskejpujemo
(koristeći navodnike ili beksleš \)
ls komanda (list) - koristimo je da bi videli sadržaj našeg trenutnog radnog direktorijuma (ukoliko ne navedemo ni jedan argument), a ako želite da vidite sadržaj nekog drugog ukucajte komandu ls i apsolutnu putanju do ciljnog direktorijuma
$ ls [opcije] [argumenti]
Najčešće opcije:
$ ls -R
⇀ izlistaće sve fajlove u poddirektorijumima takodje
$ ls -a
⇀ prikazaće sve skrivene fajlove
$ ls -d
⇀ izlistaće samo imena direktorijuma, ne i fajlova u direktorijumu
Stvaranje fajlova korišćenjem redirekcije
Ukoliko, recimo, želite da sačuvate output komande ls kao tekstualni fajl, kojim bismo kasnije mogli manipulisati, sve što treba da uradite jeste da na kraju komande dodate znak > praćen imenom fajla u koji želite da pišete.
$ ls > output.txt
Nakon ove komande nemamo ništa ispisano na ekranu, jer se output preusmerava u fajl čije ime navodimo iza > i koji se kreira tom naredbnom.
rmdir komanda (`remove directory`) - briše prazan direktorijum; ako nije prazan, moramo prvo ukloniti fajlove koje sadrži.
Ne možemo ukloniti trenutni radni direktorijum, već se prvo moramo pozicionirati van njega
$ rmdir direktorijum
Fajlsistem je obuhvata kolekciju fajlova i foldera. Odredjuje kako se podaci čuvaju.
Linux sistem je drvolika struktura koja se sastoji od mnogo direktorijuma - fajlovi koji sadrže listu drugih fajlova.
Linux, u stvari ne pravi razliku izmedju fajlova i direktorijuma, te su svi fajlovi podeljeni na:
1. Obične fajlove - sadrže podatke, tekst, slike, instrukcije programa
2. Specijalne fajlove - daju dozvolu za korišćenje hardverskih uredjaja
3. Direktorijume - sadrže obične i specijalne fajlove
Da bi imali u vid u fajlsistem našeg Linux sistema, koristimo komandu ls - l.
Prva kolona predstavlja tip fajla i dozvole za fajl. Svaki red fajla počinje tipom fajla, a zatim navodi dozvole pristupa koje su povezane sa fajlovima.
Postoje sledeći tipovi datoteka, kojima su pridruženi znakovi u zagradi:
- Običan fajl (-)
- Imenik (d)
- Veza (l)
- Posebna datoteka (c)
Druga kolona predstavlja broj memorijskih blokova koje fajl zauzima.
Treća kolona predstavlja vlasnika datoteke ili superkorisnika, koji ima administrativnu moć.
Četvrta kolona predstavlja grupu vlasnika/superkorisnika.
Peta kolona predstavlja veličinu datoteke.
Šesta kolona predstavlja datum i vreme kada je datoteka kreirana ili poslednje izmenjena.
Poslednja kolona predstavlja ime datoteke ili direktorijuma.
Dozvole za fajlsistem
Operativni sistem zasnovan na Linux-u zahteva dozvole za fajlove da bi obezbedio svoj fajlsistem. To radi pomoću dva atributa autorizacije:
1. Dozvole
2. Vlasništvo
Postoje tri tipa dozvola:
1. Dozvola za čitanje (r) pomoću koje možete pregledati sadržaj fajla.
2. Dozvola za pisanje (v) pomoću koje možete menjati sadržaj fajla.
3. Dozvola za izvršavanje (k) pomoću koje se može pokrenuti fajl ili skript
Postoje tri tipa korisnika Linux-a:
1. Vlasnik je superkorisnik koji kreira fajl. On može pristupiti svim dozvolama povezanim sa datotekom koja uključuje čitanje, modifikovanje i pokretanje datoteke.
2. Grupa je skup korisnika ili više korisnika. Superkorisnik ga kreira. Svaki član grupe ima iste dozvole pristupa povezane sa datotekom.
3. Drugi korisnici, odnosno korisnici treće strane mogu biti bilo ko drugi ko ne pripada Superkorisniku / članovima grupe, i koriste njihove dozvole.
Promena dozvola
Možete promeniti dozvole korišćenjem chmod komande
$ chmod [class][operator][permission] file_name
$ chmod [ugoa][+or-][rwx] file_name
class- predstavljena indikatorima - u(korisnik), g(grupa), o(ostali) i a(klasa)
operator (+ ili -) - koristi se da se da ili oduzme dozvola
permission (dozvola) - predstavljena je indikatorima r, v, k da bi se omogućio pristup za čitanje, modifikovanje ili pokretanje skripta.
Primer:
Posmatramo označeni red:
− Prvi slot (-) predstavlja datoteku pod nazivom PythonTutorial.pdf
−Sledeća tri slota (rw-) određuju dozvole koje koristi vlasnik. Ove dozvole uključuju čitanje i pisanje. Dozvola za izvršenje odbijena.
−Sledeća tri slota (rw-) određuju dozvole koje koriste članovi grupe koji poseduju direktorijum. Ove dozvole uključuju čitanje i pisanje, ali ne uključuju dozvolu za izvršavanje.
−Sledeća tri slota (r--) određuju dozvole koje koriste korisnici sa strane. Ove dozvole uključuju dozvolu samo za čitanje. Ovde, pisanje i izvršavanje je odbijeno
Menjamo dozvole za naš fajl:
1. Dodajemo denied dozvolu za sve klase
2. Brišemo dozvolu za pisanje i čitanje za druge klase
chgrp [direktorijum] | menja grupu fajla |
chmod [opcije] fajl | menja pristupne dozvole fajla ili direktorijuma |
chown [opcije] vlasnik_fajla | menja vlasništvo nad fajlom; može je koristiti samo superkorisnik |
cp [opcije] fajl1 fajl2 | kopira fajl1 u fajl2; komada pravi ili prepisuje fajl2 |
mv [opcije] fajl1 fajl2 | premešta fajl1 u fajl2 |
rm [opcije] fajl | uklanja (briše) fajl ili direktorijum |
cp komanda (`copy`) - kopira fajlove, grupu fajlova ili direktorijum; stvara identičnu kopiju fajla, ali su oni potpuno nezavisni pa možete menjati bilo koji po potrebi; zahteva bar dva imena fajla kao svoje argumente
Način izvršavanja ove komande zavisi od broja i tipa argumenata koji su joj prosleđeni.
1. argumenti su dva fajla - tada se sadržaj prvog fajla koji je naveden kopira u drugi fajl, ako drugi ne postoji, onda prvi fajl stvara drugi, a ako postoji njegov sadržaj se prepiše sadržajem prvog fajla
$ cp izvorni_fajl destinacija
Primer: Ako na Desktopu imamo fajl a.txt, narednom komandom možemo napraviti njegovu kopiju - fajl b.txt
2. više argumenata - ako komanda ima jedan ili više argument koji predstavlja ime fajlova koje prati argument koji predstavlja ime direktorijuma (obavezno mora biti direktorijum na kraju), onda se sadržaj svakog od fajlova kopira u direktorijum čije je ime navedeno
$ cp izvorni_fajl1 izvorni_fajl2 izvorni_fajl3 direktorijum
Primer: Ako na Desktopu imamo fajlove a.txt i b.txt, ovom komandom možemo da ih kopiramo u datoteku koju ćemo nazvati new
Primetite da ne možemo kopirati fajlove u datoteku koja ne postoji, jer se ona, za razliku od fajla, neće sama stvoriti !
3. dva direktorijuma (kopiranje direktorijuma) - komanda kopira sve fajlove prvog navedenog direktorijuma u drugi (destinacija), stvarajući sve potrebne fajlove i direktorijume po potrebi.
Upotreba komande na ovaj način zahteva dodatnu opciju -R, da bi se naglasilo rekurzivno kopiranje direktorijuma
$ cp -R izvorni_direktorijum direktorijum_destinacija
Ponašanje komande zavisi od toga da li direktorijum_destinacija postoji ili ne. Ukoliko ne postoji, cp komanda ga pravi i kopira sadržaj izvorni_direktorijum - a rekurzivno. Ali ako postoji, onda kopija sadržaja izvorni_direktorijum-a postaje poddirektorijum direktorijum_destinacija.
Najčešće opcije:
$ cp -i (interactive)
⇀sa ovom opcijom sistem nas prvo upozorava pre nego što prepiše fajl koji je destinacija; ako pritisnete y onda komanda prepisuje fajl.
$ cp -b (backup)
⇀sa ovom opcijom komanda stvara backup fajla destinacije u istom folderu, samo sa drugačijim imenom i u drugačijem formatu.
Kopiranje pomoću * (wildcard)
Pretpostavimo da imamo puno tekstualnih fajlova (svi se završavaju sa .txt) i želimo da ih kopiramo u jedan direktorijum. Treba puno vremena da se fajlovi kopiraju jedan po jedan, ali korišćenjem * postupak se dosta pojednostavljuje.
mv komanda ('move') - koristi se za preimenovanje i premeštanje fajlova i direktorijuma iz jednog u drugi
$ mv [opcije] izvorni_fajl fajl(direktorijum)_destinacije
1. preimenovanje fajlova - ako želimo da promenimo ime kreiranom fajlu, u Linux sistemu to se radi komandom mv, u ovom slučaju su argumenti: fajl koji želite da preimenujete, i novi fajl čije ime želite da koristite na dalje.
Primer:
$ ls
$ a.txt b.txt c.txt d.txt
$ mv a.txt geek.txt
$ ls
$ b.txt c.txt d.txt geek.txt
Ako fajl_destinacije ne postoji, biće napravljen, a ako postoji, onda će samo biti prepisan i izvorni_fajl će biti obrisan.
2. premeštanje fajlova
$ mv a.txt dir1
Ovom komandom premeštamo fajl a.txt iz trenutnog radnog direktorijuma u folder dir1.
Sada ako želimo da premestimo fajl ipak u radni direktorijum. Da bismo izbegli promenu direktorijuma, možemo koristiti prečicu.
Kao što koristimo (..) za predstavljanje roditeljskog direktorijuma, tako jedna tačka (.) predstavlja trenutni radni direktorijum.
Pošto znamo da postoji samo jedan fajl u dir1 možemo samo da koristimo wildcart “*” za bilo koje ime fajla u tom direktorijumu.
Naša komanda je: ( postoji razmak ispred tačke, tj dva parametra funkcije mv).
$ mv dir1/* .
3. pomeranje više fajlova odjednom - ako prosledite više od dva argumenta, svi fajlovi(direktorijumi) će se premestiiti u poslednji naveden direktorijum
Jednom komandom ćemo premestiti a.txt, sve test_n.txt fajlove i dir3 u dir2.
$ mv a.txt test_* dir3 dir2
Najčešće opcije:
$ mv - i (interactive)
⇀sa -n opcijom, mv komanda sprečava postojeći fajl da bude prepisan
$ mv -b (backup)
⇀sa ovom opcijom, jednostavnije je da napravimo backup verziju postojećeg fajla koji će biti prepisan kao rezultat komande mv.
⇀napraviće se backup fajl sa karakterom tilda (~) na kraju naziva
rm komanda ('remove') - uklanjanje fajlova, s tim da jednom kada obrišete fajl nećete biti u mogućnosti da povratite njegov sadržaj.
Inicijalno, komanda rm ne može obrisati ceo folder, ali postoji opcija koja i to omogućava.
$ rm [opcije] fajl
Primer: Neka u datoteci postoje 5 fajlova: a.txt b.txt c.txt d.txt e.txt
$ ls
$ a.txt b.txt c.txt d.txt e.txt
Uklanjanje jednog po jednog fajla:
& rm a.txt
& ls
& b.txt c.txt d.txt e.txt
Uklanjanje više fajlova odjednom
& rm b.txt c.txt
& ls
& d.txt e.txt
Opcije:
$ rm -i (Interactive Deletion)
⇀radi na istom principu, kao kod cp komande npr.
$ rm -r (Recursive Deletion) direktorijum
⇀opcija -r (ili -R) će obrisati sve fajlove i poddirektorijume, rekurzivno, navedenog (roditeljskog) direktorijuma.
cat [opcije] fajl | za stvaranje, pregled, spajanje fajlova... |
echo [string] | ispisuje string koji je argument na standardni izlaz |
head [-broj] fajl | prikazuje prvih 10 (ili navedeni broj) linija fajla |
tail [opcije] fajl | prikazuje poslednjih 10 (ili navedeni broj) linija fajla |
cat komanda (‘concatenate’ - povezati medjusobno) - ova često korišćena komanda čita podatke iz fajlova i njihov sadržaj ispisuje u terminal; koristi se za stvaranje, pregled, spajanje fajlova itd.
Primeri:
1. da bi pregledali jedan fajl
- komada će kao output dati sadržaj navedenog fajla
$ cat ime_fajla
2. da bi pregledali više fajlova odjednom
- komada će prikazati sadržaj svih navedenih fajlova, kao jedinstvene blokove teksta
$ cat ime_fajla1 ime_fajla2 ime_fajla3
3. da bi pregledali sadržaj fajla do odredjenog broja linija (n)
$ cat -n ime_fajla
4. da bi stvorili fajl
- stvara fajl sa imenom koji prosledjujemo kao argument komande
$ cat > ime_novog_fajla
5. da bi kopirali sadržaj jednog fajla u drugi
$ cat ime_fajla1 > ime_fajla2 ( destinacija)
6. da bi nadovezali sadržaj jednog fajla na sadržaj drugog
$ cat fajl1 >> fajl2
7. da bi prikazali sadržaj fajla u obrnutom redosledu, koristeći komandu tac
$ tac ime_fajla
8. da bi spojili sadržaj više fajlova u jedan fajl
- spajamo sadržaj svih navedenih fajlova u fajl koji je poslednji naveden
$ cat fajl1 fajl2 fajl3 > spojeni_fajlovi
9. da bi pisali u već postojećem fajlu
- ova komada dopisuje tekst na kraj fajla
$ cat >> fajl
Tekst koji se dodaje
echo komanda - koristi se za prikazivanje linije teksta/string koji su prosleđeni kao argumenti
$ echo [option] [string]
Najčešće opcije:
! opcija -e omogućava pravilno tumačenje beksleša
• \b - uklanja sve beline izmedju teksta
• \n : - stvara novu liniju tu gde se koristi
• \t : - stvara horizontalni tab razmak
• \v : - stvara vertikalni tab razmak
• echo * : - štampa sve fajlove/direktorijume, slično komandi ls
head komanda - ispisuje prvih N linija fajla koji se navodi kao argument; ukoliko broj linija nije naveden štampa prvih 10 linija teksta.
$ head [opcije] fajl
Najčešće opcije:
$ head -n broj fajl
⇀štampa onoliko prvih linija fajla koji je broj naveden, umesto prvih 10
$ head -c broj fajl
⇀štampa prvih nekoliko bajtova fajla u zavisnosti od navedenog broja
tail komanda - komplement head komande; ispisuje poslednjih N linija fajla koji navodimo kao argument; ukoliko broj linija nije naveden štampa poslednjih 10 linija teksta.
$ tail [opcije] fajl
Najčešće opcije:
$ tail -n broj fajl
⇀štampa onoliko poslednjih linija fajla koji je broj naveden, umesto prvih 10
⇀komanda se može napisati i bez `-n` karaktera ali `-` mora da stoji
$ tail +n fajl
⇀štampa sadržaj fajla od navedenog broja linije pa do njegovog kraja
$ tail -c broj fajl
⇀štampa poslednjih nekoliko bajtova fajla u zavisnosti od navedenog broja ako navedemo negativan broj nakon karaktera -c
⇀ako navedemo pozitivan broj nakon karaktera -c, komanda prikazuje podatke nakon preskakanja prvih linija fajla jednakih navedenom broju
touch | za stvaranje fajla, može biti bilo šta od praznog tekstualnog fajla to praznog zip fajla Na primer: “touch new.txt”. |
locate | za lociranje fajla u sistemu, koristi se kada ne znamo gde je fajl sačuvan ili ne znamo ime fajla; ako koritimo opciju -i komda ignoriše mala i velika slova u nazivu fajla |
find | isto kao i komanda locate, koristi se za traženje fajlova i direktorijuma, uz razliku da se potraga vrši u datom direktorijumu |
grep | za pretraživanje teksta u datom fajlu Na primer: komanda grep plavo notepad.txt će tražiti reč plavo u fajlu notepad.txt |
df | za dobijanje izveštaja o upotrebi prostora na disku, u procentima ili kilobajtima ukoliko želimo rezultat u megabajtim koristimo opciju -m |
diff | poredi sadržaj dva fajla liniju po liniju i kada analizira fajlove, odštampa linije koje nisu iste (programeri često koriste ovu komandu kada vrše izmene na programu da ne bi ponovo pisali ceo izvorni kod) Na primer: diff file1.ext file2.ext |
kill | koristi se za prekidanje rada programa |
history | korisna ukoliko zelimo da pogledamo sve komande koje smo ranije koristili |
hostname | ako želite da znate ime vaše mreže ako želite da prikažete IP adresu vaše mreže ukucajte opciju -i |
zip, unzip | komanda zip kompresuje vaše fajlove u zip arhivu, a unzip ekstraktuje fajlove iz zip arhive |
• Možete koristiti komandu clear da očistite terminal, ukoliko se popuni sa previše komandi
• TAB možete koristiti da popunite terminal; npr samo ukucajte “cd Doc”, a zatim kliknite TAB i terminal ostatak popunjava sam i pravi komandu “cd Documents”
• Ctrl+C se koristi da se bezbedno zaustavi bilo koja komanda u terminalu ; ako se ne zaustavi time, onda se komanda Ctrl+Z može iskoristiti za nasilno zaustavljnaje programa
• Možete izaći iz terminala koristeći komandu exit
• Možete isključiti ili ponovo pokrenuti kompjuter koristeći komande sudo halt i sudo reboot
• Ctrl + Shift + C se koristi za kopiranje teksta iz konzole
• Ctrl + Shift + V se koristi za prenošenje teksta u konzolu
• možemo koristiti Up Strelicu i Down Strelicu da se krećemo kroz istoriju komandi koje smo koristili u terminalu do tada
Došli smo do kraja ovog dela kursa i sada bi trebali da se vratimo u svoj početni direktorijum (koristite pwd da proverite gde ste i cd da odete tamo ako niste).
Dobra praksa je ostaviti računar u istom stanju u kojem smo ga pronašli, pa za kraj treba ukloniti fajlove koje smo koristili u primerima, i da proverimo da li je nestala zaista:
$ rm -r /tmp/tutorial
& ls /tmp
Kao poslednji korak, treba zatvoriti terminal.
Možete zatvoriti prozor, ali je bolje odjaviti se iz shell-a. U te svrhe možete koristiri komandu za odjavu (logout) ili Ctrl-D prečicu na tastaturi.
Jedan dobar razlog za učenje osnovnih komandi je što instrukcije koje možete naći na internetu favorizuju upotrebu komandi shell-a u odnosu na GUI.
Neka uputstva zahtevaju promene na vašoj mašini, koje prevazilaze npr. izmene nekoliko datoteka u home direktorijumu, te ćete se neizbežno susresti sa komandama koje treba da pokrećete kao administrator mašine (na Unix jeziku superkorisnik).
Superkorisnik može da :
⇀izmeni ili izbriše bilo koju datoteku u bilo kom direktorijumu na sistemu
⇀prepiše pravila zaštitnog zida ili da pokrene mrežne usluge koje bi potencijalno mogle da otvore mašinu za napad
⇀isključi mašinu čak iako je drugi ljudi još uvek koriste
Ukratko, superkorisnik može da uradi skoro sve, lako preskačući zaštitne mere koje se obično postavljaju
Da bi se smanjile moguće greške koje superkorisnik može da napravi, mnoge Linux distribucije podstiču upotrebu komande su (skraćenica od superuser), koja omogućava da se prebacite na drugog korisnika mašine, bez da morate da se izlogujete.
⇀kada se koristi bez argumenata, pretpostavlja se da želite da promenite nalog na root korisnika
⇀možete da prosledite kao argument korisničko ime i tada prelazite na odredjeni korisnički nalog
Cilj: administratori većinu svog vremena koriste normalan nalog, a prelaze na superkorisnika samo kada im je to potrebno, a zatim koriste komandu za odjavu ili Ctrl-D prečicu. Na taj način minimalizacijom vremena provedenog ulogovano kao root, smanjuje se mogućnost pravljenja katastofalne greške
Kada koristite su komandu, cela sesija terminala se prebacuje na drugog korisnika.
Medjutim, može da se dogodi da komande koje su potpuno benigne kada biste ih pokrenuli kao običan korisnik, mogu da unište ceo sistem ako se pokrenu kao root.
Zbog toga je najbolje da potpuno onemogućite root nalog, a da zatim umesto da dozvolite dugotrajne sesije u terminalu sa potencijalno rizičnim ovlašćenjima, da od korisnika zahtevate da posebno zahteva prava superkorisnika na osnovu svake komande. Za ovo se koristi komanda sudo (“switch user and do this command”)
sudo komanda se koristi za prefiks komande koja se mora pokrenuti sa privilegijama superkorisnika
Kada se pokreće komanda te vrste, od korisnika se traži lozinka, koja se kešira na odredjeni vremenski period (podrazumevano 15 min), tako da ako treba da se pokrene više komandi na nivou superkorisnika, ne dobijaju stalno molbu da je ukucaju.
Na Ubuntu sistemu, prvi korisnik stvoren kada je sistem instaliran smatra se superkorisnikom. Prilikom dodavanja novog korisnika postoji opcija da ih kreirate kao administratora, u kom slučaju će oni takođe moći da pokreću komande superkorisnika sa sudo. Na ovom snimku ekrana Ubuntu 18.04 možete videti opciju na vrhu dijaloga
Pod pretpostavkom da smo na Linux sistemu koji koristi sudo komandu, a naš nalog je konfigurisan kao administrator, ako želimo da pristupimo datoteci koja se smatra osetljivom (sadrži šifrovane lozinke):
Ako unesemo lozinku kada se to zatraži, trebalo bi da vidimo sadržaj datoteke /etc/shadow. Sada ako obrišemo terminal pokretanjem komande za resetovanje i ponovo pokrenemo sudo cat /etc/shadow. Sada će datoteka biti prikazana bez traženja lozinke, jer je ona još uvek u kešu.
Glavna upotreba sudo komande je za instaliranje novog softvera za naš sistem pomoću komandi apt ili apt-get.
Postoji mnogo različitih načina za instaliranje softvera na Linux sistemima. Instaliranje direktno iz zvaničnih skladišta softvera vaše distribucije je najsigurnija opcija, ali ponekad aplikacija ili verzija koju želite jednostavno nije dostupna na taj način. Kada instalirate preko bilo kog drugog mehanizma, uverite se da dobijate datoteke iz zvaničnog izvora.
Skriveni fajlovi se obično koriste u Linux sistemima za čuvanje podešavanja i konfiguracionih podataka i obično su skriveni jednostavno tako da ne ometaju prikaz vaših sopstvenih fajlova.
Nema ničeg posebnog u vezi sa skrivenim fajlom ili folderom, osim njenog imena: započinjanje imena sa tačkom (”.”) je dovoljno da nestane.
kada drugi put pokrenete komandu ls, skriveni fajl .navodnici.sh se neće prikazati
Još uvek možete da radite sa skrivenim fajlom tako što ćete se pobrinuti da uključite tačku kada navedete ime njegovog fajla:
Direktorijum .skriveni je skriven. I dalje možete da vidite njegov sadržaj koristeći komandu ls, ali on sadrži samo jednu datoteku koja je sama po sebi skrivena, tako da neće biti outputa.
Ali možete da koristite opciju -a (prikaži sve) na ls da biste prikazali sve u direktorijumu, uključujući skrivene datoteke i fascikle: