nav_dugme codeBlog codeBlog
  • početna Početna stranica
  • Sačuvani članci Sačuvani članci
  • Članci
     (spisak)
  • Kontakt
Povratak na vrh stranice

Info & povezani članci Info o članku - dugme

Info

trejler_sat Datum objave: 01.09.2022.

trejler_olovka Poslednja izmena: 18.05.2024.

trejler_dokument Jezici: Shell

trejler_teg_narandzasti Težina: 6/10

linux
gnu/linux
unix
open source
slobodni softver
Shell
komandna linija
datoteke
obrada teksta
teorija
saveti
zanimljivosti

Tema: GNU/Linux

1. deo - Uvod3. deo – Napredne komande4. deo – Shell skripte i automatizacija procesa

Povezani članci

ASCII, Unicode i UTF - Predstavljanje znakova na računarimaUNIX Time - Predstavljanje datuma i vremena na računarimaIzbor prvog programskog jezikaRegularni izrazi - napredna pretraga tekstaPokretanje lokalnog web serveraUvod u PythonPostfiksna notacija - kako računari računaju?Operacije sa tekstualnim datotekama u programskim jezicima C i PythonŠablonske niske u programskim jezicimaCallback funkcije i lambda izraziOperacije sa bitovima u programskom jeziku CKako napraviti syntax highlighter
Svi članci
In programming,the hard part isn't solving problems, but deciding what problems to solve.
Paul Graham

GNU/Linux - 2. deo - Osnovne komande

Facebook LinkedIn Twitter Viber WhatsApp E-mail
zoom_plus zoom_minus bookmark
početna > Članci > Teorija

Uvod

Nakon uvoda u tematiku GNU/Linux distribucija (i nakon pravilnog 'taloženja inormacija' pre preduzimanja daljih koraka), sledi upoznavanje sa osnovnim komandama za administraciju sistema.

Osnovne komande na UNIX-olikim operativnim sistemima veoma su zanimljive same po sebi (mi zaista tako smatramo i nismo jedini :)), međutim, sasvim je moguće da mnogi čitaoci neće deliti izneti entuzijazam na samom početku bavljenja Linux-om, i stoga - pre nego što se posvetimo izučavanju komandi - pokušaćemo da ponudimo praktičan način gledanja na stvari, koji vam možda nije padao na pamet do sada ....

Priprema ....

Sa jedne strane, osnovne komande (bilo kog) operativnog sistema, mogu delovati kao "gomila koječega, koja se ('eto') mora naučiti", ali, sa druge strane - u najpraktičnijem smislu - u pitanju su komande koje omogućavaju efikasno bavljenje 'konkretnijim' aktivnostima (programiranje, web dizajn, grafički dizajn i sl).

Shodno navedenom, predlažemo da osnovne UNIX komande (umesto kao "gomilu koječega"), radije shvatite kao "kolekciju dobro napisanih pomoćnih programa koji pouzdano obavljaju osnovne zadatke", odnosno (još praktičnije), predlažemo da savladavanje osnovnih komandi (umesto kao "kuluk"), shvatite isključivo kao dugoročnu investiciju u sopstveno obrazovanje - koja se i te kako isplati na duže staze.

Usput možemo primetiti i to da pomenuti način gledanja na stvari sasvim dobro dođe i onda kada neko unapred 'gaji simpatije' prema terminalu i osnovnim komandama, :) i (takođe/da još malo "postavimo stvari u perspektivu"), kada jednom naučite osnovne komande na Linux-u, koristićete ih 'godinama i godinama' (UNIX-olike komande na GNU/Linux distribucijama funkcionišu na približno isti način decenijama unazad, i verujemo da se neće mnogo menjati ni ubuduće).

Deluje da komandi ima "poprilično", međutim, pod uslovom da se trudite i da se postepeno upoznajete sa komandama (bez 'napinjanja' i želje da sve savladate "odmah i sad"), posle nekog vremena, shvatićete da (već) poznajete prilično veliki broj naredbi, opcija i podopcija; na primer, mnogo više nego što je prikazano u ovom članku, i shvatićete da sve (jednostavno rečeno), nije bilo 'toliko teško'.

U članku koji je pred nama, upoznaćemo se sa osnovnim komandama, a u narednim člancima pažnju ćemo posvetiti naprednijim konzolnim komandama za obradu teksta i principima funkcionisanja shell skripti.

Nekoliko važnih komandi opšteg tipa

Za sam početak (kao 'lagano zagrevanje' pre nego što pređemo na komande za rad sa datotekama i direktorijumima), prikazaćemo nekoliko važnih i korisnih komandi opšteg tipa.

man - uputstva za korišćenje programa

Moglo bi se reći da je prvo pitanje pri savladavanju (bilo koje) nove veštine: odakle "crpeti" informacije?!

U slučaju GNU/Linux distribucija i programa koji se pokreću pod Linux-om, prva (i gotovo uvek dostupna) opcija, podrazumeva čitanje dokumentacije koja dolazi uz same programe.

Druga opcija je traženje informacija online, a tu je naravno i razgovor sa kolegama/prijateljima/poznanicima koji su upućeni u tematiku.

Preko komande man (skraćeno od eng. "manual" - uputstvo), moguće je pristupiti uputstvu za upotrebu određenog programa:

		
$ man ls
		
	
Slika 1. - Primer upotrebe komande man.

Komanda koju smo naveli u gornjem primeru prikazaće uputstvo za upotrebu programa ls, ali - u opštem smislu - princip važi i za druge instalirane programe, uz koje tipično dolazi "man stranica" (eng. man page), posebno formatirana tekstualna datoteka koja se otvara preko komande man.

Ipak, da spomenemo (za svaki slučaj): uputstva se neće pročitati sama od sebe, to jest - čitanje uputstava je zadatak (svih) nas kao korisnika. :)

sudo (zadavanje root privilegija)

Druga komanda kojoj posvećujemo pažnju na početku, omogućava pokretanje komandi koje zahtevaju administratorske privilegije, ali (naravno), bez doslovnog prijavljivanja na administratorski (tj. "root") nalog.

Iako su korisničke privilegije tema kojoj ćemo tek posvetiti pažnju za prave (u jednom od kasnijih članaka), za početak je dovoljno da se podsetimo na sledeće pravilo: root nalog ne treba koristiti direktno tj. ne treba se prijavljivati na sistem preko root naloga (osim u retkim/izuzetnim situacijama), već za svakodnevnu administraciju treba koristiti obične korisničke naloge, ali - korisničke naloge kojima je dato pravo korišćenja komande sudo (ili, uprošćeno, obične korisničke naloge koji - po potrebi - mogu koristiti administratorske privilegije).

U praksi, kada određenoj komandi prethodi komanda sudo (Substitute User - Do), osnovna komanda se izvršava sa administratorskim privilegijama (ali, da ponovimo - samo pod uslovom da korisnik ima pravo da koristi komandu sudo): *

		
$ sudo reboot
		
	
Slika 2. - Primer upotrebe komande sudo, preko koje (u praktičnom smislu), regularni korisnici dobijaju administratorske privilegije pri pokretanju programa.

U gornjem primeru, poziva se komanda za restartovanje sistema (koja se na Linux-u zapravo ne može izvršavati bez administratorskih privilegija).

* U opštem smislu, korisnici na UNIX-olikim sistemima pripadaju grupama - i svaka grupa ima određene privilegije (čime ćemo se više baviti u članku koji ćemo posvetiti instaliranju Linux-a), pa ako je u datoteci /etc/sudoers definisano da grupa kojoj određeni korisnik pripada može koristiti komandu sudo, onda i korisnik može (po potrebi) pokretati programe koji zahtevaju root privilegije.

alias (prečice za pokretanje programa)

Treća komanda iz grupe 'uvodnih' komandi omogućava korisnicima da pozivaju programe korišćenjem alternativnih imena (koja biraju sami).

U praktičnom smislu, može se reći da je u pitanju način za definisanje tekstualnih prečica za komande, u okviru shell programa (najčešće: za komande koje su same po sebi (pre)dugačke, ili, za komande koje nisu (same po sebi) preobimne za kucanje, ali nisu ni "neobimne", i pri tom se koriste veoma često).

Recimo, ukoliko ustanovite da često postoji potreba da se prebacite u direktorijum /home/korisnik_1/kodovi/python (uzećemo za početak "nedrastičan" primer da ne bismo bez potrebe navodili putanje ili komande od stotinjak znakova), možete otvoriti datoteku ~/.bashrc, * i dodati sledeću liniju:

		
alias cdp='cd /home/korisnik_1/kodovi/python'
		
	
Slika 3. - Primer upotrebe komande alias (koja praktično predstavlja način za definisanje prečica u shell programima).

* Datoteka ~/.bashrc je konfiguraciona datoteka za program Bash.

Pošto restartujete terminal, komanda cdp imaće (nadalje) isto dejstvo kao i komanda cd /home/korisnik_1/kodovi/python.

(Kasnije ćemo prikazati još nekoliko sličnih primera.)

Komande za rad sa direktorijumima i datotekama

Pravilna upotreba direktorijuma i datoteka omogućava optimalno raspoređivanje podataka koje koristimo svakodnevno (izvorne datoteke, dokumentacija, slike, izvršne datoteke i sl), i svakako je neophodno biti što bolje upoznat sa komandama za rad sa direktorijumima i datotekama, i koristiti ih na što efikasniji način.

pwd - ispis naziva aktivnog direktorijuma

Komanda pwd (Print Working Directory), ispisuje naziv trenutno aktivnog direktorijuma.

		
[korisnik_1@codeblog ~] $ pwd
/home/korisnik_1
		
	
Slika 4. - Primer upotrebe komande pwd.

Može se reći da komanda pwd nema preveliki značaj u svakodnevnom radu (sama po sebi), budući da shell prompt tipično sadrži naziv aktivnog direktorijuma, ali, u pisanju shell skripti - dobro dođe.

Na ovom mestu, osvrnućemo se i na jednu korisnu prečicu: znak ~ (tilda) koristi se u shell programima (i inače u UNIX/Linux svetu), za označavanje home direktorijuma trenutno prijavljenog korisnika, što praktično znači da se putanja nalik na /home/korisnik_111 doslovno može zameniti putanjom ~ pri pisanju komandi; naravno - pod uslovom da se naredbe izvršavaju preko naloga korisnik_111.

Komandu pwd navodimo pre ostalih komandi, zarad ažurnosti (jer tipično se smatra da je u pitanju "najosnovnija" komanda za rad sa direktorijumima na Linux-u i srodnim operativnim sistemima), ali, u praktičnom smislu (kao što smo naveli), najverovatnije ovu komandu nećete koristiti neko vreme, dok ne počnete da pišete shell skripte (čime ćemo se pozabaviti u jednom od budućih članaka)

ls - prikaz sadržaja aktivnog direktorijuma

Komanda ls (skraćeno od eng. "List" - izlistati), prikazuje sadržaj aktivnog direktorijuma.

Ako se komanda ls pozove bez dodatnih opcija (i ako prethodno nije definisan alias koji menja smisao poziva "ls") ....

		
$ ls
		
	
Slika 5. - Poziv komande ls.

.... dobija se prost listing trenutno aktivnog direktorijuma:

		
dir1 dir2 datoteka_1.txt
		
	
Slika 6. - Primer listinga koji se dobija pokretanjem komande ls (bez dodatnih opcija).

Osnovni prikaz ima sledeće odlike:

  • nisu prikazane skrivene ("dot") datoteke
  • direktorijumi i datoteke su sortirani po imenima (pri čemu se direktorijumi ne prikazuju pre datoteka)
  • direktorijumi se ni po čemu (vizuelno) ne razlikuju od datoteka
  • prikaz je linijski (direktorijumi i datoteke su prikazani jedni pored drugih, umesto jedni ispod drugih)

Takozvane "dot datoteke" imaju nazive koji počinju tačkom (eng. dot), i tipično su u pitanju konfiguracione datoteke (a pošto i nazivi direktorijuma takođe mogu počinjati tačkom, takvi direktorijumi često sadrže upravo - konfiguracione datoteke).

Ukoliko se uz komandu ls ne koriste dodatne opcije, dot datoteke i direktorijumi se ne prikazuju, ali, to je "po dizajnu", budući da se smatra da skrivanje dot datoteka čini prikaz preglednijim.

Međutim, rekli bismo ipak da je elegantnije rešenje za problem (ne)preglednosti - dobra organizacija strukture direktorijuma, a ne skrivanje dot datoteka (više o svemu u nastavku).

Ukoliko je potrebno upriličiti prikaz koji podrazumeva tabelarnu strukturu i 'neskrivanje' dot datoteka i direktorijuma (a uključićemo i prikaz u boji i grupisanje direktorijuma i datoteka), komanda ls se poziva uz sledeće opcije:

  • -a (all) - prikaz svih datoteka i direktorijuma (uključujući i dot datoteke i direktorijume)
  • -l (list) - tabelarni prikaz datoteka i direktorijuma *
  • -h (human readable) - prikaz veličina datoteka na "prirodan" (tj. "ljudski") način, uz korišćenje jedinica kao što su Kilobajti, Megabajti i druge veće jedinice (u suprotnom, sve prikazane veličine su izražene u Bajtovima)
  • --color - korišćenje različitih boja pri označavanju direktorijuma i datoteka (u prikazu)
  • --group-directories-first - prikaz (svih) direktorijuma pre (običnih) datoteka

* Uz opciju -l, direktorijumi i datoteke se prikazuju "jedni-ispod-drugih" (sa dodatnim informacijama).

Kada se pozove sledeća naredba .....

		
$ ls -l -a -h --color -group-directories-first
		
	
Slika 7. - Komanda ls sa dodatnim opcijama.

.... pri čemu se poziv može dodatno uprostiti na sledeći način ....

		
$ ls -lha --color -group-directories-first
		
	
Slika 8. - Komanda ls sa dodatnim opcijama (uprošćen zapis).

.... kao izlaz u konzoli dobija se sledeći ispis:

		
drwxr-xr-x  2 user user 4.0K Sep 15 17:13 dir1
drwxr-xr-x  2 user user 4.0K Sep 15 15:46 dir2
drwx------ 41 user user 4.0K Sep  1 10:05 .config
-rw-------  1 user user    0 Aug  6 22:13 .user_dat
-rw-r--r--  1 user user 1.6K Jul 22 08:22 datoteka_1.txt
		
	
Slika 9. - Primer listinga koji se dobija pokretanjem komande ls sa prethodne slike.

Ukratko o privilegijama za pristup datotekama i direktorijumima

U niskama koje vidimo na početku svakog reda, definisane su privilegije različitih korisnika:

  • prvi znak označava da li je u pitanju datoteka ili direktorijum (- ili d)
  • u preostale tri rwx grupe (eng. read, write, execute - čitanje, pisanje, izvršavanje), definisane su privilegije vlasnika datoteke (ili direktorijuma), korisničke grupe kojoj pripada vlasnik, kao i privilegije ostalih korisnika

U 4. nastavku, detaljno ćemo predstaviti privilegije korisnika.

Za poziv sa slike #8 može se definisati i alias (koji se može upisati u datoteku ~/.bashrc):

		
alias ls='ls -lha --color --group-directories-first'
		
	
Slika 10. - Primer definisanja aliasa za komandu ls.

.... posle čega će prosto pozivanje komande ls podrazumevati:

  • prikaz u obliku tabele (uz korišćenje Kilobajta, Megabajta (i ostalih jedinica))
  • prikaz 'skrivenih' datoteka
  • korišćenje različitih boja za direktorijume i datoteke
  • grupisanje direktorijuma pre datoteka

Nije (naravno) obavezno, ali, većina korisnika Linux-a tipično ima podešen alias za pozivanje komande ls (kao i mnoge druge aliase).

Ukoliko je (u nekom kasnijem trenutku), zapravo potrebno pozvati komandu ls u izvornom obliku, može se kao prefiks dodati obrnuta kosa crta:

		
$ \ls
		
	
Slika 11. - Pozivanje komande ls u osnovnom obliku (u situaciji kada za komandu ls postoji alias).

Rezultat je isti ispis kao na slici #6.

U svemu je (naravno) moguće i ukinuti određeni alias:

  • privremeno - preko komande (npr: unalias ls)
  • trajno - uklanjanjem aliasa iz datoteke ~/.bashrc

cd - promena aktivnog direktorijuma

Komanda cd (Change Directory), koristi se za promenu aktivnog direktorijuma.

Najprostiji slučaj podrazumeva prebacivanje u poddirektorijum (trenutno aktivnog direktorijuma), što možemo ilustrovati preko primera komande za prebacivanje iz home direktorijuma aktivnog korisnika, u direktorijum /home/korisnik_1/muzika:

		
# pwd = /home/korisnik_1
$ cd muzika
# pwd = /home/korisnik_1/muzika
		
	
Slika 12. - Primer prebacivanja u poddirektorijum preko komande cd.

Po potrebi, moguće je koristiti i apsolutne putanje (sledeća naredba ima isti efekat kao prethodna):

		
# pwd = /home/korisnik_1
$ cd /home/korisnik_1/muzika
# pwd = /home/korisnik_1/muzika
		
	
Slika 13. - Primer prebacivanja u poddirektorijum uz zadatu apsolutnu putanju.

U praksi, pri prebacivanju u poddirektorijum, nema potrebe za navođenjem apsolutne putanje, ali, neophodno je navesti apsolutnu putanju onda kada se direktorijum u koji se prebacujemo nalazi na proizvoljnoj putanji, koja nema dodirnih tačaka sa trenutnom putanjom (na čijem je kraju trenutni direktorijum).

Na primer:

		
# pwd = /home/korisnik_1/muzika
$ cd /mnt/usb1
# pwd = /mnt/usb1
		
	
Slika 14. - Primer prebacivanja u direktorijum na proizvoljnoj putanji.

Takođe, kada se koriste apsolutne putanje, veoma je bitno da se na početku navede znak / (koji označava koreni direktorijum), jer, bez kose crte, komanda kao što je (na primer): cd home/korisnik_1/muzika (koja sadrži relativnu adresu), predstavlja pokušaj prebacivanja u poddirektorijum muzika, poddirektorijuma korisnik_1, poddirektorijuma home (što je putanja koja, u praktičnom smislu, gotovo sigurno ne postoji unutar putanje /home/korisnik_1).

Ugrađene prečice

Komanda cd omogućava lakše dolaženje do određenih uobičajenih lokacija, preko prečica.

Na primer, poziv komande cd, bez argumen(a)ta ....

		
$ cd
		
	
Slika 15. - Bez argumenata (to jest, bez navedene putanje), komanda "cd" praktično predstavlja prečicu za prebacivanje u home direktorijum aktivnog korisnika.

.... ili uz argument ~ (s tim da je prvi način jednostavniji) ....

		
$ cd ~
		
	
Slika 16. - Uz argument "~" (znak 'tilda'), komanda cd je (ponovo), prečica za prebacivanje u home direktorijum aktivnog korisnika.

.... zapravo je prečica za prebacivanje u home direktorijum aktivnog korisnika, isto kao da smo pozvali komandu:

		
cd /home/korisnik_1
		
	
Slika 17. - Primer poziva komande cd, uz navođenje apsolutne putanje prema home direktorijumu aktivnog korisnika (efekat je isti kao da smo pozvali komandu cd bez navođenja putanje).

Naravno, smatrali smo da se komande pokreću preko naloga korisnik_1.

Takođe, postoji i jednostavan način za prebacivanje u "roditeljski" direktorijum (tj. direktorijum u kome se aktivni direktorijum nalazi), pozivanjem komande cd uz argument.. (razmak je obavezan):

		
$ cd ..
		
	
Slika 18. - Prečica za povratak u roditeljski direktorijum.

Na primer:

		
[korisnik_1@codeblog ~/fotografije/2022] $ cd ..
[korisnik_1@codeblog ~/fotografije] $
		
	
Slika 19. - Primer izvršavanja komade "cd .." (povratak u roditeljski direktorijum).

Ako se greškom prebacimo iz određenog direktorijuma u neki drugi, za povratak se ne mora navoditi apsolutna putanja, već i za tako nešto postoji odgovarajuća prečica, cd - (drugi znak je crtica).

U sledećem primeru ....

		
[korisnik_1@codeblog ~/kodovi/java] $ cd # greška
[korisnik_1@codeblog ~] $ cd -           # ispravka
[korisnik_1@codeblog ~/kodovi/java] $    # sve je ok
		
	
Slika 20. - Primer korišćenja prečice "cd -" za prebacivanje u prethodni aktivni direktorijum.

.... prikazana je tipična situacija u kojoj se korisnik 'mahinalno'/greškom prebacio u home direktorijum (nakon čega nije teško vratiti se na 'prethodni pwd').

mkdir - kreiranje direktorijuma

Komanda mkdir koristi se za kreiranje direktorijuma.

Tipičan poziv podrazumeva kreiranje poddirektorijuma ....

		
[korisnik_1@codeblog ~/kodovi] $ mkdir rust
		
	
Slika 21. - Primer upotrebe komande mkdir (za kreiranje novog direktorijuma).

.... pri čemu je, u konkretnom primeru (sa gornje slike), kreiran direktorijum rust (odnosno putanja /home/korisnik_1/kodovi/rust - preko postojeće putanje /home/korisnik_1/kodovi).

Za kreiranje direktorijuma, moguće je koristiti i apsolutne putanje ....

		
$ mkdir /home/korisnik_1/kodovi/rust
$ mkdir ~/kodovi/rust
		
	
Slika 22. - Primer kreiranja poddirektorijuma, uz zadavanje apsolutne putanje (pod uslovom da deo putanje koji prethodi novom direktorijumu - postoji).

.... ali - samo pod uslovom da u navedenoj putanji postoje svi direktorijumi koji prethode direktorijumu koji je potrebno kreirati!

Ukoliko nedostaje bilo koji od prethodećih direktorijuma (koji su navedeni u putanji), sistem će prijaviti grešku, a da se to ne bi dešavalo - potrebno je koristiti dodatni argument (-p).

mkdir -p - kreiranje celokupne putanje

Ako se komanda mkdir dopuni argumentom -p (parent) ....

		
$ mkdir -p /home/korisnik_1/kodovi/rust
		
	
Slika 23. - Uz argument "'p", komanda mkdir može kreirati celokupnu putanju.

.... biće (po potrebi) kreirani svi direktorijumi koji nedostaju.

Opcija -p funkcioniše i sa relativnim putanjama (koristićemo isti primer):

		
$ mkdir -p ~/kodovi/rust
		
	
Slika 24. - Poziv komande mkdir sa prethodne slike, sa uprošćenom putanjom.

rmdir - uklanjanje direktorijuma

Komanda rmdir (remove directory) ....

		
$ rmdir 2022
$ rmdir /home/korisnik_1/fotografije/2022
$ rmdir ~/fotografije/2022
		
	
Slika 25. - Primer korišćenja komande rmdir za uklanjanje (praznih) direktorijuma.

.... uklanja zadati direktorijum, ali - samo pod uslovom da je navedeni direktorijum prazan!

Ukoliko pomenuti uslov nije zadovoljen, moraju se prethodno ukloniti svi poddirektorijumi i pripadajuće datoteke (tipično: preko komande rm, uz korišćenje rekurzije).

rm - uklanjanje datoteka i direktorijuma

Komanda rm koristi se za uklanjanje pojedinačnih datoteka ili grupa datoteka, a uz opciju -r (recursive), može se koristiti i za (rekurzivno) uklanjanje cele strukture direktorijuma.

Na primer, ako pozovemo sledeću komandu ....

		
[korisnik_1@codeblog ~/docs/pdf] $ rm cenovnik_2022.pdf
		
	
Slika 26. - Primer uklanjanja datoteke preko komande rm.

.... biće uklonjena jedna datoteka (cenovnik_2022.pdf).

Preko slične komande (uz navođenje dodatnih argumenata) ....

		
[korisnik_1@codeblog ~/docs/pdf] $ rm cenovnik_2022.pdf cenovnik_2021.pdf cenovnik_2021.txt
		
	
Slika 27. - Primer uklanjanja više pojedinačnih datoteka preko komande rm.

.... uklanjaju se tri (nabrojane/pojedinačne) datoteke, ali, sledeći poziv ....

		
[korisnik_1@codeblog ~/docs/pdf] $ rm -r stari_cenovnici_2011
		
	
Slika 28. - Primer uklanjanja celokupne strukture direktorijuma preko komande rm (uz korišćenje rekurzije).

.... podrazumeva (rekurzivno) uklanjanje svih datoteka (i svih poddirektorijuma) iz navedenog direktorijuma, nakon čega se uklanja i sam direktorijum stari_cenovnici_2011.

Napomena: budite veoma pažljivi - ne postoji undo!

cp - kopiranje datoteka i direktorijuma

Komanda cp (eng. "copy"), koristi se za kopiranje (tj. umnožavanje) datoteka, uz navođenje: putanje datoteke koja se kopira (u svojstvu prvog argumenta), i putanje nove datoteke (u svojstvu drugog argumenta).

Kao i do sada, putanje mogu biti apsolutne i relativne (naravno, uz poštovanje i svih ostalih prethodno navedenih pravila).

U sledećim primerima smatramo da se komanda poziva iz home direktorijuma aktivnog korisnika (~), a objašnjenja su u komentarima:

		
# Kopiranje datoteke u isti direktorijum:
$ cp dat1 dat2

# Kopiranje datoteke u poddirektorijum
# (uz očuvanje naziva datoteke):
$ cp dat1 dir1/

# U gornjem primeru, pod uslovom da direktorijum dir1
# postoji, znak / na kraju se može izostaviti.
# Može i inače, ali, samo pod uslovom da je naveden
# kraj postojeće putanje, jer inače će biti kreirana
# DATOTEKA sa navedenim nazivom (dir1)!

# Kopiranje datoteke, uz promenu naziva:
$ cp dat1 dat2
$ cp dat1 ./dat2

# Kopiranje datoteke u poddirektorijum,
# uz promenu naziva:
$ cp dat1 ./dir1/dat2

# Kopiranje datoteke, uz korišćenje kombinacije
# apsolutnih i relativnih putanja:
$ cp dat1 /home/korisnik_2/dir1

# Kopiranje datoteke, uz korišćenje relativne putanje prema
# direktorijumu na istom nivou strukture, uz promenu naziva:
$ cp ../korisnik_2/dat3 dat3_bekap

# Preko apsolutnih putanja, prethodna komanda se
# može zadati kao:
$ cp /home/korisnik_2/dat3 /home/korisnik_1/dat3_bekap

# Kopiranje datoteke, uz korišćenje relativne putanje prema
# direktorijumu na istom nivou strukture, uz očuvanje naziva:
$ cp ../korisnik_2/dat3 .

# Preko apsolutnih putanja, prethodna komanda se
# može zadati kao:
$ cp /home/korisnik_2/dat3 /home/korisnik_1/dat3
		
	
Slika 29. - Primeri korišćenja komande cp (za kopiranje datoteka).

U gornjim primerima mogli ste primetiti i jednu novinu - pojavu (jedne) tačke.

Pojedinačna tačka u putanjama označava trenutni direktorijum (pwd), što praktično znači da se komanda za kopiranje datoteke unutar istog direktorijuma može poz(i)vati na više načina:

		
$ cp ./dat_1 ./dat_2
$ cp   dat_1 ./dat_2
$ cp ./dat_1   dat_2
$ cp   dat_1   dat_2
		
	
Slika 30. - Primeri korišćenja prečice . (tačka), unutar putanja, pri zadavanju komandi.

Ako se sve obavlja u okviru trenutno aktivnog direktorijuma, najpraktičnije je (očekivano), zadati komandu kao u primeru #4.

(Naravno, ne morate pisati dodatne razmake (koje smo u primeru dodali samo zarad povećanja preglednosti)).

Međutim, ukoliko postoje ikakve nedoumice (u vezi sa putanjama koje ćete koristiti u svakodnevnom radu) - budite precizni i navedite komande tako da nedoumice budu otklonjene.

mv - premeštanje i preimenovanje datoteka i direktorijuma

Komanda mv (eng. "move") takođe prima iste argumente kao komanda cp, i može se koristiti za sledeće operacije:

  • premeštanje datoteke (u drugi direktorijum)
  • promenu naziva datoteke (ukoliko se kao drugi argument preda naziv datoteke na istoj putanji)

U sledećim primerima takođe pretpostavljamo da se nalazimo u home direktorijumu aktivnog korisnika (a opisi su u komentarima):

		
# Premeštanje datoteke u poddirektorijum (ponovo,
# pod uslovom da relativna putanja ./dir1/ postoji;
# U suprotnom - praktično se obavlja preimenovanje(!):
$ mv dat1 dir1

# U sličnim situacijama (ako se iole dvoumite oko
# strukture datoteka i direktorijuma), radije koristite
# komandu na sledeći način:
$ mv dat1 ./dir1/

# Premeštanje datoteke u direktorijum na istom
# nivou hijerarhije, uz promenu naziva:
$ mv dat1 ../korisnik_2/dat3

# Prethodna komanda se može pozvati i preko
# apsolutnih putanja, na sledeći način:
$ mv /home/korisnik_1/dat1 /home/korisnik_2/dat3

# Premeštanje datoteke u direktorijum na istom
# nivou hijerarhije, uz očuvanje naziva:
$ mv dat1 ../korisnik_2/

# Prethodna komanda se može pozvati i preko
# apsolutnih putanja, na sledeći način:
$ mv /home/korisnik_1/dat1 /home/korisnik_2/dat1

# Preimenovanje datoteke:
$ mv dat1 novo_ime

# Zarad sprečavanja 'slučajnih'
# preimenovanja, preporučujemo upotrebu
# argumenta -i ('interactive'), što praktično
# znači da će komanda ponuditi dijalog preko koga
# korisnik treba da potvrdi izvršavanje komande
$ mv -i dat1 novo_ime
		
	
Slika 31. - Primeri korišćenja komande mv (za premeštanje i preimenovanje datoteka).

Kao što vidimo, preimenovanje datoteka se takođe obavlja preko komande mv (što verujemo da većini korisnika koji se prvi put susreću sa Linux-om, deluje prilično 'čudno'), ali, ako zamislimo 'dodatnu' komandu koja bi služila samo za osnovno preimenovanje pojedinačnih datoteka i direktorijuma, pri čemu bi se komanda izvršavala na sledeći način ....

		
$ ren dat1 dat2
		
	
Slika 32. - Primer upotrebe "hipotetičke" komande ren.

.... vidimo da je izostanak zasebne (jednostavne) komande za preimenovanje, krajnje razuman izbor.

Međutim, na Linux-u zapravo postoji i sveobuhvatan program rename, koji pruža razne opcije za preimenovanje datoteka i direktorijuma, ali, prevashodno je namenjen složenijim zadacima koji se tiču preimenovanja datoteka i direktorijuma, i (takođe), nije deo paketa GNU Core Utilities, pa stoga najčešće nije ni deo diskusije o osnovnim komandama.

U okviru članka o osnovnim Linux komandama, program rename će biti prikazan 'revijalno', budući da sadrži određene naprednije opcije koje nisu 'skroz jednostavne' za razumevanje na samom početku (ali, u nekom kasnijem trenutku, predstavićemo detaljnije i druge opcije programa rename).

rename - preimenovanje uz korišćenje naprednih opcija

Program rename se izvršava po sledećem opštem obrascu ....

		
rename obrazac_pretrage datoteke
		
	
Slika 33. - Opšta šema izvršavanja programa rename.

.... ali, najbolje će biti da razmotrimo nekoliko konkretnijih primera:

		
# 1)
$ rename 's/stari/bekap' /home/korisnik_1/dokumentacija
# Promena niske 'stari' u nisku 'bekap',
# u nazivima svih datoteka, na putanji
# /home/korisnik_1/dokumentacija

# 2)
$ rename 's/.php/.html' *.php
# Promena ekstenzije svih PHP datoteka,
# iz .php u .html
# Dodatno objašnjenje:
# U nazivima datoteka, traži se obrazac '.php'
# (praktično, ekstenzija 'php'), i menja se
# ekstenzijom .html; u obzir se uzimaju (samo)
# PHP datoteke, a pošto nije navedena putanja,
# komanda uzima u obzir datoteke u okviru
# aktivnog direktorijuma.

# 3)
$ rename 'y/[A-Z]/[a-z]' *.html
# Promena velikih slova u mala slova, u nazivima
# datoteka u aktivnom direktorijumu
		
	
Slika 34. - Primeri upotrebe programa rename.

Kao što vidimo u poslednjem primeru (i kao što ste verovatno i sami očekivali), program rename je u stanju da koristi regularne izraze (pri čemu je u pitanju regex sintaksa iz programskog jezika Perl), što predstavlja ponešto napredniju opciju sa kojom se možete upoznati pošto se upoznate sa ostalim komandama iz ovog i sledećeg članka.

Za upoznavanje sa ostalim (jednostavnijim) opcijama programa rename, zna se: man rename (ili samostalno istraživanje preko interneta i sl). :)

Vraćamo se na ostale osnovne komande ....

file - informacije o datoteci

Preko komande file moguće je dobiti osnovnu informaciju o tipu datoteke (čija se putanja navodi kao argument):

	
[korisnik_1@codeblog ~] $ file .bashrc
.bashrc: ASCII text
	
Slika 35. - Primer upotrebe komande file.

U primeru sa gornje slike, videli smo da je konfiguraciona datoteka programa Bash formatirana kao obična tekstualna (ASCII) datoteka.

U praksi, komanda file (kao i komanda pwd), takođe se retko koristi direktno u konzoli, ali, svakako ima primenu u pisanju shell skripti.

Za kraj priče o osnovnim komandama za rad sa direktorijumima i datotekama, prikazaćemo dve vrlo uobičajene komande koje su "po definiciji" namenjene određenim zadacima, ali, u praksi se tipično koriste van osnovne namene (tj. "za nešto drugo").

touch - ažuriranje postojećih datoteka (kreiranje praznih datoteka)

Osnovna namena komande touch je ažuriranje podataka o vremenu poslednjeg pristupa direktorijumu ili datoteci (što je podatak koji se čuva u okviru fajl sistema), a budući da je komanda touch svakako bitna i u svojoj osnovnoj nameni, razmotrićemo prvo 'osnovni' primer.

Recimo, ako pretražujemo određeni direktorijum, u potrazi za datotekama koje su poslednji put ažurirane (npr) u novembru 2021, uredno će biti izlistane sve takve datoteke.

Videli smo u prethodnom članku kako to možemo uraditi preko komande ls, a u narednom članku ćemo prikazati još detaljniji postupak.

Ako obavljamo pretragu da bismo izdvojili (zarad dalje obrade), sve datoteke koje sadrže podatke koje smatramo zastarelim - i pri tom dalja obrada podrazumeva npr. brisanje - moglo bi se desiti da ostanemo i bez onih datoteka koje nisu dugo ažurirane - ali i dalje sadrže relevantne podatke koji su nam potrebni!

Datoteke se (naravno) mogu otvoriti i u editoru, uz pozivanje komande za čuvanje (čime se upisuje novo vreme pristupa), ali, u okviru UNIX-a i UNIX-olikih sistema postoji i komanda touch, koja obavlja navedeni posao na elegantniji način.

Ako pozovemo komandu touch ....

	
[korisnik_1@codeblog ~/sajtovi/sajt1] $ touch *.log_bak
	
Slika 36. - Primer upotrebe komande touch.

.... sve datoteke sa navedenom ekstenzijom, na putanji ~/sajtovi/sajt1, biće ažurirane po pitanju vremena pristupa.

Kreiranje praznih datoteka

Pored osnovne namene (koju smo prethodno opisali), komanda touch se mnogo češće koristi za kreiranje novih datoteka.

Kreiranje nove (prazne) datoteke funkcioniše na vrlo jednostavan način: ako se komandi touch kao argument preda naziv nepostojeće datoteke - biće kreirana prazna datoteka sa navedenim nazivom. *

S obzirom na prethodno navedeni princip, može se reći da komanda touch predstavlja (u praktičnom smislu), nešto nalik na "mkdir za datoteke".

* Pravila su sledeća:

  • ako se preda samo naziv "nepostojeće" datoteke, biće kreirana nova datoteka u trenutno aktivnom direktorijumu (pwd)
  • ako se navede (cela) putanja i pri tom je u pitanju postojeća putanja, program funkcioniše na prethodno opisani način
  • ako se preda nepostojeća putanja, program izbacuje poruku o grešci (i neće kreirati datoteku, odnosno, celokupnu putanju)

Prethodno opisani pristup, dobro dođe u situacijama kada je potrebno formatirati konfiguracionu datoteku za određeni program (što ćemo prikazati preko primera).

Ako korisnik želi da podesi program prema svojim potrebama, uneće podešavanja u konfiguracionu datoteku - ukoliko takva datoteka (uopšte) postoji, ali, ukoliko datoteka ne postoji - potrebno je prvo kreirati datoteku:

		
$ touch ~/.vimrc
		
	
Slika 37. - Primer kreiranja nove (prazne) datoteke preko komande touch.

Primer prikazuje kreiranje konfiguracione datoteke za editor Vim (na podrazumevanoj lokaciji).

Prethodni primer poslužiće i kao prilika da se osvrnemo na fenomen kome ćemo dati radni naziv "(ne)urednost home direktorijuma".

Pojedini programi povremeno koriste (upravo) home direktorijum za čuvanje konfiguracionih datoteka, pa ako se konfiguracione datoteke nagomilaju (što sasvim lako može da se desi ukoliko korisnik računara ne vodi o svemu brigu aktivno), home direktorijum postaje prilično neuredan.

Praksa upisivanja konfiguracionih datoteka direktno u home direktorijum, svojevrsno je "nasleđe" iz starijih vremena, kada je sadržaj koji na kraju 'završi' u home direktorijumu najčešće bio primetno manjeg obima (ili, možda, iz vremena kada se o svemu ipak manje razmišljalo :)), međutim, malo je reći da nije u pitanju "najidealnije rešenje".

Standard XDG Base Directory, predstavlja (u poslednjih desetak godina), najvažniju inicijativu u kontekstu "uređivanja home direktorijuma", a iza svega stoji ideja o pravilnom razmeštanju konfiguracionih datoteka i direktorijuma u svega nekoliko prigodno imenovanih sistemskih direktorijuma (na primer: konfiguracione datoteke smeštaju se u direktorijum ~/.config, datoteke koje programi koriste za privremeni smeštaj podataka, u direktorijum ~/.cache i sl).

Iako većina autora softvera uveliko uvažava standard XDG, postoje i povremeni izuzeci, ali, može se reći da je situacija već sada sasvim prihvatljiva, a kako vreme prolazi, izuzetaka je sve manje i manje.

Takođe je bitno napomenuti da, u određenim situacijama, programi uvažavaju standard XDG, ali, podrazumevane lokacije nisu promenjene, te stoga korisnici moraju samostalno premestiti konfiguracione datoteke i/ili direktorijume, iz home direktorijuma, na prethodno navedene putanje kao što su ~/.config, ~/.cache i sl).

Ali - da ne zaboravimo komandu cat (još jednu komandu koja "tipično ne radi ono što joj je osnovna namena") ....

cat - spajanje tekstualnih datoteka (prikaz sadržaja datoteke u konzoli)

Osnovna namena komande cat je spajanje niski (odnosno, tekstualnih datoteka). *

Na primer, preko sledeće naredbe ....

   		
$ cat dat1 dat2 > dat3
   		
   	
Slika 38. - Primer spajanja dve datoteke preko komande cat i slanje rezultata u novu datoteku.

.... sadržaj dve datoteke spaja se i preusmerava u datoteku dat3.

Međutim, iako se komanda cat sasvim često koristi shodno osnovnoj nameni, mnogo češće se koristi za ispis sadržaja datoteka u konzoli, i stoga se postavlja (očigledno) pitanje: kako je komanda cat, od komande za spajanje niski, postala nezvanična UNIX komanda za prikaz sadržaja tekstualnih datoteka u terminalu?

Kao prvo (služeći se pravilima koja smo naveli u uvodnom članku), ako se tekstualni izlaz određene komande ne usmeri u imenovanu izlaznu datoteku, biće usmeren na standardni izlaz (praktično - terminal), a pored toga, program cat je napravljen tako da neće "praviti pitanje" ukoliko se ne preda naziv druge datoteke, već će nedostajuću datoteku pri spajanju tretirati kao praznu nisku.

U prevodu: "nema druge ulazne datoteke" + "nema izlazne datoteke" => tekst se (samo) ispisuje na ekranu.

* Sam termin 'konkatenacija' je transliteracija engleskog termina 'concatenation', koji označava nizanje tj. 'ulančavanje' (a naziv cat, očigledno, predstavlja skraćenicu).

Usput - ako želimo da komandu cat zapravo koristimo za spajanje sadržaja tekstualnih datoteka, napomenimo da se može navesti i više od dve datoteke (čiji su nazivi razdvojeni razmacima).

bat - modernija alternativa

Komanda cat je sasvim funkcionalna, ali, za korisnike koji žele malo "doteraniji" ispis (uz dodatne opcije), postoji i komanda bat (s tim da program bat, za razliku od programa cat, nije deo osnovnog paketa alata na većini Linux distribucija).

Komanda bat dodaje u ispis: zaglavlje, redne brojeve i bojenje sintakse za prepoznate jezike.

Naravno, sve navedeno se može konfigurisati i (po želji) uključiti/isključiti, a postoje i dodatne opcije koje možete istraživati samostalno. :)

Pogledajmo primere:

- Izlaz komande cat (recimo da smo pokrenuli komandu cat proba.py, koja otvara jednostavnu Python skriptu):

   		
a = 12
print(a)
   		
   	
Slika 39. - Primer izvršavanja komande cat.

- Izlaz komande bat (komanda: bat proba.py; ista datoteka kao u prethodnom primeru):

   		
-------------------------
  | File: proba.py
-------------------------
1 | a = 12
2 | print(a)
-------------------------
   		
   	
Slika 40. - Primer izvršavanja komande bat.

Da sve bude još bolje - pri samostalnom pozivanju - komanda bat se ponaša na opisani način, ali, u "pipeline-u" (kada je potrebno da se izlaz prosledi (tj. "pajpuje") u drugi, tj. sledeći program), izlaz iz komande bat biće isti (tj. "običan"), kao da smo koristili komandu cat!

(Lepa, zanimljiva i korisna opcija; jedna od mnogih u svetu Linux-a.)

Komande za rad sa medijima/drajvovima

Komande za rad sa drajvovima, ne koriste se toliko često kao komande za rad sa datotekama i direktorijumima, ali, svakako spadaju u osnovne komande (sa kojima se treba upoznati već na početku).

df - prikaz slobodnog prostora na particijama

Preko komande df (Disc Free), mogu se dobiti informacije o zauzetom i slobodnom prostoru na određenom drajvu (ssd-u, hard disku, USB drajvu i sl), kao i o tome na kojoj poziciji je dati uređaj montiran u okviru strukture direktorijuma.

Bićemo praktični i odmah ćemo uvrstiti opciju -h (poznatu iz prethodnih poglavlja) ....

		
$ df -h /dev/sda1
		
	
Slika 41. - Primer pozivanja komande df uz predavanje argumenta "-h".

.... posle čega se dobija sledeći ispis:

		
Filesystem  Size  Used Avail Use% Mounted on
/dev/sda1   511M   62M  450M  12% /boot
		
	
Slika 42. - Primer izvršavanja komande df.

U prethodnom primeru: UEFI particija ima umereno zauzeće od 62 Megabajta i montirana je kao boot direktorijum.

du - prikaz zauzeća direktorijuma

Komanda du (Disk Usage), računa i prikazuje memorijsko zauzeće datoteka i direktorijuma.

Ako se komandi du kao argument preda putanja do datoteke, dobija se prost ispis koji je vezan (samo) za navedenu datoteku:

		
[korisnik_1@codeblog ~] $ du .vimrc
12K .vimrc
		
	
Slika 43. - Primer izvršavanja komande du, za direktorijum koji ne sadrži poddirektorijume.

Ako se komandi kao argument preda putanja do direktorijuma, dobija se ispis koji sadrži: i podatke za poddirektorijume, i podatak o ukupnom zauzeću za navedeni direktorijum:

		
[korisnik_1@codeblog ~] $ du -h slike
5M  slike/screenshots
14M slike/pozadine
20M slike
		
	
Slika 44. - Primer izvršavanja komadne du, za direktorijum koji sadrži datoteke i poddirektorijume.

Nemojte se zbuniti: 1MB "koji fali", poklapa se sa zauzećem koje prave datoteke koje su direktno unutar direktorijuma slike (to jest, datoteke koje nisu u poddirektorijumima).

U prethodnom primeru, struktura poddirektorijum je jednostavna ("nerazuđena") i prikaz je krajnje jasan.

Međutim, ako bismo pozvali sledeću komandu ....

		
$ du -h /home/korisnik_1
		
	
Slika 45. - Nepraktičan primer pozivanja komande du, za home direktorijum aktivnog korisnika.

.... dobili bismo ispis koji je sačinjen iz stotina i stotina redova(!), a da se to ne bi dešavalo (osim, naravno, ako ne želimo da preusmerimo ispis u tekstualnu datoteku i sl), potrebno je koristiti opciju -s (summary):

 		
[korisnik_1@codeblog ~] $ du -hs /home/korisnik_1
7G /home/korisnik_1
 		
 	
Slika 46. - Praktičan primer pozivanja komande du, za veliki direktorijum sa razuđenom strukturom poddirektorijuma (home direktorijum aktivnog korisnika).

Ovoga puta rezultat je samo informacija o ukupnom zauzeću home direktorijuma aktivnog korisnika.

Komandu du smo smestili u poglavlje o komandama za rad sa medijima (a ne u neko od prethodnih), jer komanda du se univerzalno smatra 'parnjakom' komande df.

lsblk - listing priključenih drajvova

Komanda lsblk izlistava prisutne fizičke drajvove (uz pregled particija), i prikazuje (virtuelnu) lokaciju drajvova i particija u okviru strukture direktorijuma (/dev/sda1, /dev/sda2 i sl):

 		
[korisnik_1@codeblog ~] $ lsblk
sda         259:0    0 465.8G  0 disk
├─sda1 259:1    0   512M  0 part /boot
├─sda2 259:2    0    64G  0 part /
├─sda3 259:3    0 393.3G  0 part /home
└─sda4 259:4    0     8G  0 part [SWAP]
 		
 	
Slika 47. - Primer izvršavanja komande lsblk, koja prikazuje priključene drajvove.

Primer radi, ukoliko priključimo USB fleš drajv i (zatim) ponovo pozovemo komandu ....

 		
[korisnik_1@codeblog ~] $ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda         259:0    0 465.8G  0 disk
├─sda1 259:1    0   512M  0 part /boot
├─sda2 259:2    0    64G  0 part /
├─sda3 259:3    0 393.3G  0 part /home
└─sda4 259:4    0     8G  0 part [SWAP]
sdb      8:16   1   3.8G  0 disk
├─sdb1   8:17   1 724.7M  0 part
└─sdb2   8:18   1     4M  0 part
 		
 	
Slika 48. - Primer izvršavanja komande lsblk, posle priključivanja USB fleš drajva.

.... primetićemo da je drajv prepoznat (i prikazan kao /dev/sdb), posle čega je moguće "montirati" drajv, preko komande mount.

mount - montiranje drajva u strukturu direktorijuma

Preko komande mount (kao što je poznato iz uvodnog članka), priključeni uređaji se "montiraju" (tj. prijavljuju ili 'ugrađuju') u strukturu direktorijuma, posle čega im se može pristupati.

Sadržaj USB drajva koji je priključen u prethodnom odeljku, može se prikazati unutar strukture direktorijuma (za šta preporučujemo da izaberete uobičajenu i lako prepoznatljivu putanju, * kao na primer):

 		
## mount /dev/sdb2 /mnt/usb1
 		
 	
Slika 49. - Primer pozivanja komande mount za montiranje USB drajva u direktorijum /mnt/usb1.

* Kao što smo prikazali u uvodnom članku, potrebno je unapred pripremiti putanju na koju će USB biti 'montiran'.

Treba primetiti i to da komanda mount spada u komande koje zahtevaju administratorske privilegije, što se u praksi tipično ostvaruje (kao što smo već opisali), preko komande sudo, na sledeći način:

 		
$ sudo mount /dev/sdb2 /mnt/usb1
 		
 	
Slika 50. - Primer pozivanja komande mount za montiranje USB drajva u direktorijum /mnt/usb1, uz korišćenje komande sudo.

Sada se lako može pristupiti sadržaju USB-a:

 		
$ cd /mnt/usb1
 		
 	
Slika 51. - Primer komande za pristup montiranom USB drajvu preko direktorijuma /mnt/usb1.

Drajvovi sa kojih se pokreće sistem, i drugi drajvovi koji se ne isključuju (a predviđeno je da budu deo instalacije), montiraju se po posebnoj proceduri, uz korišćenje podataka koji se zapisuju pri instalaciji sistema (kao što smo već naveli u uvodnom članku).

Drajvovi koji čine "stalnu postavku" sistema, mount-ovani su na još "zvaničniji" način, koji podrazumeva upis podataka o drajvovima u datoteku /etc/fstab (gotovo uvek, pri instalaciji OS-a), posle čega se montiranje obavlja automatski, pri svakom pokretanju sistema.

Primera radi, na slikama u prethodnom odeljku možemo videti da je particija /dev/sda1 (tj. prva particija na prvom drajvu), mount-ovana unutar foldera /boot; koreni direktorijum / vezan je za particiju /dev/sda2, a sadržaj /home direktorijuma zapravo je na particiji /dev/sda3.

Shodno prikazanoj strukturi direktorijuma, potencijalna reinstalacija sistema neće poremetiti korisničke podatke (jer nisu na istoj particiji na kojoj je instaliran Linux), a sličan pristup koristi se i na Windows-u (gde je praktično obavezno držati korisničke podatke na D: particiji, tj. na bilo kojoj prigodno izabranoj particiji na kojoj nije instaliran sam OS).

Takođe, neki drajvovi (tj. particije), ne moraju biti mount-ovani, pogotovo ako su u pitanju particije drugih operativnih sistema (na primer, Windows C: drajv u dual boot konfiguraciji i sl).

umount - uklanjanje drajva iz strukture direktorijuma

Privremeno priključeni uređaj koji je potrebno (fizički) isključiti, prvo je potrebno isključiti iz strukture direktorijuma, to jest "odmontirati" (da ne kažemo "unmount-ovati":)).

Uz navedene mere predostrožnosti, izbegavaju se neprijatne situacije (gubitak podataka i sl), do kojih može doći zato što sistem ("i dalje"/"još uvek") pristupa uređaju.

Usput: nema slova "n" između "u" i "m" (nije u"N"mount). :)

Ukoliko komanda umount ne vrati grešku ....

 		
## umount /mnt/usb1
 		
 	
Slika 52. - Primer pozivanja komande umount (za prethodno montirani USB drajv).

.... sve je u redu i uređaj se može fizički isključiti (pod uslovom da isključivanje uređaja ne narušava njegovu ispravnost i funkcionalnost na neki drugi način).

Fizičko uklanjanje uređaja zahteva dodatnu pažnju i "zdrav razum": USB drajvove koji su "unmount-ovani", možemo odmah isključiti sa računara i fizički, dok je za druge uređaje krajnje preporučljivo držati se uputstava proizvođača (što možda podrazumeva i dodatne korake).

Pomoćne komande

Za kraj smo ostavili još nekoliko često korišćenih komandi, od kojih mnoge zahtevaju dodatnu pažnju i upoznavanje sa dodatnim opcijama (na šta ćemo se povremeno osvrtati u narednim člancima), ali, za početak je sasvim dovoljno poznavati osnovnu funkcionalnost prikazanih komandi.

free - prikaz zauzeća RAM memorije

Komanda free prikazuje zauzeće RAM memorije (kao i ukupan kapacitet i druge informacije):

 		
[korisnik_1@codeblog ~] $ free -h
        total    used     free   shared   buff/cache   available
Mem:     15Gi   1.7Gi   12.1Gi    566Mi        1.7Gi      13.0Gi
Swap:   8.0Gi      0B    8.0Gi
 		
 	
Slika 53. - Primer prikaza zauzeća RAM memorije preko komande free.

Prikazan je tipičan način upotrebe, uz argument -h (human readable), čiji je smisao poznat od ranije.

date - prikaz datuma i vremena

Komanda date prikazuje trenutni datum i trenutno vreme.

 		
[korisnik_1@codeblog ~] $ date
Mon Sep 26 18:50:17 CEST 2022
 		
 	
Slika 54. - Primer prikaza datuma i vremena preko komande date.

Ukoliko je potrebno doći do pojedinačnih podataka, zadatak se može rešiti na više načina: jedan od načina je korišćenje dodatnih opcija pri pozivu komande (ako želite da odmah saznate šta je sve na raspolaganju, pokrenite komandu man date), a drugi način podrazumeva korišćenje alata za obradu teksta kao što su grep ili awk (što smo već videli u uvodnom članku, na primeru nekih drugih komandi, i čime ćemo se takođe detaljnije baviti u narednim člancima).

cal - kalendar

Komanda cal prikazuje kalendar za trenutni mesec ....

		
[korisnik_1@codeblog ~] $ cal
   September 2022
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
		
	
Slika 55. - Primer prikaza kalendara za trenutni mesec preko komande cal.

.... uz označavanje trenutnog datuma.

(Za samostalno istraživanje - pronađite opciju za prikaz tri meseca odjednom: prethodnog meseca, trenutnog i sledećeg.)

ps - prikaz pokrenutih procesa

Komanda ps (skraćeno od Processes), prikazuje pokrenute procese ....

		
[korisnik_1@codeblog ~] $ ps
..PID TTY          TIME CMD
29260 pts/2    00:00:01 zsh
31881 pts/2    00:00:00 ps
		
	
Slika 56. - Primer izvršavanja komande ps.

.... međutim, prikaz koji smo videli može biti pomalo "suvoparan", i stoga ćemo (za početak) ipak prikazati nešto 'živopisnije' alternative komande ps.

Primer izvršavanja komande ps (sa gornje slike), prikazuje procese koje je (u terminalu) pokrenuo trenutno aktivni korisnik.

Pokretanjem komandi ps -A ili ps -e, biće prikazani svi pokrenuti procesi (ali će zato spisak biti znatno duži). :)

Takođe (da se podsetimo usput): 'proces' je termin koji označava program koji je pokrenut u okviru operativnog sistema.

top (htop/gtop/btop)

Programi kao što su top i (novije/modernije varijante) htop, gtop, btop i sl, predstavljaju svojevrsnu nadogradnju programa ps, a s obzirom na to da su top i ostali "topovi" TUI programi (za razliku od programa ps koji spada u kategoriju CLI programa), informacije o procesima (kao i mnoge druge informacije), prikazuju se na znatno pregledniji način:

GNU/Linux 08
Slika 57. - Program htop koji prikazuje pokrenute procese, procesorsko i memorijsko zauzeće (kao i druge informacije).

Međutim (kao što smo videli), i dalje se radi o konzolnim programima, to jest, nisu u pitanju programi sa pravim grafičkim interfejsom (prikazali smo htop, ali, i top i gtop su slični, a btop je malo moderniji).

uname - informacije o kernelu

Komanda uname (koja se tipično koristi uz opciju -a), prikazuje osnovne informacije o verziji sistema:

 		
[korisnik_1@codeblog ~] $ uname -a
Linux codeblog 5.19.10-artix1-1 #1 x86_64 GNU/Linux
 		
 	
Slika 58. - Primer pokretanja komande uname i prikaz osnovnih informacija o kernelu.

U našem slučaju, u pitanju je Linux (kernel), ali, komanda uname je univerzalna i, u slučaju da se kao operativni sistem koristi (na primer) OpenBSD, izlaz bi bio drugačiji (i sadržao bi informacije o verziji OpenBSD-a).

less - prikaz teksta stranicu po stranicu

Za sam kraj, jedan "pejdžer" (reklo bi se, i dalje najpopularniji).

Pejdžer (eng. pager) je program preko koga se tekstualni izlaz prethodne komande prikazuje 'stranicu-po-stranicu', i stoga, osim što nepregledni listing direktorijuma možemo proslediti u datoteku (kao što smo već videli u prvom članku), možemo koristiti i programe kao što su less, more i bat. *

 		
$ ls ~/ogromni_direktorijum | less
 		
 	
Slika 59. - Primer pokretanja programa less (koji se koristi za prikaz tekstualnih rezultata 'stranicu-po-stranicu').

* Pored svega što smo ranije naveli, program bat je takođe i pejdžer.

Sledeći koraci ....

Iako smo i ovoga puta izneli poveću količinu informacija, ponovo je u pitanju relativno kratak uvod u osnovne komande koje se koriste u GNU/Linux distribucijama.

Sa jedne strane, pomisao da "ima još opcija (i to podosta?!)", može delovati i pomalo 'zabrinjavajuće' iz perspektive relativno neiskusnih korisnika Linux-a.

Sa druge strane, treba razumeti da je za sam početak sasvim dovoljno (ali i neophodno), dobro savladati (samo) osnovne opcije, a nove komande i opcije (i podopcije, varijacije i sl), treba dodavati postepeno, po potrebi, bez opterećivanja - onda kada se u svakodnevnom radu javi potreba za dodatnom funkcionalnošću.

U sledećem nastavku, bavićemo se naprednim opcijama za obradu teksta u komandnoj liniji ....

Autor članka Nikola Vukićević Za web portal codeblog.rs
Napomena: Tekstovi, slike, web aplikacije i svi ostali sadržaji na sajtu codeblog.rs (osim u slučajevima gde je drugačije navedeno) predstavljaju intelektualnu svojinu autora sajta codeblog.rs i zabranjeno je njihovo korišćenje na drugim sajtovima i štampanim medijima, kao i bilo kakvo drugo korišćenje u komercijalne svrhe, bez eksplicitnog pismenog odobrenja autora.
© 2020-2026. Sva prava zadržana.
Facebook LinkedIn Twitter Viber WhatsApp E-mail
početna > Članci > GNU/Linux - 2. deo - Osnovne komande
codeBlog codeBlog
Sajt posvećen popularizaciji kulture i veštine programiranja.
Napomena: Tekstovi i slike na sajtu codeblog.rs (osim u slučajevima, gde je drugačije navedeno) predstavljaju intelektualnu svojinu autora sajta codeblog.rs i zabranjeno je njihovo korišćenje na drugim sajtovima i štampanim medijima, kao i bilo kakvo drugo korišćenje u komercijalne svrhe, bez eksplicitnog odobrenja autora.
© 2020-2026. Sva prava zadržana.
Facebook - logo
Instagram - logo
LinkedIn - logo
Twitter - logo
E-mail
Naslovna
   •
Uslovi korišćenja
   •
Obaveštenja
   •
FAQ
   •
Kontakt