Uvod
Nakon uvoda u tematiku GNU/Linux distribucija, na red prirodno dolazi upoznavanje sa osnovnim komandama za administraciju sistema.
Možemo reći (i zaista tako smatramo), da su čak i osnovne komande na UNIX-olikim operativnim sistemima veoma zanimljive same po sebi, međutim, sasvim je moguće da mnogi čitaoci - na samom početku bavljenja Linux-om - neće deliti izneti entuzijazam.
U tom slučaju, pokušaćemo da ponudimo praktičan način gledanja na stvari, koji vam možda nije padao na pamet do sada ....
Sa jedne strane, osnovne komande (bilo kog) operativnog sistema, naizgled 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 funkcionisanje programa kojima zapravo želimo da se bavimo (bilo da je u pitanju programiranje, web dizajn, grafički dizajn ili neka druga aktivnost).
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.
Deluje da komandi ima mnogo, međutim, pod uslovom da se trudite i da se postepeno upoznajete sa komandama (ali - bez napinjanja i želje da sve savladate "odmah i sad"), posle nekog vremena shvatićete da (već) poznajete prilično velik broj naredbi, opcija i podopcija (na primer, mnogo više nego što je prikazano u ovom članku) i, da sve - jednostavno rečeno - nije (bilo) toliko teško.
U članku koji je pred nama, upoznaćemo se sa najosnovnijim komandama, a u narednim člancima i sa naprednijim konzolnim komandama za obradu teksta, kao i sa principima funkcionisanja shell skripti.
Man - uputstva o programima
Za sam početak (kao 'lagano zagrevanje' pre nego što pređemo na komande za rad sa datotekama i direktorijumima), pogledaćemo nekoliko korisnih komandi opšteg tipa, i rekli bismo 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 je, dokumentacija koja dolazi uz same programe (druga 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 manual), moguće je pristupiti uputstvu za upotrebu određenog programa:
$ man ls
Komanda koju smo naveli u gornjem primeru prikazaće uputstvo za upotrebu programa ls
, a u opštem smislu, princip važi i za druge instalirane programe, uz koje tipično dolazi "man stranica" (man page), specijalno formatirana tekstualna datoteka koja se otvara preko komande man
.
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 (root) nalog.
Iako su korisničke privilegije tema kojoj ćemo tek posvetiti pažnju za prave, za početak je dovoljno da se podsetimo na to, da (po pravilu i uz veoma retke izuzetke), root nalog ne treba koristiti direktno, 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 (da ponovimo - samo pod uslovom da korisnik ima pravo da koristi komandu sudo
):
$ sudo reboot
U primeru koji smo videli, poziva se komanda za restartovanje sistema (koja se na Linux-u zapravo ne može izvršavati bez administratorskih privilegija).
Alias (prečice za pokretanje programa)
Treća komanda iz grupe 'uvodnih' komandi, omogućava korisnicima da programe pozivaju korišćenjem alternativnih imena (koje sami biraju).
U praktičnom smislu, možemo 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, ali i za one koje nisu (same po sebi) preobimne za kucanje, ali ih koristimo veoma često).
Recimo, ukoliko ustanovite da često postoji potreba za tim da se prebacite u direktorijum /home/korisnik_1/kodovi/python
(uzećemo za početak "nedrastičan" primer da ne bismo bez potrebe navodili putanju ili komandu od stotinjak znakova), možete otvoriti datoteku ~/.bashrc
, * i dodati sledeću liniju:
alias cd1='cd /home/korisnik_1/kodovi/python'
Pošto restartujete terminal, komanda cd1
imaće (nadalje) isto dejstvo kao i komanda cd /home/korisnik_1/kodovi/python
.
(U nastavku ćemo videti 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
Može se reži da, sama po sebi, komanda pwd
nema preveliki značaj u svakodnevnom radu, jer shell prompt tipično sadrži naziv aktivnog direktorijuma, ali, u pisanju shell skripti - dobro dođe.
Međutim, na ovom mestu ćemo se osvrnuti i na jednu prečicu: u pitanju je znak ~
(tilda), koji u shell programima (i inače u UNIX/Linux svetu), označava home direktorijum trenutno prijavljenog korisnika.
U tom smislu, pri pisanju komandi, putanja nalik na /home/korisnik_111
, doslovno se može zameniti putanjom ~
(tilda), naravno - pod uslovom da se naredbe izvršavaju preko naloga korisnik_111
.
ls - prikaz sadržaja aktivnog direktorijuma
Komanda ls
(List), prikazuje sadržaj aktivnog direktorijuma.
Ako se komanda ls
pozove bez dodatnih opcija (i ako nije prethodno definisan alias koji menja smisao poziva "ls") ....
$ ls
.... dobićemo prost listing trenutno aktivnog direktorijuma
dir1 dir2 datoteka_1.txt
.... koji ima sledeće odlike:
- nisu prikazane skrivene ("dot") datoteke
- direktorijumi i datoteke su sortirani po imenima, pri čemu se prikazani direktorijumi ni po čemu (vizuelno) ne razlikuju od datoteka
- prikaz je linijski (direktorijumi i datoteke su jedni pored drugih, umesto jedni ispod drugih)
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), komandu ls
treba pozivati uz sledeće opcije:
-a
(all) - prikaz svih datoteka-l
(list) - tabelarni prikaz datoteka i direktorijuma ("jednih ispod drugih"), sa dodatnim informacijama-h
(human readable) - prikaz veličina datoteka na "prirodan/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
- označavanje direktorijuma i datoteka (u prikazu), različitim bojama--group-directories-first
- prikaz (svih) direktorijuma pre (običnih) datoteka
Kada se pozove sledeća naredba .....
$ ls -l -a -h --color -group-directories-first
.... pri čemu se poziv dodatno može uprostiti na sledeći način ....
$ ls -lha --color -group-directories-first
.... 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
Naravno, za poslednji poziv može se definisati i alias (koji možemo upisati u datoteku ~/.bashrc
):
alias ls='ls -lha --color --group-directories-first'
.... posle čega će prosto pozivanje komande ls
podrazumevati prikaz u obliku tabele, uz korišćenje Kilobajta, Megabajta (i ostalih jedinica), sa prikazanim skrivenim datotekama, različitim bojama za direktorijume i datoteke, i grupisanjem direktorijuma pre datoteka.
Ukoliko je u nekom kasnijem trenutku (zapravo) potrebno pozovati komandu ls
u izvornom obliku, može se kao prefiks dodati obrnuta kosa crta:
$ \ls
.... a rezultat je isti ispis kao na slici #6.
cd - promena aktivnog direktorijuma
Komanda cd
(Change Directory), koristi se za promenu aktivnog direktorijuma.
Najprostiji slučaj podrazumeva prebacivanje u poddirektorijum (trenutno aktivnog direktorijuma), i - ukoliko je trenutno aktivan home direktorijum (~
), koji sadrži direktorijum muzika
- dovoljno je uputiti sledeću komandu:
$ cd muzika
Po potrebi, moguće je koristiti i apsolutne putanje (sledeća naredba ima isti efekat kao i prethodna):
$ cd /home/korisnik_1/muzika
U praksi, pri prebacivanju u poddirektorijum, nema potrebe za navođenjem apsolutne putanje, ali je zato apsolutnu putanju (apsolutno) neophodno navesti onda kada se direktorijum u koji se prebacujemo, nalazi na proizvoljnoj putanji, koja nema dodirnih tačaka sa trenutnom putanjom (trenutnim direktorijumom).
Ugrađene prečice
Komanda cd
omogućava lakše dolaženje do određenih sistemskih lokacija, preko prečica.
Na primer, poziv komande cd
, bez argumen(a)ta ....
$ cd
.... ili uz argument ~
(s tim da je prvi način mnogo praktičniji) ....
$ cd ~
.... prečica za prebacivanje u home direktorijum aktivnog korisnika, isto kao da smo pozvali komandu:
cd /home/korisnik_1
Takođe, postoji i jednostavan način za prebacivanje na "roditeljski" direktorijum (direktorijum u kome se aktivni direktorijum nalazi), pozivanjem komande cd
uz argument..
(razmak je obavezan):
$ cd ..
Na primer ....
[korisnik_1@codeblog ~/fotografije/2022] $ cd ..
[korisnik_1@codeblog ~/fotografije] $
Ako se greškom prebacimo iz određenog direktorijuma u drugi, za povratak ne moramo navoditi apsolutnu putanju, već i za tako nešto postoji prečica: cd -
(znak minus).
Na primer:
[korisnik_1@codeblog ~/kodovi/java] $ cd # greška
[korisnik_1@codeblog ~] $ cd - # ispravka
[korisnik_1@codeblog ~/kodovi/java] $ # sve je ok
mkdir - kreiranje direktorijuma
Komanda mkdir
koristi se za kreiranje direktorijuma.
Tipičan poziv podrazumeva kreiranje poddirektorijuma:
[korisnik_1@codeblog ~/kodovi] $ mkdir rust
.... a, u konkretnom primeru (sa gornje slike), kreirali smo direktorijum rust
(odnosno putanju /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
.... ali - samo pod uslovom da u navedenoj putanji postoje svi direktorijumi koji prethode direktorijumu koji želimo da kreiramo!
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 komandi mkdir
doda argument -p
(parent):
$ mkdir -p /home/korisnik_1/kodovi/rust
.... 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
rmdir - uklanjanje direktorijuma
Komanda rmdir
(remove directory) ....
$ rmdir 2022
$ rmdir /home/korisnik_1/fotografije/2022
$ rmdir ~/fotografije/2022
.... 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 (preko komande rm
, uz korišćenje rekurzije).
rm - uklanjanje datoteka i direktorijuma
Komanda rm
koristi se za uklanjanje datoteka, a uz opciju -r
(recursive), može se koristiti i za (rekurzivno) uklanjanje cele strukture direktorijuma.
Na primer, ako pozovemo sledeću komandu (bez rekurzije):
[korisnik_1@codeblog ~/docs/pdf] $ rm cenovnik_2022.pdf
.... biće uklonjena (jedna) datoteka - cenovnik_2022.pdf
, dok će sledeći poziv:
[korisnik_1@codeblog ~/docs/pdf] $ rm -r stari_cenovnici_2011
.... ukloniti (rekurzivno), sve datoteke i sve poddirektorijume navedenog direktorijuma i, na kraju - sam direktorijum stari_cenovnici_2011
.
cp - kopiranje datoteka i direktorijuma
Komanda cp
("Copy"), koristi se za kopiranje (tj. umnožavanje) datoteka, uz navođenje putanje do datoteke koja se kopira (kao prvog argumenta) i putanje nove datoteke (kao drugog argumenta).
Kao i do sada, putanje mogu biti apsolutne i relativne (naravno, uz poštovanje i svih ostalih do sad navedenih pravila):
U sledećim primerima, smatramo da se nalazimo u home direktorijumu 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
U gornjim primerima, mogli ste primetiti i jednu novinu: pojava (jedne) tačke u putanjama označava trenutni direktorijum (pwd), pa se tako komanda za kopiranje datoteke unutar istog direktorijuma može pozvati 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
mv - premeštanje i preimenovanje datoteka i direktorijuma
Komanda mv
(move), kao i komanda cp
, takođe prima dva argumenta i može se koristiti za:
- 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 gornjem primeru (ako se iole dvoumite oko
# strukture datoteka/direktorijuma), radije koristite
# komandu:
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
Na ovom mestu ćemo uvažiti činjenicu da većini korisnika koji se prvi put susreću sa Linux-om, nepostojanje zasebne komande za preimenovanje deluje prilično čudno, ali, ako zamislimo da bi takva hipotetička komanda (nazvaćemo je "ren", skraćeno od "rename"), praktično morala funkcionisati po sledećem principu:
$ ren dat1 dat2
.... vidimo da je izostanak zasebne komande za preimenovanje krajnje razuman izbor.
file - informacije o datoteci
Preko komande file
, moguće je dobiti osnovnu informaciju o tipu datoteke:
[korisnik_1@codeblog ~ ] $ file .bashrc
.bashrc: ASCII text
U primeru sa gornje slike, konfiguraciona datoteka je formatirana kao obična tekstualna (ASCII) datoteka.
Za kraj priče o osnovnim komandama za rad sa direktorijumima i datotekama, pogledaćemo dve vrlo uobičajene komande koje su "po definiciji" namenjene određenim zadacima, ali - u praksi se tipično koriste van osnovne namene ("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).
Pošto je komanda touch
(u širem kontekstu), bitna i u svojoj osnovnoj nameni, razmotrićemo primer.
Recimo, ako pretražimo direktorijum u potrazi za datotekama koje su poslednji put ažurirane (na primer) u novembru 2021, uredno će biti izlistane sve takve datoteke (videćemo u sledećem članku kako to možemo uraditi).
Ako pretragu obavljamo da bismo (na određen način, zarad dalje obrade), izdvojili sve datoteke koje sadrže podatke koje smatramo zastarelim - i pri tom dalja obrada podrazumeva 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.
Takve datoteke se (naravno) mogu otvoriti u editoru, i može se pozvati komanda za čuvanje (čime će biti upisano novo vreme pristupa), ali, u okviru UNIX-a i UNIX-olikih sistema postoji i komanda touch
koja navedeni posao obavlja na elegantniji način.
Ako pozovemo komandu touch
:
[korisnik_1@codeblog ~/sajtovi/sajt1 ] $ touch *.log_bak
.... 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 nepostojeća putanja prema datoteci - biće kreirana prazna datoteka sa navedenim nazivom (na avedenoj putanji).
Prethodno opisani pristup, dobro dođe u situacijama kada je potrebno formatirati konfiguracionu datoteku za određeni program.
Ako korisnik želi da podesi program prema svojim potrebama, uneće podešavanja u konfiguracionu datoteku - ukoliko takva datoteka (uopšte) postoji, a ukoliko datoteka ne postoji - potrebno je prvo kreirati datoteku:
$ touch ~/.vimrc
(Primer prikazuje kreiranje konfiguracione datoteke za editor Vim, na podrazumevanoj lokaciji.)
Ali, da ne zaboravimo 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ćeg koda ....
$ cat dat1 dat2 > dat3
.... sadržaj dve datoteke može se spojiti i preusmeriti 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 sadržaj ne usmeri u imenovanu izlaznu datoteku, biće usmeren na standardni izlaz (praktično - terminal), a, pored toga, program cat
je napravljen i tako da neće "dramiti" 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.
bat - modern(ij)a 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 i zaglavlje, redne brojeve i bojenje sintakse za prepoznate jezike (naravno, sve navedeno se može konfigurisati i po želji uključiti/isključiti).
Pogledajmo primere:
- Izlaz komande cat
(recimo da smo pokrenuli komandu cat proba.py
, koja otvara jednostavnu Python skriptu):
a = 12
print(a)
- Izlaz komande bat
(komanda: bat proba.py
; ista datoteka kao u prethodnom primeru):
-------------------------
| File: proba.py
-------------------------
1 | a = 12
2 | print(a)
-------------------------
Da sve bude još bolje - pri samostalnom pozivanju - komanda bat
se ponaša na opisani način, ali, u "pipeline-u" (kada želimo da izlaz prosledimo/"pajpujemo" u drugi/sledeći program), izlaz iz komande bat
biće isti ("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 uvrstiti opciju -h
(poznatu iz prethodnih odeljaka):
df -h /dev/sda1
.... posle čega se dobija sledeći ispis:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 511M 62M 450M 12% /boot
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, dobićemo prost ispis vezan (samo) za navedenu datoteku:
[korisnik_1@codeblog ~] $ du .vimrc
12K .vimrc
Ako se komandi kao argument preda putanja do direktorijuma, dobićemo ispis koji sadrži: i podatke za poddirektorijume, i podatak o ukupnom zauzeću za traženi direktorijum:
[korisnik_1@codeblog ~] $ du -h slike
5M slike/screenshots
14M slike/pozadine
20M slike
U prethodnom primeru, struktura poddirektorijum je jednostavna ("nerazuđena") i prikaz je krajnje jasan.
Nasuprot tome, ako bismo pozvali komandu ....
$ du -h /home/korisnik_1
.... dobili bismo ispis koji je sačinjen iz stotina i stotina redova.
Da se to ne bi dešavalo (osim, naravno, ako ispis ne želimo da preusmerimo u tekstualnu datoteku i sl), može se koristiti opcija -s
(summary):
[korisnik_1@codeblog ~ ] $ du -hs /home/korisnik_1
7G /home/korisnik_1
.... i ovoga puta će izlaz biti samo informacija o ukupnom zauzeću home direktorijuma aktivnog korisnika.
lsblk - listing priključenih drajvova
Komanda lsblk
izlistava prisutne fizičke uređaje i prikazuje njihovu (virtuelnu) lokaciju u okviru strukture direktorijuma (/dev/sda1
, /dev/sda2
i sl):
[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]
Ukoliko dodamo USB fleš drajv i 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
.... primećujemo da je drajv prepoznat (i prikazan kao /dev/sdb
), posle čega je moguće drajv "montirati" 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" (prijavljuju/ugrađuju), u strukturu direktorijuma, posle čega im se može pristupati.
Sadržaj USB drajva koji je priključen u prethodnom odeljku, sada se može prikazati unutar strukture direktorijuma/foldera (i preporučujemo da za montiranje izaberete lako prepoznatljiv direktorijum).
Naš izbor direktorijuma je:
## mount /dev/sdb2 /mnt/usb1
Primetite da je u pitanju komanda koja zahteva administratorske privilegije, što se u praksi ostvaruje (kao što smo već opisali), preko komande sudo
, na sledeći način:
$ sudo mount /dev/sdb2 /mnt/usb1
Sada se lako može pristupiti sadržaju USB-a:
$ cd /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 pri instalaciji sistema (kao što smo već naveli u uvodnom članku).
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" ("unmount-ovati"). Na ovoj način, izbeći ćemo neprijatne situacije (gubitak podataka i sl), do kojih može doći zato što sistem (i dalje/još uvek) pristupa uređaju.
Ukoliko komanda umount
ne vrati grešku ....
## umount /mnt/usb1
.... 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).
Pomoćne komande
Za kraj smo ostavili još nekoliko najčešće 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 navedenih 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
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
Ukoliko je potrebno doći do pojedinačnih podataka, moguće je sve izvesti 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 je korišćenje alata za obradu teksta kao što su grep
ili awk
(što smo, na primeru nekih drugih komandi, već videli u uvodnom članku 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
.... 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 ....
..PID TTY TIME CMD
29260 pts/2 00:00:01 zsh
31881 pts/2 00:00:00 ps
.... međutim, prikaz koji smo videli, može biti pomalo "suvoparan", i stoga ćemo, za sam početak, ipak prikazati nešto 'živopisnije' alternative komande ps
.
top (htop/gtop)
Programi kao što su top
(i novije, modernije varijante htop
i gtop
), predstavljaju svojevrsnu nadogradnju programa ps
i, u pitanju su programi preko kojih se informacije o procesima (kao i mnoge druge informacije), prikazuju na znatno pregledniji način:

Kao što smo videli, i dalje su u pitanju konzolni (TUI) programi, a ne, programi sa pravim grafičkim interfejsom (prikazali smo htop
, ali su i top
i gtop
slični).
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 rs1 5.19.10-artix1-1 #1 x86_64 GNU/Linux
U našem slučaju, u pitanju je Linux (kernel), ali, komanda uname
je univerzalna, i u slučaju da kao operativni sistem koristimo (na primer) OpenBSD, izlaz bi bio drugačiji (i prikazivao bi informacije o verziji OpenBSD-a).
less - prikaz teksta stranicu po stranicu
Za sam kraj, jedan "pejdžer" (rekli bismo, i dalje najpopularniji).
Pejdžer (eng. pager), je program koji 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
(bat
je, pored svega što smo ranije naveli, takođe i pejdžer).
$ ls ~/ogromni_direktorijum | less
Sledeći koraci ....
Iako smo (i ovoga puta) izneli poveću količinu informacija, u pitanju je samo 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 pomalo 'zabrinjavajuće'.
Sa druge strane, treba razumeti da je za sam početak sasvim dovoljno (ali i neophodno), dobro savladati (samo) osnovne opcije, a da nove komande, 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 ....