KONZOLA Uvod Razlika izmedju terminala, konzole i shell-a? ⇀ Terminal - interfejs izmedju čoveka i kompjutera ⇀ Šta je konzola, čemu služi i kako se koristi? ⇀ Shell Pokretanje konzole na vašem sistemu ⇀ Šta je komanda konzole? ⇀ Traženje pomoći Komande za navigaciju i kontrolu ⇀ pwd komanda i lokacija ⇀ cd komanda ⇀ Relativne i apsolutne putanje ⇀ mkdir komanda ⇀ ls komanda ⇀ rmdir komanda ⇀ Fajlsistem i dozvole Komande za upravljanje fajlovima ⇀ cp komanda ⇀ mv komanda ⇀ rm komanda Komande za prikazivanje fajlova ⇀ cat komanda ⇀ echo komanda ⇀ head komanda ⇀ tail komanda Još neke komande konzole Trikovi za korišćenje komandne linije Čišćenje Komandna linija i superkorisnik ⇀ Instaliranje novog softvera Skriveni fajlovi





KONZOLA

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).

Uvod

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


Razlika izmedju terminala, konzole i shell-a?

Š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.


Terminal - interfejs izmedju čoveka i kompjutera

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.


Šta je konzola, čemu služi i kako se koristi?

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.


Shell

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

Pokretanje konzole na vašem sistemu

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.

Pokretanje


Pokretanje 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.

Šta je komanda konzole?

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.

Traženje pomoći

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

Pokretanje


$  man -a [ime_komande]

vraća sve man stranice navedene komande sukcesivno

Pokretanje


$  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

Pokretanje


$  man -I [ime_komande]

komanda čije ime se navodi postaje `case-sensitive`

Pokretanje


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]

Komande za navigaciju i kontrolu

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 i lokacija

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:

Pokretanje 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

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.

Relativne i apsolutne putanje



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)

Pokretanje Pokretanje

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.

Apsolutna putanja 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.

Apsolutna putanja 2

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

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.

mkdir

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?

mkdir2

Ako želimo da radimo sa razmacima u imenima fajlova moramo da ih eskejpujemo (koristeći navodnike ili beksleš \)

putanje

ls komanda

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

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 i dozvole

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.
fajlstream


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:
fajlstream1


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
dozvole


  2. Brišemo dozvolu za pisanje i čitanje za druge klase
dozvole2


Komande za upravljanje fajlovima

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

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

cp

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 !

cp

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.

cp

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

$  cp  -b (backup) sa ovom opcijom komanda stvara backup fajla destinacije u istom folderu, samo sa drugačijim imenom i u drugačijem formatu.

cp

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

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

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.

Komande za prikazivanje fajlova

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

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

echo komanda - koristi se za prikazivanje linije teksta/string koji su prosleđeni kao argumenti

$ echo [option] [string]

echo

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

echo2


head komanda

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

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

Još neke komande konzole

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


Trikovi za korišćenje komandne linije

   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

Čišćenje

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.

Komandna linija i superkorisnik

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

su


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):

sudo

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.

Instaliranje novog softvera

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

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

sudo

Još uvek možete da radite sa skrivenim fajlom tako što ćete se pobrinuti da uključite tačku kada navedete ime njegovog fajla:

sudo

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:

sudo