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

trejler_dokument Jezici: ----

trejler_teg_narandzasti Težina: 5/10

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

Tema: GNU/Linux

2. deo - Osnovne komande3. 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
Simplicity is prerequisite for reliability.
Edsger Dijkstra

GNU/Linux - 1. deo - Uvod

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

Uvod

Free as in free ....

Pre ili kasnije, na ovaj ili onaj način, većina korisnika računara dođe u kontakt sa pojavom Linux-a (markantnog i sada već prilično popularnog operativnog sistema), * kao i sa pojavom drugih programa otvorenog koda, i nije preterano reći da prvi susret sa open-source softverom (a neretko i sledećih nekoliko susreta), kod zainteresovanih pojedinaca izaziva čuđenje.

Jedan deo korisnika, prema 'besplatnom' softveru gaji neodređenu podozrivost opšteg tipa (koja se najčešće može svesti na pitanje: "kako nešto što je besplatno može imati ikakvu pravu vrednost?!"), dok, sa druge strane, ima i onih koji unapred znaju da slobodni softver otvorenog koda ima vrednost (i te kako), ali se onda pitaju - zašto se takav softver plasira bez želje za zaradom od prodaje licenci?!

Naravno, na početku se postavljaju i razna druga pitanja, i stoga ćemo se (kroz nekoliko članaka) pozabaviti fenomenom slobodnog softvera, kako sa tehničke strane, tako i sa sociološke (jer zaista jeste u pitanju veoma interesantna pojava, doslovno globalnih razmera).

Diskutovaćemo o tome kako su nastajali sami softverski alati, kao i o tome kako se izrodila sjajna i plemenita ideja o slobodnom softveru, i (naravno), pokazaćemo kako se open-source softver, pokrenut na Linux-u, može upotrebiti za kodiranje i razvoj programa i sajtova.

* Striktno govoreći, "Linux" nije odrednica koja je vezana za ceo operativni sistem, već, za jezgro operativnog sistema (kernel), međutim, duži niz godina unazad "Linux" je termin koji se u praksi koristi i za celokupan OS koji čini više različitih komponenti, i stoga ćemo i mi za početak biti praktični i koristićemo termin Linux za celokupan OS, ali, u nastavku ćemo (naravno) prodiskutovati o detaljima "Linux nomenklature", kao i o tome zašto u naslovu članka stoji odrednica GNU/Linux (a ne samo Linux).

Takođe (u opštem smislu), pomenimo odmah da uvodni članak neće baš biti "kratak i neobiman", ali, tematika slobodnog softvera otvorenog koda je prilično obimna sama po sebi i veoma zanimljiva, i stoga - iako se zaista nismo 'trudili' da članak preopteretimo informacijama .... ne može se baš reći ni da smo se mnogo trudili da nešto "prećutimo". :)

Slobodni softver - šta je to?

U najosnovnijem smislu, termin slobodni softver (eng. Free and Open Source Software), označava programe otvorenog koda koji se mogu slobodno preuzimati, koristiti i - po želji (budući da je izvorni kod dostupan) - menjati u skladu sa različitim potrebama, uz poštovanje određenih pravila o kojima ćemo pisati u nastavku.

Pre svega, pomenimo sam Linux * - stabilan, pouzdan i veoma kvalitetan operativni sistem otvorenog koda, neopterećen nepotrebnim dodacima, dostupan za preuzimanje i slobodno korišćenje, bez restrikcija kakve korisnicima obično nameću komercijalni programi.

* Odnosno, pomenimo "GNU/Linux distribucije" (s tim da ćemo se nazivima detaljnije baviti u odeljku koji ćemo posvetiti kratkom istorijatu GNU/Linux distribucija).

Osim toga što je je nezanemarljivo pouzdaniji i sigurniji od popularnih komercijalnih rešenja za desktop korisnike, Linux je često i znatno udobniji za svakodnevnu upotrebu (bar je tako kada se novi korisnik navikne na okruženje koje nije toliko sklono da korisnike "drži za ruku", ali, i na to ćemo se osvrnuti kasnije).

Linux u današnje vreme jeste "legitimno popularan" među korisnicima desktop i laptop računara, međutim, tržišni uslovi utiču na to da operativni sistemi kao što su Windows i MacOS budu (ipak/"i dalje") nezanemarljivo popularniji.

Sa druge strane, Linux je zastupljeniji i popularniji na web serverima (prema konzervativnim procenama, smatra se da Linux pokreće više od dve trećine web servera), * Linux pokreće gotovo sve superkompjutere, i (naravno), ne možemo zaboraviti da pomenemo Android - operativni sistem za mobilne telefone, koji je zasnovan (upravo) na Linux-u.

* Ne dajte da vas popularnost Linux-a na web serverima iznenadi: licence za softver koji koriste "obični korisnici" na desktop ili laptop računarima, uglavnom jesu cenovno pristupačne (bar 'koliko-toliko'), ali, sa softverom za servere - to vrlo često nije slučaj.

Međutim, svoje "mesto pod suncem", Linux nije našao zbog svoje "besplatnosti" (jer korišćenje neadekvatnog besplatnog softvera koji može ugroziti funkcionisanje servera, a samim tim i preduzeća koje je za server vezano - nikako nije dobro rešenje).

Linux je svoj ugled stekao pokazavši se kao krajnje kompetentan, kvalitetan i pouzdan OS koji u najmanju ruku nije "utešna nagrada" u odnosu na druge serverske operativne sisteme (naprotiv), i stoga, shodno navedenom, sasvim je jasno zašto se mnogi pojedinačni korisnici i mnoga preduzeća veoma rado opredeljuju za takvo rešenje.

Pored Linux-a, prisutno je i nekoliko drugih (ali objektivno ipak manje popularnih) operativnih sistema, od kojih pre svega treba pomenuti OpenBSD i FreeBSD, veoma pouzdane operativne sisteme koji se najčešće koriste na serverima.

Naravno, prisutan je i veliki broj korisničkih programa i softverskih paketa različitih namena (i uglavnom je u pitanju softver veoma visokog kvaliteta, koji je takođe razvijan kroz ideje o otvorenosti koda i slobode korišćenja softvera).

Osvrnimo se (za sada samo ukratko), na pojavu licenci u svetu open-source softvera, jer pojava licenci u navedenom kontekstu takođe izaziva čuđenje kod pojedinaca koji prvi put dolaze u kontakt sa Linux-om i sličnim programima.

Međutim, nemojte se čuditi tome što slobodni softver koristi licence: svet open-source softvera nije svet u kome "sve prolazi", već svet u kome (u najvećoj meri), "ima reda" (i pri tom se open-source licence pojavljuju upravo u svojstvu pravnog akta kojim se regulišu uslovi korišćenja (a ne kao "faktor ograničavanja")).

Razlika između "slobodnog" i besplatnog softvera

Pošto smo u uvodu koristili zajedno odrednice slobodno i besplatno (u vezi sa softverom koji je tema članka), red je da dodatno pojasnimo: sam pojam slobodnog softvera podrazumeva pre svega slobodu u korišćenju i neskrivanje mehanizama programa od krajnjeg korisnika.

Programi koji su glavna tema članka, svakako jesu i besplatni, međutim, u svemu je najbitnija sloboda korišćenja, dok je prethodno navedena "besplatnost", u širem kontekstu - prilično sporedna.

Naravno, ne može se nikako zanemariti da se 'neplaćanjem' softvera ostvaruju značajne uštede, i upravo je 'potencijalna ušteda' nešto što je mnoge navelo u vode Linux-a, BSD-a (ili samo nekog konkretnog korisničkog programa koji je u datom trenutku dobro došao umesto komercijalnog rešenja za čiju nabavku nije bilo sredstava), međutim, to što se softver ne plaća, samo je mali deo 'šire slike', i (da se još jednom osvrnemo na univerzalno prihvaćen stav iznet u prethodnom pasusu), ukoliko se neko usmeri samo na aspekt besplatnosti - može se smatrati da je ozbiljno 'promašio poentu'. :)

Usput: bez podrobnijeg udubljivanja u tematiku, lako može delovati da "otvorenost" koda dovodi do umanjivanja sigurnosti i pouzdanosti softvera, međutim, praksa pokazuje da pristup koji zainteresovanim programerima omogućava uvid u unutrašnje mehanizme programa, zapravo dovodi do lakšeg i efikasnijeg otkrivanja sigurnosnih propusta i (samim tim) do povećanja nivoa sigurnosti i pouzdanosti.

Međutim, da završimo ukratko diskusiju o 'slobodnom i besplatnom' ....

Može se takođe reći da 'nezvanični maternji jezik IT industrije' (engleski), ne pomaže mnogo u otklanjanju nedoumica, jer dobro je poznato da, na engleskom govornom području, "slobodu" i "besplatnost" označava ista odrednica - "free".

U ranim godinama razvoja slobodnog softvera (da bi se zainteresovanima pojasnilo o čemu se zapravo radi), skovana je popularna krilatica "free as in freedom of speech, not free beer", a danas pojedinci pokušavaju da korišćenjem termina "libre software" otklone nedoumice vezane za to da li je određeni softverski paket samo besplatan, ili je u pitanju softver otvorenog koda. Međutim, u praksi - u velikoj većini slučajeva (najčešće, već pri prvom susretu) - veoma je jasno da li se radi o softveru koji samo "ne treba platiti" - ili je u pitanju otvorenost koda i sloboda korišćenja u skladu sa principima koji su tema članka.

Za softver koji je "samo besplatan", uobičajeno se koristi odrednica "freeware", ali, ne dajte se zbuniti: nije u pitanju skraćenica za termin "free software" i - što je važnije - nisu u pitanju isti principi.

Kako se razvija open-source softver

Kad smo već kod principa, osvrnućemo se na ovom mestu na jedan od najvažnijih (ranije navedenih) principa slobodnog/open-source softvera - na slobodu izmene izvornog koda, što u praksi funkcioniše na jedan od sledećih načina:

  • moguće je uspostaviti saradnju sa autorom originalnog softvera (naravno, uz pristanak autora)
  • moguće je kreirati sopstvenu verziju programa ('nadogradnju'/'fork'), uz (pismeno) uvažavanje svih prethodnih autora (što je regulisano konkretnom licencom za plasiranje slobodnog softvera koju je prvobitni autor izabrao).

Naravno, bilo koji open-source projekat, može biti i samostalno delo određenog pojedinca ("od početka pa nadalje"), međutim - bar kada su u pitanju projekti iole većeg obima - najčešće dođe do određenog vida saradnje između pojedinaca i/ili organizacija, i upravo je saradnja (kao što smo takođe ranije nagovestili), mehanizam koji u velikoj meri doprinosi razvoju softvera i otkrivanju tehničkih nedostataka i sigurnosnih propusta (a možemo reći i da je u pitanju pojava koja - u najvećem broju situacija - doprinosi sveopštem razvoju kreativnosti i podstiče dobre odnose među programerima).

Nazovite nas naivnim, ili nekim drugim imenom (ako baš želite), pri čemu smo sasvim svesni poteškoća sa kojima se realizacija ideja o slobodnom softveru susretala tokom godina (a nažalost susreće se i dalje), ali, sama činjenica da nekoliko decenija unazad veći broj programera međusobno sarađuje i bavi se razvojem softvera koji je za korišćenje dostupan svim zainteresovanim pojedincima i organizacijama (što predstavlja više nego potrebnu antitezu korporativnom duhu koji je zavladao velikim softverskim kompanijama koje su odavno zaboravile ideje o "lepoti, veličini i slobodi uma i duha" na koje su se - makar naizgled - oslanjale i pozivale u svojim počecima) - ipak uliva nadu za civilizaciju kojoj pripadamo.

Nasuprot do sada navedenim principima, stoje principi vlasničkog softvera, koji nalažu da izvorni kod ne treba da bude otvoren i da licence treba plaćati novcem. Sa idejom o zatvorenosti koda suštinski se ne slažemo, ali, smatramo zato da je (druga) ideja, o plaćanju softvera, sama po sebi sasvim razumna (jer - sredstva za razvoj softvera, kao i bilo čega drugog - "moraju se nekako stvoriti").

Međutim, primećujemo da je realizacija ideje o naplati softvera - u praksi (u ogromnoj većini situacija) - krenula stranputicom, bez izgleda na skoriji povratak u normalnije tokove, i stoga (s obzirom na tematiku članka), osvrnućemo se na određene pojave ....

Mnoge softverske kompanije, svoj život na tržištu su započele (makar deklarativno), uz pozivanje na ideje o slobodi uma i duha ("lepše i bolje sutra" i sl), međutim, vreme je prolazilo, kompanije su stekle veliki imetak, promenile su kurs i priklonile se (zaboravivši "slobodarske ideje" manje ili više postepeno), isključivo idejama tržišnog opstanka po svaku cenu, a takav pristup najčešće podrazumeva odnos prema korisnicima koji (bez ikakvog 'uvijanja') smatramo prilično zabrinjavajućim.

Pre tridesetak godina (pa čak i dvadesetak), situacija jeste bila bolja, i kupovina softverske licence je na korisnika imala psihološki efekat kakav ima kupovina automobila ili alata. U pravnom smislu, znalo se (veoma nedvosmisleno), da kupovinom licence korisnik stiče samo pravo korišćenja softvera (ne i bilo kakav vid vlasništva nad softverom), ali, kupovina licence je podrazumevala da korisnik dobija i 'papire' koji dokazuju pravo na korišćenje softvera, kao i instalacione medije preko kojih se softver može nesmetano instalirati (uz offline aktiviranje licence), posle čega korišćenje softvera (osim po pravnim okvirima), u svemu podseća na raspolaganje alatima, vozilima ili drugom svojinom koju je korisnik uredno platio i može je koristiti bez ometanja.

U današnje vreme, uz invazivne sisteme za kontrolu licenci (što ponekad čak podrazumeva i obavezu korisnika da bude online pri svakom pokretanju programa), korišćenje softvera nije ni nalik na raspolaganje hardverskim alatom, već (u smislu subjektivnog dojma), nalik na iznajmljivanje priključka za kablovsku televiziju koji se plaća na mesečnom nivou.

Tu su naravno i razni dopunski i dodatni programi i drugi sadržaji koji se instaliraju na računare korisnika (praktično na silu), od kojih se mnogi koriste za "telemetriju korisničkog iskustva", što često podrazumeva slanje korisničkih podataka "u nepoznatom smeru" i korišćenje prikupljenih podataka u marketinške svrhe (pri čemu se korisnicima "naravno" ne objašnjava gde tačno završavaju njihovi podaci, a dodatna zarada se "naravno" nijednim delom ne vraća korisnicima).

Nemamo ništa protiv zarade preko prodaje softvera (u idejnom smislu - ni najmanje), ali ....

U svemu mora postojati granica i mera (u najmanju ruku mora postojati osnovna poslovna korektnost), međutim, navedena granica je nažalost odavno pređena (u nepovoljnom smeru) i - koliko god se trudili - nikada nećemo razumeti zašto su korisnici, tokom vremena, spontano (i "dobrovoljno") prihvatili da na svojim računarima drže softver koji kontroliše licence koje su pošteno i uredno plaćene (tu je, naravno, kao što smo nagovestili, i opšteprihvaćenost dodatnog softvera koji se instalira uz osnovne programe - i praktično nije ništa drugo nego spyware).

Služeći se pomalo slikovitim rečnikom, rekli bismo da sve što smo naveli u ovom podužem osvrtu na vlasnički softver, umnogome podseća na diskusiju (koja je popularna među ljudima koji se bave istorijom, arheologijom i postankom ljudske civilizacije), o tome da su prvi sveštenici nastali od (prvih) ljudi koji su otkrili vatru: jedna grupa "sveštenika" je dar vatre koristila da ljude oko sebe zaplaši, potčini i drži u neznanju, dok su drugi bili skloni da sa svojom "braćom i sestrama" podele dar svetlosti i toplote (nije teško zaključiti da na prvu kategoriju "sveštenika", bilo da su u pitanju praistorijski ili moderni softverski, ne gledamo blagonaklono).

Kao svetliji primer iz oblasti komercijalnog softvera, naveli bismo poslovnu praksu mnogih (tipično "manjih" ili "srednjih") developera, koji ne plasiraju svoje proizvode kao slobodan softver otvorenog koda (odnosno, očekuju da za korišćenje njihovog softvera platite licencu), ali, pri tome je sam softver (osim toga što ste ga platili), praktično vrlo sličan slobodnom softveru otvorenog koda, to jest: pošto korisnik plati licencu, nema dodatnih i skrivenih nameta, spyware-a (koji nosi neko lepše ime) i "drugih očekivanja", i svako ko iole obraća pažnju na to kakav softver koristi - jasno će prepoznati razliku između takvog pristupa i veoma nezdravih tendencija opšteprisutnih u računarskoj industriji (o kojima smo pisali u prethodnim pasusima).

Vraćamo se na praktičnije teme ....

.... ostatak teksta >>

Da li je slobodni softver (zapravo) u stanju da zameni komercijalne programe?

Popularnost GNU/Linux distribucija počela da doživljava pravu ekspanziju pre petnaestak godina (tj. sredinom prve decenije 21. veka), usled pojave brzog interneta, sve nižih cena CD i DVD diskova koji omogućavaju upis, i (naravno), usled pojave lako dostupnih prenosnih USB uređaja sa znatnim smeštajnim kapacitetima. Veća dostupnost instalacionih medija (u prethodno pomenutom periodu), bila je propraćena i sve češćom pojavom tekstova koji su posvećeni GNU/Linux-u i slobodnom softveru uopšte, pri čemu je jedan od relativno čestih motiva, u pomenutim napisima, bila i tvrdnja da slobodni softver može u potpunosti zameniti komercijalne programe.

Možemo odmah reći da je takav stav (onomad) ipak bio previše optimističan, ali, u međuvremenu je ostvaren primetan napredak i situaciju ćemo (naravno) posmatrati iz sadašnje perspektive, a pošto smo naveli da slobodni softver sam po sebi jeste veoma kvalitetan (ostavljamo vam da sami ustanovite da li smo vas išta "prevarili" po tom pitanju), utvrdićemo i u kojoj meri je slobodni softver (zapravo) u stanju da zameni skupi komercijalni softver (pogotovo pakete za profesionalnu upotrebu, iza kojih stoje ogromna ulaganja i decenije razvoja)?

Kratak odgovor mogao bi biti - "u velikoj meri, ali, ne baš skroz", međutim, sledi ipak malo opširnija diskusija ....

Napomenimo i to da smo u gore pomenutom periodu (pre nešto više od 15 godina), sa velikim simpatijama ispratili pojavu nove stalne rubrike u renomiranom domaćem časopisu Svet Kompjutera, koja se bavi (upravo), slobodnim softverom, kao i pojavu domaćeg digitalnog magazina Gnuzilla (izlazio u PDF formatu, ali je nažalost u međuvremenu prestao sa radom).

Objektivni kvalitet slobodnog softvera

U većini slučajeva, pojedinci i firme mogu preći na Linux i open-source programe (krajnje 'bezbolno'), ali, ponekad (u određenim situacijama) - nije tako, i stoga, u smislu upotrebljivosti, open-source softver možemo okvirno podeliti u sledeće tri kategorije:

  • programi opšteg tipa / za svakodnevne potrebe
  • široko rasprostranjeni softver za profesionalnu upotrebu
  • usko specijalizovani programi za profesionalnu upotrebu

Programi iz prve kategorije (sam OS, uslužni programi opšte namene i sl), sasvim lako se mogu nositi sa odgovarajućim komercijalnim programima, a često ih i prevazilaze (ako nas pitate - veoma daleko). :)

Kada su u pitanju programi iz druge kategorije iz gornje klasifikacije, to jest, office paketi i uobičajeniji alati namenjeni programerima: kompajleri, interpretatori, baze podataka, IDE okruženja, napredni editori teksta namenjeni kodiranju (jedna od naših omiljenih tema kojoj ćemo zasigurno posvetiti zaseban članak), LSP serveri i drugi pomoćni alati za razvoj softvera i web stranica - korisnicima su (takođe) dostupni brojni paketi izuzetnog kvaliteta (pri čemu su neki paketi korisnicima već poznati iz Windows i MacOS okruženja, a ima i onih koji su svojstveni samo Linux okruženju).

Najprostije - ako se pitate da li će vas na Linux-u dočekati: Java, Node JS, Python, PHP, (čak i .Net), MySql, PostgreSQL, mongoDB, Eclipse, Android Studio, IntelliJ, Visual Studio Code i slični paketi - ne brinite, sve nabrojano je tu, kao i (skoro) svi ostali "uobičajeniji" paketi koji vam mogu pasti na pamet (možemo reći da se tako nešto u sadašnjem trenutku - već podrazumeva).

Kao što možemo videti, prisutna su i mnoga zaokružena IDE rešenja koja korisnici drugih operativnih sistema rado koriste (što svakako olakšava prelazak sa Windows-a ili MacOS-a), ali, smatramo ipak da je prava "čar" Linux-a (u kontekstu izbora okruženja za razvoj softvera, a naravno i inače), mogućnost sastavljanja sopstvenog radnog okruženja uz izbor i detaljno podešavanje svake pojedinačne komponente.

Linux okruženje poznato je po velikom broju kvalitetnih editora i pripadajućih dodataka, i stoga, korisnici koji su spremni da "zasuču rukave" (i usput mnogo toga nauče), imaju mogućnost da alat koji koriste, prilagode svojim potrebama u najvećoj mogućoj meri.

Međutim, u određenim oblastima industrije (III kategorija iz gornje klasifikacije), situacija nije baš skroz povoljna za korisnike open-source softvera.

Na primer, kada je u pitanju softver koji se koristi u oblasti industrijskog i grafičkog dizajna, i pogotovo kada je u pitanju usko specijalizovani softver za kontrolu industrijskih procesa i sl. (tj. softver koji ipak zahteva mnogo više vremenskih i materijalnih resursa za razvoj, u odnosu na ono što open-source zajednica može 'iznedriti' u ovom trenutku), open source softver još uvek 'kaska' iza komercijalnih rešenja, bar pomalo (a ponekad i "malo više"), ali, open-source programi drže se sasvim prihvatljivo i u navedenim oblastima (i vremenom sve više i više napreduju).

Naravno, ne može se prenebreći ni činjenica da kada govorimo o vlasničkom softveru (koji se po funkcionalnosti poklapa sa open-source softverom iz III kategorije), govorimo zapravo o softverskim paketima u čiji je razvoj uloženo više decenija i više (desetina) milijardi dolara ili evra.

Osvrnimo se dodatno na softverske pakete koji bi čitaocima mogli biti zanimljivi i u praktičnom smislu ....

Recimo, ako za primer uzmemo open-source programe za obradu fotografija, vektorsko crtanje i 3D modelovanje (to jest, softver koji je, u idejnom smislu, većini čitalaca bliži od specijalizovanih programa za kontrolu industrijskih procesa i sl), možemo reći da su u pitanju programi koji su vrlo ozbiljni, kompetentni i krajnje upotrebljivi - sami po sebi, ali (budimo objektivni), i u ovom slučaju se ipak oseti razlika u odnosu na komercijalne softverske pakete.

Međutim, razlike nisu ni iz daleka "drastične" i naš savet je sledeći: ukoliko vam opcije koje se mogu naći samo u komercijalnim programima nisu "baš" neophodne, treba biti praktičan i izabrati open-source softver (to jest, treba pravilno "odmeriti" situaciju i usmeriti se isključivo na to da je određeni open-source paket sam po sebi više nego dovoljno zreo i upotrebljiv).

Mogućnost prelaska na open-source softver

Pre svega, iz prethodnog izlaganja se jasno može zaključiti da mnogi profesionalni korisnici (pogotovo oni koji tek biraju softver za određene poduhvate), u današnje vreme mogu u potpunosti 'preći' na open-source softver, to jest, u takvim okolnostima ne postoji prava dilema (u praktičnom smislu).

Nasuprot navedenom, ako ste deo velike poslovne organizacije koja je (kao što vrlo često biva), duboko ukorenjena u svojoj vezanosti za određeni vlasnički/licencirani softver - pa samim tim i pojedinci koji su zaposleni u takvoj organizaciji faktički moraju koristiti "propisani" softver (ako žele da ostanu funkcionalni u okviru sistema), prelazak, u praktičnom smislu - najverovatnije jeste (suviše) težak.

Međutim, za neke druge korisnike koji već upotrebljavaju vlasnički softver, ali nisu previše vezani za isti (pogotovo ako su u pitanju freelanceri i manji nezavisni timovi), legitimna mogućnost izbora najčešće postoji - pod uslovom da open-source softver obezbeđuje dovoljno funkcionalnosti, pa svakako vredi razmisliti o tome da li se isplati i dalje koristiti (vlasnički) softver koji je (možda) objektivno napredniji po pitanju tehničkih karakteristika - ali zato podstiče (ponekad i krajnje zabrinjavajuću) zavisnost korisnika od softvera?!

Ako imate izbor i pri tom vodite računa o svojoj (duhovnoj/intelektualnoj/softverskoj/poslovnoj) slobodi - nemojte se mnogo dvoumiti.

U ovom članku nećemo dalje diskutovati o 'sociološkim' aspektima open-source sveta (ali osvrtaćemo se povremeno na takve teme u narednim člancima), i prelazimo u nastavku (skoro) isključivo na 'tehnikalije'.

Istorija GNU/Linux distribucija, UNIX-oliki operativni sistemi uopšteno

Ako u idejnom smislu, iza GNU/Linux distribucija stoji zamisao o slobodi upotrebe softvera, u tehničkom smislu, iza svega stoji jedan poznat, uvažen i dobro projektovan operativni sistem (i, naravno, mnogo dobre volje) ....

Kratak istorijat UNIX-a

Početkom 70-ih godina 20. veka, u Belovim Laboratorijama (odeljenje za istraživanje i razvoj pri kompaniji AT&T, Nju Džerzi, SAD), razvijen je operativni sistem UNIX - verovatno najuticajniji operativni sistem u istoriji računarske tehnike.

U okviru ogromne kompanije koja se bavila održavanjem telefonske mreže SAD-a (i u tom smislu je imala svojevrstan monopol, što je kompaniji donosilo prihode i status, a mnogim istraživačima u okviru kompanije, izvesnu slobodu i ugled), manji tim programera predvođen Kenom Tompsonom * i Denisom Ričijem, ** uz nekolicinu probranih saradnika, *** razvijao je (i razvio), kvalitetan i jednostavan operativni sistem UNIX, kao svojevrsnu antitezu višekorisničkom operativnom sistemu Multics (koji je kompanija koristila tokom druge polovime šezdesetih godina). Multics je (bio) operativni sistem koji je takođe kvalitetan i napredan, ali, isto tako i veoma kompleksan (i komplikovan za održavanje), i stoga korišćenje opisanog sistema nije bilo baš skroz izvodljivo s obzirom na skromne računarske kapacitete tadašnjih mainframe računara i, u 'proporcionalno-istorijskom' smislu, velike hardverske zahteve samog OS-a.

* Osim po svom angažmanu na razvoju UNIX-a, Ken Tompson (Ken Thompson), poslednjih godina je poznat i kao jedan od tvoraca programskog jezika Go(lang).

** Denis Riči (Dennis Ritchie), čitaocima je verovatno poznatiji kao tvorac programskog jezika C.

*** Što se tiče saradnika, za sada ćemo spomenuti dvojicu: Dag Makelroj (Doug Mcllroy) je idejni tvorac tehnike "pajpovanja" (o prosleđivanju podataka između programa, više ćemo pisati kasnije u članku), dok je Brajan Kernigen (Brian Kernighan) poznat kao jedan od koautora programa AWK (i takođe kao jedan od najaktivnijih saradnika iz ranih godina UNIX-a (pri čemu i dan-danas drži predavanja, pojavljuje se na video platformama i sl)).

Može se reći, objektivno, da UNIX nije (bio) "idealno projektovan OS bez nedostataka", može se reći da takozvana "UNIX filozofija" (o kojoj ćemo takođe pisati kasnije u članku), nije nepogrešiva i baš uvek primenjiva, ali - u praktičnom smislu - UNIX je uvek važio za sistem koji je od samog početka projektovan da bude: jednostavan (lekcija naučena posle relativnog neuspeha projekta Multics), modularan, pouzdan i solidan (u izvornom značenju reči), a njegovim razvojem bavili su se ozbiljni programeri koji su za svoje odluke (u najvećoj meri) odgovarali samo jedni drugima i principima dobrog programiranja (a ne interesima marketinga).

Istorija UNIX-a nije ipak "baš skroz ružičasta" i poslovni interesi se zapravo jesu upleli u razvoj OS-a - prilično rano, odnosno: već posle nekoliko godina, UNIX je (skoro naprečac), od sistema otvorenog koda postao softver zatvorenog koda sa veoma skupom licencom, međutim - ta promena nije bitno uticala na tehnološka dostignuća (jer su o 'tehnikalijama' i dalje nastavili da odlučuju isti oni ljudi koji su i započeli razvoj).

Što je još važnije (bar za uvodnu priču o Linux-u i srodnom softveru), iako je UNIX postao zatvoren u smislu licence, u idejnom smislu je bar još neko vreme ostao blizak ljudima iz računarskih akademskih krugova * i nastavio je (i te kako) da privlači pažnju ....

* Pre svega mislimo na uticaj UNIX-a na projekat BSD (Berkeley Software Distribution).

Iznećemo na ovom mestu i jednu impresiju: pojava UNIX-a u računarskoj tehnici, po mnogo čemu podseća na pojavu latinskog jezika u lingvistici (niti je u pitanju najstariji poznati jezik, niti je u pitanju "najbolji mogući jezik", ** ali, jeste u pitanju najuticajniji jezik (kao što je i UNIX najuticajniji OS)).

** Zapravo, pitanje kako bi izgledao "optimalni jezik", veoma je zanimljivo samo po sebi. :)

Takođe: širu diskusiju o istorijatu UNIX-a i BSD-a, o saradnicima na projektu UNIX koje nismo spomenuli, kao i dodatnu diskusiju o istorijatu Linux-a i pokreta za slobodu softvera (iako predosećamo da bi i ono što iznosimo u uvodnom članku moglo biti preopširno za pojedine čitaoce), ostavićemo za neki od narednih članaka.

Pokret GNU

Početkom 80-ih godina 20. veka (1983), Ričard Stalman (Richard Matthew Stallman), dotadašnji istraživač na univerzitetu MIT (i jedan od glavnih junaka priče o slobodnom softveru), pokrenuo je projekat GNU, * čiji je najvažniji zadatak - promocija ideja o slobodnoj upotrebi softvera.

* "GNU is Not UNIX" - rekurzivna skraćenica.

Kao i mnogi pojedinci (u navedenom periodu), čuveni "RMS" bio je inspirisan tehničkim mogućnostima UNIX-a, ali istovremeno razočaran poslovnom politikom različitih softverskih kompanija, koje su sve više i više težile "zatvaranju" i "skrivanju" svojih programskih kodova (što se nažalost odnosilo i na UNIX), i stoga je odlučio da "nešto uradi po tom pitanju".

Pored promovisanja ideja o dostupnosti izvornih kodova i sveopštoj slobodi u korišćenju računarskih sistema (što naravno nisu ideje koje su u skladu sa većinom principa tržišne ekonomije), Ričard Stalman i njegovi saradnici bavili su se i programiranjem (zapravo, u krajnje nezanemarljivom obimu).

U okviru projekta GNU razvijani su programi po ugledu na programe iz UNIX-a, pre svih: osnovni paket alata za svakodnevnu administraciju sistema (GNU Core Utilities), * kompajler GCC i editor EMACS - što su sve programi koji se i dan-danas koriste u GNU/Linux distribucijama.

Međutim, za pun operativni sistem falila je ("samo") jedna komponenta - ona glavna.

* Na GNU/Linux distribucijama, komande za kreiranje direktorijuma, kopiranje datoteka i sl, nisu integralni deo operativnog sistema (kao što se da pomisliti), već se tipično radi o zasebnim/nezavisnim programima iz paketa GNU Core Utilities.

Bez obzira na poveći broj korisnih alata koje je projekat GNU uspešno iznedrio, razvoj sopstvenog kernela * po imenu GNU HURD, nekako je "zapinjao", kernel duže vreme nije bio dovoljno stabilan, u upotrebu je ušao znatno kasnije, i nije stekao iole veću popularnost i prihvaćenost (ni iz daleka).

Pravi kernel bez koga ne bi bilo "Linux-a" (a verovatno ni šire rasprostranjenosti slobodnog softvera), projektovao je neko drugi ....

* Kernel = jezgro operativnog sistema, deo softvera koji je zadužen za operacije niskog hardverskog nivoa, preko kojih korisnički programi ostvaruju pristup hardverskim resursima računara.

Pojava Linux kernela

Na samom početku 90-ih godina 20. veka, Linus Torvalds, u to vreme student informatike na Univerzitetu u Helsinkiju u Finskoj (a danas jedan od najprepoznatljivijih pojedinaca u računarskoj industriji), proučavao je operativne sisteme i računarski hardver.

Da bi što bolje iskoristio potencijal svog tadašnjeg računara "tri-osam-šestice" (PC sa procesorom 30386 i 4MB RAM-a), mladi Linus je odlučio da kreira sopstveni operativni sistem, po ugledu na MINIX (u to vreme popularan i rado korišćen klon UNIX-a). *

Radio je vredno i već je 1991. objavio jezgro operativnog sistema (kernel), uz nekoliko portovanih programa (pre svih, bash i GCC) i, takođe - učinio je sav kod javno dostupnim preko akademskih računarskih mreža.

Poduhvat se ubrzo pročuo, nova i zanimljiva ideja (i uspešna izvedba), uzela je maha, a nedugo zatim počeli su da se pojavljuju softverski paketi koji su danas u svetu računarskih tehnologija poznati (i popularni) kao GNU/Linux distribucije. **

* MINIX je bio objavljen pod akademskom licencom koja je omogućavala studentima uvid u izvorni kod, ali, nije dozvoljavala modifikacije sistema (niti re-distribuciju), a krajem 80-ih i početkom 90-ih godina praktično nije bilo drugih besplatnih/open-source kernela - i upravo je takva "praznina" bila podstrek za studentski projekat koji je vremenom prerastao u kernel koji je danas širom sveta poznat kao Linux.

Što se tiče naziva, kernel, koji je danas poznat kao "Linux", na početku je bio objavljen pod nazivom "Freax" (Free = besplatno; "Freak" je tu (koliko nam je poznato), zato što je autor smatrao da "samo 'frikovi' mogu koristiti operativni sistem koji je napisao 'nekakav anonimni programer'", a "X" je dobro poznata i opšteprihvaćena aluzija na UNIX), međutim, posle nekog vremena, Ari Lemke, Linusov kolega sa univerziteta i administrator-volonter računarske mreže na kojoj je "Freax" bio objavljen, promenio je ("na svoju ruku") naziv u "Linux". Na početku, Linus nije bio zadovoljan novim nazivom i smatrao ga je sujetnim/egoističnim/neprimerenim, ali, postepeno je ublažio stav i prihvatio naziv koji je (rekli bismo da je tako) - tokom vremena praktično postao sinonim za slobodni softver.

Osim za Linux, ime Linusa Benedikta Torvaldsa vezuje se i za još jedan veoma značajan open-source projekat.

U pitanju je Git - sistem za kontrolu verzija projekata, odnosno, sistem za praćenje promena u datotekama (i tema za jedan od naših budućih članaka).

** U naslovu članka stoji odrednica "GNU/Linux" međutim, to nije zvaničan i pogotovo ne opšteprihvaćen naziv. Situacija je "'malo' komplikovanija" i, uz nešto pojednostavljivanja, može se objasniti na sledeći način ....

Linux je naziv za kernel operativnog sistema (centralnu komponentu OS-a, koja je nastala 1991. onako kako smo opisali), dok je GPL (GNU General Public License), licenca za distribuiranje open-source softvera koju je napisao Ričard Stalman, glavni pokretač projekta GNU.

(Naravno, GPL je takođe licenca pod kojom su objavljeni programi koji su nastali pod okriljem projekta GNU.)

Linus Torvalds je u početku koristio sopstvenu licencu za Linux, ili, bolje rečeno - nije koristio licencu GPL - zbog čega nije imao pravo da sa svojim kernelom distribuira GNU programe, međutim, 1992. je prihvatio GPL licencu za svoj projekat (Linux), čime su stvoreni uslovi da Linux bude objavljen kao zaokružen operativni sistem uz dodatak GNU alata, pri čemu nije postojala prav(n)a obaveza da se menja naziv projekta "Linux" (to jest, nije postojala obaveza da se dodaje odrednica "GNU").

U navedenim okolnostima (i uz podsećanje na to da smo već rekli da ćemo ponešto "pojednostaviti priču"), čelnici projekta GNU smatrali su (i smatraju i dalje), da "operativni sistem koji je nastao spajanjem Linux kernela i GNU alata" treba da nosi ime koje upućuje i na projekat GNU, to jest, smatrali su da je izostavljanjem odrednice "GNU" njihov doprinos na neki način umanjen, i stoga su u sledećih nekoliko godina predlagali nazive nalik na "GNU/Linux" ili "Lignux", ali - takvi predlozi "nisu prošli".

Svaki iole upućen korisnik .... "operativnog sistema čiji naziv nije baš najzgodnije navoditi na ovom mestu", :) zna da iza programa za administraciju stoji projekat GNU, a takođe bi se moglo reći da iza izostanka odrednice "GNU" ne postoje ikakve loše namere, i stoga bi se moglo zaključiti da se naziv "Linux" ("bez izmena i dodataka"), zadržao samo zato što "lepše zvuči" (od predloženih naziva koje smo prethodno naveli, i drugih naziva, koje nismo navodili).

Da sve bude "bolje", nazivi distribucija (više o distribucijama direktno u nastavku), najčešće ne sadrže ni odrednicu "Linux" (a kamoli: i "GNU", i "Linux" - istovremeno), ali, to iz nekog razloga nije predmet polemike.

Zarad opšteg obrazovanja, navešćemo i to da Linux može funkcionisati i bez paketa GNU Core Utils; naravno - pod uslovom da se obezbede alternativni programi za osnovnu administraciju (takvi programi postoje, ali, u ogromnoj većini situacija (to jest, u ogromnoj većini distribucija), alati za osnovnu administracija su upravo programi iz kolekcije GNU Core Utils).

Pošto uvažavamo ogroman doprinos obe strane i pošto prema obe strane gajimo simpatije (pri čemu možemo samo žaliti što sukob nije mogao biti izbegnut ili rešen na elegantniji način), u tekstovima koje pišemo, "dilemu" ćemo rešiti tako što ćemo koristiti uglavnom odrednicu "GNU/Linux", pogotovo kada se radi o celokupnim distribucijama (ali nećemo insistirati 'preko mere' i bez potrebe).

Na ovom mestu, svakako se da "naslutiti" (da ne kažemo - sasvim je jasno :)), da je istorija GNU/Linux distribucija čak i pomalo komplikovanija od onoga što smo do sada naveli, međutim, u nastavku se vraćamo na tehnikalije, a istorijatu UNIX-a, Projekta GNU i Linux-a, svakako ćemo posvetiti uskoro zaseban članak, ili bar dodatni prostor u nekom od budućih članaka (u uvodnom članku smo se potrudili da čitaocima koji su zainteresovani za dalje proučavanje istorije UNIX-a, pokreta GNU i Linux-a, pružimo razumnu osnovu za dalje istraživanje - a da pri tom ostale čitaoce ne preopteretimo informacijama na samom početku).

.... ostatak teksta >>

GNU/Linux distribucije - opšte karakteristike

Kada se u današnje vreme pomene termin "GNU/Linux distribucija", tipično se misli na softversku celinu koju čine, pre svega:

  • Linux jezgro (kernel)
  • GNU alati za svakodnevnu administraciju sistema (GNU Core Utilities)

Pored navedenih komponenti, prisutne su (tipično, ali ne i uvek), i sledeće komponente:

  • grafički server (X.Org, ili, kao modernije rešenje koje još nije za prave uzelo maha, Wayland)
  • menadžer prozora ili desktop okruženje (u oba slučaja u pitanju je softver koji omogućava pokretanje programa sa grafičkim interfejsom)
  • korisnički programi za svakodnevnu upotrebu

U većini distribucija, veoma važnu ulogu igra i menadžer paketa, program čija je svrha - ažuriranje operativnog sistema i korisničkih programa.

Neke distribucije su "minimalističke", sastavljene samo iz jezgra i osnovnih alata, čime je korisnicima ostavljena potpuna sloboda za izgradnju ostatka sistema (ali - i odgovornost (!)), dok su druge distribucije bogato opremljene i potpuno konfigurisane (po sistemu "ključ u ruke").

Naravno, postoji i mnoštvo distribucija čije su karakteristike "negde između" dve navedene krajnosti.

Međutim - koliko god delovalo čudno pri prvom susretu sa Linux-om (i kao što smo već nagovestili) - ne postoji "Operativni sistem Linux", niti centralizovana organizacija koja iza njega stoji (za razliku od operativnih sistema kao što su Windows i MacOs).

Ali (takođe) - i za razliku od operativnih sistema kao što su OpenBSD i FreeBSD (kojima ćemo u doglednoj budućnosti posvetiti više pažnje).

Umesto centralizovanog pristupa (budući da je u pitanju softver otvorenog koda), programerima i drugim stručnjacima data je sloboda da se udružuju i kreiraju sopstvene softverske celine po ranije navedenim obrascima

Distribucije nose sopstvene nazive (koji sadrže - ili ne sadrže - odrednice "GNU" i "Linux"), ali - u praktičnom smislu - uvek je pri susretu sa bilo kojom od distribucija odmah jasno da je u pitanju GNU/Linux (i u smislu načina na koji OS funkcioniše, i po pitanju izgleda).

U većini situacija, bez većih poteškoća se mogu zameniti grafički elementi i konfiguracione datoteke na određenoj distribuciji, tako da se distribucija praktično poistoveti sa nekom drugom distribucijom (mada, osim ako je u pitanju par "kozmetičkih" zahvata, takve izmene se u praksi najčešće ne obavljaju, jer ipak je mnogo lakše samo instalirati i koristiti drugu distribuciju). :)

"Fragmentirani" i "necentralizovani" pristup koji smo opisali, svakako podstiče kreativnost kod programera koji žele da samostalno ili u grupama kreiraju i održavaju sopstvene distribucije (a korisnicima omogućava izbor distribucije i prilagođavanje sistema po želji), ali, moramo se osvrnuti i na to, da - u najpraktičnijem smislu - ponekad nije lako uskladiti sve komponente određene distribucije (ni iz daleka), niti je lako uskladiti sve zahteve koji se pred distribuciju stavljaju, i stoga uspešno kreiranje i održavanje funkcionalne distribucije - svakako zaslužuje uvažavanje.

Navešćemo nekoliko najpopularnijih distribucija (zarad opšte informisanosti):

  • Debian i Slackware - predstavnici najstarijih distribucija koje se i dan-danas 'drže'
  • Ubuntu, Fedora, OpenSUSE, Mint i Red Hat - univerzalne i vrlo popularne distribucije za najrazličitije namene
  • Arch Linux, Artix Linux i Void Linux - "minimalističke" distribucije (bez podrazumevanog grafičkog okruženja), koje korisnicima omogućavaju da izgrade sistem sa komponentama po sopstvenom izboru

Što se tiče minimalističkih distribucija, pomenimo da ima i još "tvrdokornijih" od onih koje smo naveli: Gentoo i Linux From Scratch su distribucije koje, ne samo da ne dolaze sa unapred instaliranim grafičkim okruženjem, već zahtevaju od korisnika da sami kompajliraju jezgro sistema i druge komponente (to već definitivno nije opcija za početnike). :)

Pored navedenih distribucija, postoje i određene specijalizovane distribucije (pomenimo i u ovom slučaju samo nekoliko):

  • Kali Linux - distribucija opremljena specijalizovanim alatima i prilagođena testiranju mrežne sigurnosti sistema (popularno - "pen-testing")
  • Raspbery Pi OS - OS namenjen prenosnim uređajima (baziran na Linux-u)

Naravno, nismo izneli kompletan spisak Linux distribucija (ni približno): popularnih distribucija svakako ima još, relevantne distribucije broje se desetinama, a ukupan broj distribucija meri se stotinama (u ovom trenutku, postoji oko 600 GNU/Linux distribucija).

Kada je u pitanju izgled, GNU/Linux distribucije omogućavaju korisnicima najrazličitije oblike prilagođavanja korisničkog interfejsa, što se postiže izborom i podešavanjem desktop okruženja, ili menadžera prozora (pri čemu su opcije zapravo znatno brojnije i "šarolikije" u odnosu na Windows ili Mac) ....

Desktop okruženja

Desktop okruženja (eng. desktop environment(s)), predstavljaju relativno obimne i zaokružene softverske pakete, koji omogućavaju pokretanje programa koji koriste prozore i druge grafičke elemente.

Međutim, pored toga što pružaju mogućnost pokretanja GUI programa, desktop okruženja su (gotovo uvek) opremljena i grafičkim alatima za obavljanje administrativnih i drugih zadataka, zbog čega u velikoj meri podsećaju na Windows ili MacOS (što korisnicima koji sa navedenih sistema prelaze na Linux, svakako olakšava početni period prilagođavanja).

U najpraktičnijem smislu, 'poenta' desktop okruženja je (upravo) u pomenutoj opremljenosti programima sa GUI interfejsom.

Sa jedne strane, varijanta 'ključ u ruke' jeste 'zgodna' za manje iskusne korisnike (pogotovo za one koji se tek upoznaju sa Linux okruženjem), ali, iskusniji korisnici najčešće vole da sami biraju softver i zato se često odlučuju za menadžere prozora (u svakom slučaju, mogućnost izbora postoji, pri čemu obe opcije omogućavaju uspešno obavljanje različitih poslova).

Najpopularnija desktop okruženja (ali, naravno, ne i jedina), su:

  • KDE
  • Gnome
  • Xfce
GNU/Linux 01_01
Slika 1. - KDE/Plasma - veoma dopadljivo i funkcionalno desktop okruženje za GNU/Linux distribucije.

Na gornjoj slici možemo videti kako izgleda KDE/Plasma (moderno desktop okruženje za GNU/Linux distribucije): otvoreni meni omogućava pristup GUI programima koji nalikuju programima iz popularnih komercijalnih operativnih sistema (vidimo među prečicama kontrolni panel i nekoliko programa opšteg tipa), a primećujemo na desktopu i dva pokrenuta korisnička programa.

Menadžeri prozora

Menadžeri prozora (eng. window manager(s)), donekle su "u suprotnosti" sa prethodno navedenim načinom funkcionisanja desktop okruženja.

U pitanju su znatno jednostavniji softverski paketi, koji takođe omogućavaju pokretanje GUI aplikacija (GUI = Graphical User Interface (prozori i drugi grafički elementi)), ali, menadžeri prozora uglavnom ne sadrže dodatne alate, i stoga se od korisnika (praktično) očekuje da koriste terminal za administraciju sistema, i (naravno) - da samostalno opreme sistem drugim neophodnim programima.

Menadžeri prozora takođe zahtevaju i manje resursa za pokretanje (potpuno učitan OS sa pokrenutim menadžerom prozora, tipično zauzima manje od 250MB u operativnoj memoriji računara), i takva ušteda, iako naizgled ne igra preveliku ulogu (na iole modernijim računarima u današnje vreme) - svakako dobro dođe - i ostavlja dobar utisak.

Valja napomenuti da desktop okruženja tipično odlikuje memorijsko zauzeće koje je takođe sasvim umereno (ali, naravno, ne baš toliko umereno kao u slučaju većine menadžera prozora).

Istovremeno je bitno napomenuti i to da korisnici desktop okruženja mogu (a neretko i moraju), koristiti terminal za administraciju sistema, budući da podešavanja - u oba slučaja - na kraju 'završe' u konfiguracionim datotekama.

Najpopularniji menadžeri prozora su:

  • i3
  • dwm
  • Xmonad

Na donjoj slici vidimo menadžer prozora dwm (Dynamic Window Manager) ....

GNU/Linux 01_02
Slika 2. - Menadžer prozora dwm (Dynamic Window Manager). Menadžeri prozora liče na desktop okruženja, ali, nema dodatnih GUI programa za administraciju sistema (od korisnika se očekuje da navedene zadatke obavljaju kroz terminal).

.... a vidimo i pokrenut terminal, sa otvorenim editorom teksta.

Naizgled, veoma slično desktop okruženju koje smo videli na prvoj slici, ali, postoji razlika: desktop okruženja dolaze sa grafičkim programima za podešavanje sistema (takve programe nismo prikazivali; možete na internetu naći brojne video klipove koji prikazuju funkcionalnost desktop okruženja za GNU/Linux distribucije), dok GUI aplikacije za administraciju ne dolaze u paketu sa menadžerima prozora.

Najprostije rečeno, "što se tiče 'šminke'" (za menadžere prozora) - već ste videli skoro sve. :)

Zapravo, traka sa osnovnim sistemskim informacijama takođe se ne prikazuje u datom obliku sve dok je sami ne "hakujete" (na slici, navedeni odeljak je u gornjem desnom uglu, a vašoj pažnji preporučujemo, pre svega, veoma umereno zauzeće RAM memorije nakon pokretanja menadžera prozora - višestruko manje u odnosu na ono što se danas podrazumeva na Windows-u, MacOS-u, pa čak i u desktop okruženjima pod Linux-om).

Kasnije ćemo objasniti kako smo "hakovali" naslovnu traku menadžera prozora, povezavši nekoliko nezavisnih programa u prilično skladnu celinu.

U nastavku teksta (i narednim člancima na temu Linux-a), nećemo posvećivati preveliku pažnju desktop okruženjima, koja nalikuju grafičkim interfejsima operativnih sistema Windows ili MacOS; naravno - ne zato što desktop okruženja smatramo nečim "lošim".

Čitaoci koji se zanimaju za desktop okruženja za Linux, lako mogu pronaći na internetu veliki broj kvalitetnih tutorijala, video klipova i članaka, koje su kreirali razni korisnici koji su legitimno zainteresovani za takav pristup (pa ne smatramo da bi naš doprinos u navedenom kontekstu bio previše značajan). :)

Međutim, pre svega želimo da pažnju čitalaca usmerimo na pristup koji je nešto drugačiji, i prilagođen je što efikasnijem pokretanju i izvršavanju programa (najpre, razvojnih okruženja za kreiranje programa i sajtova, a potom i drugih programa).

Navedeni pristup, često se kolokvijalno naziva "Linux minimalizam".

"Linux minimalizam"

Ako desktop okruženje shvatimo (u prenesenom značenju), kao udoban, luksuzan automobil pogodan za krstarenje po putevima (ili kao manji putnički avion koji prevozi turiste iznad lepih predela i sl), menadžere prozora možemo uporediti sa bolidima Formule 1 ili sa reli automobilima, to jest, sa vozilima koja zanemaruju luksuz zarad performansi.

Ali, budite bez brige ....

Pre svega, okruženje većine menadžera prozora je sasvim udobno i za "opuštajuće"/"svakodnevne" aktivnosti (gledanje filmova, slušanje muzike, 'surfovanje' po internetu i sl), a ako ipak smatrate da nije tako, Linux distribucije omogućavaju da pored menadžera prozora nesmetano instalirate i desktop okruženje po svom izboru (na primer: posle programiranja, izlogujete se iz menadžera prozora dwm, ulogujete se na KDE desktop i gledate YouTube klipove).

Sa druge strane, desktop okruženja (baš kao i luksuzni automobili i putnički avioni), takođe imaju sasvim zadovoljavajuće performanse, ali, u radu sa njima, ipak postane jasno da se težilo kompromisu između udobnosti i performansi (pri čemu ne možemo reći da takav kompromis ispoljava ikakve "zabrinjavajuće nedostatke"). :)

Da se vratimo na programiranje ....

Pre svega, jedna od glavnih odlika menadžera prozora je usmerenost na rad sa više radnih površina koje se lako mogu menjati preko jednostavnih prečica

U praksi, to znači da na jednoj radnoj površini možemo otvoriti, na primer, editor ....

Obratite pažnju na dugmiće (1 - 9), u gornjem levom delu na slikama.

GNU/Linux 01_09
Slika 3. - Na radnoj površini #1 - pišemo skriptu.

.... na drugoj radnoj površini možemo otvoriti terminal (preko koga ćemo pokretati npr. Python skripte) ....

GNU/Linux 01_10
Slika 4. - Na radnoj površini #2 - pokrećemo skriptu.

.... i potom se možemo prebacivati sa jedne radne površinu na drugu, preko prečica ALT+1 i ALT+2 (zapravo, najčešće se umesto tastera ALT ipak koristi Win taster).

Desktop okruženja takođe podržavaju opciju za rad sa više virtuelnih radnih površina, ali, u praksi, "brzinsko prebacivanje" svakako funkcioniše bolje (brže/lakše/prirodnije), sa menadžerima prozora.

Navedeni pristup može delovati pomalo čudno na početku (dok se korisnik ne uhoda), ali, po mnogo čemu je zapravo racionalniji (i prosto rečeno - zgodniji), onda kada je potrebno da se često prebacujemo sa jednog prozora, koji treba da bude prikazan preko celog ekrana, na drugi prozor (a ako je potrebno na jednu virtuelnu radnu površinu smestiti dva ili više prozora, i to je (naravno) moguće).

Kad smo već kod "naravno mogućeg", pomenimo da menadžeri prozora omogućavaju i menjanje dimenzija prozora (programi tipično rade u full-screen režimu, ali, ne mora biti tako), a moguće je i otvaranje "prozora-unutar-prozora" (open/save dijalozi i sl).

U svemu, korisnik tipično stekne naviku da određeni program uvek pokreće na radnoj površini sa određenim rednim brojem, i stoga, prebacivanje sa jedne radne površine na drugu - lako "uđe u prste" (drugim rečima: ako podsvesno uvek znamo "koji program nas gde čeka", svesnu pažnju možemo usmeriti na bitnije zadatke).

Na primer, ako editor (uvek) pokrećemo na radnoj površini #1, Python konzolu na radnoj površini #2, a internet browser na radnoj površini #9, uvek ćemo znati gde se bilo koji od programa nalazi, i stoga ćemo do programa uvek moći da dođemo lako, preko tastaturnih prečica ("mišićna memorija" po navedenim pitanjima, tipično se izgradi veoma brzo).

U opštem smislu (kada su u pitanju menadžeri prozora), pristup koji podrazumeva korišćenje jednostavnog ali i dalje veoma funkcionalnog grafičkog okruženja, u kome se komande za podešavanje sistema zadaju preko terminala, na samom početku (budimo iskreni) ume pomalo da "žulja", ali, vredi primetiti dve stvari:

  • na početku - korišćenje konzolnih programa u terminalu predstavlja priliku za sticanje uvida u podešavanja sistema i učenje (priliku koju korišćenje GUI programa koji "skrivaju terminal", bojimo se, u velikoj meri uskraćuje)
  • kada se korisnik uhoda - korišćenje terminala znatno olakšava i ubrzava obavljanje zadataka na računaru (ne, ne šalimo se - ni najmanje :)), i - takođe - posle nekog vremena, konzolni programi - ne samo da ne "žuljaju", već (na čudan način) - postanu i veoma "udobni". :)

Pogledajmo i nekoliko primera.

Primeri pokretanja programa

Sistemska podešavanja se obavljaju preko terminala (na sledećoj slici možemo videti pozivanje komande za ažuriranje instaliranih programa (u pitanju je program pacman na distribuciji Arch Linux)):

GNU/Linux 01_03
Slika 5. - Osvežavanje instaliranih programa preko programa pacman u distribuciji Arch Linux.

Na gornjoj slici takođe možemo primetiti i "bojenje sintakse" u terminalu, uz prepoznavanje pravilno zadatih komandi (zelena boja), ili nepravilno zadatih komandi (crvena boja), a u nastavku ćemo detaljnije prodiskutovati i o tome šta su zapravo: terminal, shell i komandna linija (odnosno, 'komandni prompt').

Ako ste pažljivo ispratili naše članke o implementaciji syntax highlighter-a, setićete se da je vreme potrebno za izvršavanja takvih programa, reda veličine nekoliko milisekundi - za dokument veličine (okvirno) nekoliko A4 stranica (sa programskim kodom).

Shodno navedenom, budite bez brige po pitanju zvanom "da li 'bojenje sintakse' previše opterećuje shell program", jer, iako se moderni shell prompt-ovi daju "pretrpati" raznim opcijama, * bojenje sintakse nije "deo problema".

* Mogu se "pretrpati" - ako korisnik tako želi (sami po sebi, shell programi su uglavnom "nasušni i funkcionalni").

Pored podešavanja sistema preko CLI programa, * u terminalu se mogu pokretati i TUI programi * (na slici ispod, možete primetiti sjajni editor teksta Vim, koji smo pominjali prošle godine na našim stranicama, a možete primetiti i program htop koji prikazuje procesorsko i memorijsko zauzeće, pokrenute procese i sl):

GNU/Linux 01_04
Slika 6. - Editor teksta Vim, i htop (program za prikaz sistemskih procesa), pokrenuti u terminalu.

* U prethodnom odeljku, 'nabacali' smo ("ne baš slučajno"), nekoliko odrednica koje korisnici često poistovećuju, i stoga je red da pojasnimo razlike:

  • CLI (Command Line Interface) - "starinski" tekstualni režim izvršavanja programa "liniju-po-liniju" (korisnici unose podatke (po potrebi), naredbe se izvršavaju, rezultat obrade se na kraju prikazuje korisniku (a kada se program izvrši, ponovo se prikazuje komandni prompt))
  • TUI (Terminal User Interface, ili Text-based User Interface) - radno okruženje idejno slično grafičkom okruženju, ali, tehnički izvedeno preko mreže znakova iz terminala (funkcionalni elementi interfejsa, kao što su prozori, meniji i sl, doslovno se iscrtavaju preko specijalnih znakova)

Kao što vidimo: pacman (program za ažuriranje sistema sa prve slike), spada u grupu CLI programa, a Vim i htop (programi sa druge slike), spadaju u grupu TUI programa.

Pored konzolnih programa, preko menadžera prozora moguće je pokretati i GUI programe na kakve ste navikli (recimo, web browsere) ....

GNU/Linux 01_05
Slika 7. - Web browser pokrenut u okviru window menadžera.

.... kao i druge programe (na kakve možda niste navikli) ....

GNU/Linux 01_06
Slika 8. - Program za 3D modelovanje (Blender), pokrenut u okviru window menadžera.

.... pri čemu (naravno), otvaranje sporednih/pomoćnih prozora, takođe nije nikakav problem (kao što smo već naveli) ....

GNU/Linux 01_07
Slika 9. - Menadžeri prozora omogućavaju nesmetano otvaranje, kako glavnih, tako i sporednih prozora u programima.

Na poslednje dve slike možete videti program Blender, open-source program za 3D modelovanje, animaciju i vizuelizaciju, i (kao što možete primetiti), dizajn interfejsa je veoma dopadljiv, a sam program se posle dve decenije razvoja može nositi sa nemerljivo skupljim komercijalnim rešenjima (pri čemu ni pomenuti komercijalni programi nisu pre dvadesetak godina bili "ono što su danas").

Kratak rezime

Budući da smo 'pretresli' sve što je 'trebalo da bude pretreseno' za sam početak, napravićemo kratak rezime pristupa u podešavanju distribucije koji predlažemo čitaocima (koji na Linux-u žele da se bave programiranjem).

Pored korišćenja Linux kernela i osnovnih GNU alata (kao osnove sistema koja se sreće u skoro svim Linux distribucijama), pristup podrazumeva:

  • korišćenje menadžera prozora umesto desktop okruženja
  • oslanjanje na jednostavne (ali veoma moćne) programe u terminalu
  • neizbegavanje programa sa grafičkim okruženjem

Što se tiče poslednje stavke, među krajnje "tvrdokornim" poštovaocima Linux-a (ili bar među onima "najtvrdokornijima"), postoji tendencija gotovo potpunog oslanjanja na programe u terminalu (recimo, postoje čak i web browseri za terminal koji samo prikazuju tekstualni sadržaj HTML dokumenata, a postoje (manje-više) i programi svih drugih namena).

Naš pristup je ipak umereniji (makar u odnosu na "vrhunski nivo tvrdokornosti":)), i podrazumeva da "nećemo programima zamerati na tome što imaju prozore", to jest - programe ćemo ocenjivati samo u smislu softverskog dizajna, optimizovanosti i sl.

Kao što smo ranije naveli, i sami terminali su se "prolepšali" tokom vremena (već smo to videli na slikama), i - što je važnije - postali su veoma 'udobni' za obavljanje svakodnevnih aktivnosti.

GNU/Linux 01_11
Slika 10. - Primer pokretanja DIY programa u 'udobnom terminalu' (ovoga puta su svi terminali na jednoj radnoj površini).

U pravom smislu reči, iza svega stoje sledeće okolnosti: bez obzira na to što sve "liči" na pravi, stari tekstualni režim kakav se sretao do pre 20 ili 25 godina (a po potrebi se koristi i danas) - u pitanju su ipak programi koji funkcionišu u grafičkom radnom okruženju i podržavaju 24-bitne boje i transparentnost (i naravno druge opcije, kao što su: izbor oblika i veličine slova, "bojenje sintakse" za shell prompt i sl).

Sa druge strane, sam način rada, jeste "starinski" (tekstualne komande koje je potrebno naučiti pre upotrebe), i stoga (ako nas pitate), radi se o najboljoj mogućoj kombinaciji.

Budući da smo u diskusiju još pre nekog vremena uveli određene pojmove koji često izazivaju nedoumice, u nastavku ćemo se osvrnuti (upravo), na smisao pojmova:

  • terminal
  • shell
  • prompt

Pre toga, još malo opšte diskusije ....

U cilju popularizacije Linux-a i slobodnog softvera, neretko se napiše ili kaže da je prelazak sa Windows-a na GNU/Linux krajnje jednostavan (a pogotovo je to slučaj sa "neformalnim" diskusijama, na forumima i sl).

Tvrdnja da je prilično kompleksan OS jednostavan za savladavanje, svakako "lepo zvuči" (doduše, ponekad i jeste tako, "baš kako piše" :)), međutim, najčešće je početni period uhodavanja obeležen bar ponekim sitnijim poteškoćama i nedoumicama (da ne kažemo "dečjim bolestima"), i to je nešto što pojedini iskusniji korisnici Linux-a (koji su, naravno, i sami nekada bili "mali, uplašeni početnici koji postavljaju 'svakakva' pitanja") - vrlo često "elegantno smetnu s uma".

Međutim, ne treba u navedenim okolnostima tražiti loše namere, niti želju za obmanjivanjem ("čast" izuzecima), i stvari treba protumačiti na sledeći način: osim u slučaju retkih pojedinaca koji "zapravo i baš skroz", "ne paze šta pričaju", iza svega obično samo stoji želja da se neiskusnijim kolegama predoči da im za dostizanje solidnog nivoa poznavanja i umeća u novom okruženju, neće biti potrebni "nadljudski napori" i "gomila vremena" (naravno, pod uslovom da ipak razumete da se neće sve desiti "odmahsad", bez ikakvog uloženog truda i "samo od sebe"), ili, jednostavnije: velika većina stvari koje na početku deluju teško, već posle nekoliko nedelja (ili meseci), delovaće prilično jednostavno (to jest, najprostije rečeno - bavljenje Linux-om nije nikakav "bauk"). :)

Kada je u pitanju "minimalistički" pristup u korišćenju GNU/Linux sistema (koji podrazumeva upotrebu menadžera prozora (umesto desktop okruženja)), što je pristup koji na našim stranicama predlažemo čitaocima (i, pre svega, pristup koji biramo za sebe u svakodnevnom radu) - svakako takav pristup smatramo optimalnim (i najzanimljivijim), ali, ne odbacujemo druge pristupe i ne smatramo ih "nepravim", "nepravilnim" i "neLinuksovskim" (pogotovo iz perspektive novih korisnika koji tek čine prve korake).

U prethodno navedenom kontekstu, može se reći da je upravo izlazak iz "opakog crnog terminala sa belim slovima" i ubrzani razvoj "na oko lepih" grafičkih okruženja (tokom prvih godina 21. veka), doprineo povećanju popularnosti GNU/Linux distribucija (i drugih srodnih UNIX-olikih operativnih sistema otvorenog koda), što je svakako približilo open-source softver mnogima koji mu inače ne bi posvetili pažnju.

Međutim, posle početnog upoznavanja, nije teško uvideti da se pravi potencijal Linux-a "krije iza terminala" (to je već manje-više neosporivo :)), a rad u terminalu - ne samo da nije iskorenjen u međuvremenu (srećom, nikada nije ni doveden u pitanje), već, naprotiv - možemo reći da je i na ovom polju bilo unapređenja, to jest, simulacije terminala takođe su vremenom postajale funkcionalnije i udobnije - i pri tom lepše i dopadljivije - pri čemu je uglavnom očuvan minimalistički duh starih terminala ....

Na kraju krajeva, može se reći da prozori u početku deluju "lepše" od terminala, može se reći da je rad sa prozorima lakši (mada, većina korisnika koji zavole rad u terminalu, više su nego skloni da takve tvrdnje dovedu u pitanje), ali, treba znati i to da se "ispod haube" (u većini slučajeva; kao što smo već nagovestili ranije), dešava pozivanje istih onih komandi koje sami možemo pozivati preko terminala.

.... ostatak teksta >>

Najosnovnije "tehnikalije"

Pre nego što pređemo na "konkretnije" teme (pozivanje komandi, struktura direktorijuma, principi "UNIX filozofije" i sl), pozabavićemo se najosnovnijim odrednicama (odnosno, konkretnim pojavama koje stoje iza samih termina), sa kojima ćete se u radu sa Linux distribucijama susretati (doslovno) svakodnevno.

Kao što smo već naveli, osvrnućemo se pre svega na pojmove "terminal" i "shell (prompt)" i uvešćemo ("ad hoc") nekoliko osnovnih komandi, preko kojih ćemo demonstrirati šta se u osnovnom smislu "može očekivati" od Linux-a.

Detaljnijem opisu osnovnih i naprednijih komandi, posvetićemo sledeća dva članka.

Terminal

U "stara" vremena, kada su računari tek počinjali da se koriste masovnije (cca. početak sedamdesetih godina 20. veka), model eksploatacije računara u preduzećima podrazumevao je pristup koji je drugačiji od današnjeg (korišćenje radnih stanica koje su međusobno umrežene, ali, za računanje koriste sopstvene resurse): nekada je sve zadatke obavljao centralni računar (mainframe), a zahtevi za obradu slali su se preko terminala - radnih stanica koje predstavljaju kombinaciju tastature i monitora, to jest, ulazno-izlaznu jedinicu preko koje se naredbe zadaju u tekstualnom obliku.

"Ne može biti gore od toga, zar ne?!" Ako ste pomislilili nešto slično, ili ako ste nekada pomislili da je naziv "print" (koji u mnogim programskim jezicima označava standardnu naredbu izlaza), izabran "simbolično" ili "slučajno", spomenućemo da je sve do (okvirno) sredine sedamdesetih godina prošlog veka (kada su terminali i monitori postali uobičajeni), naredba "print" označavala (odnosno pozivala), upravo ono što sam naziv sugeriše - štampanje - na papiru, tipično preko linijskog štampača.

(Dakle, nije još uvek bilo ispisa slova na ekranu, i (usput), na slici na kojoj su prikazani Ken Tompson i Denis Riči, mogli ste videti jedan od takvih 'starinskih' linijskih štampača.)

Naravno, u još starija vremena, nije bilo ni štampača, što znači da su se programi izvršavali - na još komplikovaniji način.

U odnosu na takav hardver, terminali deluju više nego savremeno. :)

U okvirima modernih operativnih sistema, odrednica "terminal" tipično označava program u kome se naredbe zadaju (i rezultati prikazuju) - u obliku teksta, ali, kao što smo već objasnili, najčešće su u pitanju programi koji se pokreću u grafičkom radnom okruženju.

Pokretanje web API-ja u terminalu
Slika 11. Primer pokretanja web API aplikacije u terminalu.

Po želji, možemo i dalje raditi u pravom tekstualnom režimu (bez pokretanja grafičkog servera), međutim, najčešće za tako nečim nema potrebe (simulacije terminala su programi koji su funkcionalniji, znatno prijatniji za svakodnevni rad, a svakako i estetski dopadljiviji - u svom "minimalizmu").

Međutim, "shell" koji se pokreće u terminalu, skoro je 'isti' onaj shell * koji se pokretao ranije u "pravom" tekstualnom režimu (u okviru UNIX-olikih sistema), dok još nije ni bilo grafičkih simulacija terminala.

* "Isti onaj shell" - u prenesenom smislu (ne postoji samo jedan shell program, ima ih više, ali, u idejnom smislu i u smislu pojavnog oblika - vrlo su slični (i osvrnućemo se u nastavku na nekoliko najpopularnijih)).

Shell (prompt)

Kada u nekom UNIX-olikom operativnom sistemu otvorimo terminal, i kada ugledamo "tekst" sledećeg formata ....

		
[korisnik_1@codeblog ~/git] $ _
		
	
Slika 12. - Shell prompt u terminalu.

.... u pitanju je shell prompt (tj. komandna linija):

  • Shell * je program koji učitava i tumači naredbe korisnika.
  • Shell prompt je spoljašnji (vidljivi) deo shell programa, koji korisnicima omogućava unos naredbi u tekstualnom obliku.

Pomalo slikovito: možemo reći da je shell prompt, spoljna manifestacija shell programa.

* Sam naziv "shell" (eng. školjka), predstavlja: "spoljašnji omotač operativnog sistema", to jest, upravljačke mehanizme koji su dostupni korisnicima, ili, još praktičnije (modernim rečnikom) - ono što danas nosi naziv korisnički interfejs.

Termin "shell" nismo prevodili, iz praktičnih razloga (ali već smo objasnili šta je osnovni smisao shell programa, a u nastavku ćemo ponuditi i dodatna objašnjenja).

Šta znači kada navedemo da shell program tumači naredbe (jer - na prvi pogled - deluje da "nema šta da se tumači, i da se valjda zna čemu naredbe služe!" :))?!

Najjednostavnije: shell program mora ispitati sadržaj i smisao teksta naredbe.

Shell programi omogućavaju veoma zanimljive načine vezivanje komandi (videćemo primere već u nastavku), ali, takva sloboda (kako obično biva), ostavlja i mogućnost zloupotrebe, * ili jednostavno - mogućnost pojave grešaka, ** i stoga je potrebno uspostaviti mehanizam koji vodi računa o navedenim pojedinostima.

* Ako korisnik pokrene (na primer), komandu rm -r /etc, shell program treba da spreči izvršavanje komande za uklanjanje direktorijuma sa konfiguracionim datotekama, pogotovo ako je komanda pokrenuta bez administratorskih privilegija (slikovito: program treba da "odmahne rukom" i ne treba da preduzima dalje korake, budući da je uklanjanje direktorijuma sa datotekama koje sadrže konfiguraciju sistema - veoma loša zamisao)!

** Što se tiče ('običnih') grešaka, uzmimo sledeći primer: ako pri prebacivanju u poddirektorijum korisnik unese komandu O' hrabri Linukse, prebaci me u lepi poddirektorijum, umeto (regularne) komande cd lepi_poddirektorijum, shell program treba da prijavi da je korisnik pokušao da pokrene nepostojeću komandu.

Drugim rečima, shell programi interpretiraju naredbe veoma slično tome kako Python ili Node.JS interpretiraju naredbe kada se interpretator pokrene u interaktivnom režimu, tj. bez navođenja skripte koju treba pokrenuti (za primer ćemo uzeti Node) ....

		
[korisnik_1@codeblog ~/git] $ node
Welcome to Node.js v17.4.0.
Type ".help" for more information.
> 1+1
2
> console.log("Dobar dan")
Dobar dan
undefined
>_
		
	
Slika 13. - NodeJS interpretator (pokrenut u terminalu).

.... a kada već sve "liči na Python ili Node JS", onda nije veliko iznenađenje ni to da su shell programi na UNIX-olikim operativnim sistemima (kao što ste do sada verovatno i sami pretpostavili), u stanju da pokreću i skripte, uz korišćenje promenljivih, grananja, funkcija i sl.

Da pojasnimo (dodatno) princip interpretacije: sledeća naredba u shell okruženju ....

		
$ ls -la
		
	
Slika 14. - Primer naredbe koja se pokreće preko shell prompta.

.... preko koje se u UNIX-olikim operativnim sistemima "izlistava" sadržaj direktorijuma (tj. 'foldera'), uz prikaz skrivenih direktorijuma i datoteka (-a), i tako da se prikazuje detaljan spisak u kome su sve stavke jedna ispod druge (-l), može delovati kao integralni deo operativnog sistema (koji "nekako" ne podleže prepoznavanju, interpretaciji i sl), ali - zapravo nije!

U pitanju je zaseban program, * - koji se poziva preko komandne linije (tj. "shell prompta").

Po unosu tekstualne komande, shell program analizira 'sadržaj teksta' (uneti naziv komande i predate argumente), posle čega - ako je sve u redu - program biva pokrenut.

* 'Komande pod Linux-om', u većini sučajeva su zapravo zasebni programi za koje doslovno postoje izvršne datoteke u jednom od sistemskih direktorijuma.

Takođe (usputna napomena): uobičajeno je da se pri prikazivanju shell naredbi za UNIX-olike operativne sisteme (u tekstovima o programiranju), na početku navede znak $ - ukoliko je u pitanju naredba koja se može izvršiti sa uobičajenim korisničkim privilegijama, ili znak # - ukoliko je u pitanju komanda za koje su potrebne administratorske (tj "root") privilegije (koje se tipično zadaju preko dodatne komande sudo).

U pitanju je "ostatak" iz starijih vremena, kada su komandne linije shell programa tipično sadržale samo znak koji prikazuje nivo privilegija trenutno prijavljenog korisnika.

U svakom slučaju, ako isprobavate programski kod sa slika, naredbe (koje treba da unesete), počinju posle znaka $ (ili #).

Ako je ls samo običan program, možete verovatno pretpostaviti da isto važi i za shell (odnosno, verujemo da već naslućujete da je korisnicima omogućeno da samostalno izaberu shell program).

Tokom proteklih nekoliko decenija, sledeći shell programi izdvojili su se po pitanju kvaliteta i popularnosti među korisnicima:

  • bash (Bourne Again Shell) - podrazumevani shell u većini GNU/Linux distribucija (i, sam po sebi, sasvim funkcionalan program)
  • FISH (Friendly Interactive Shell) - shell program koji je tipično popularan među korisnicima Linux-a koji su savladali osnove i vole dodatnu funkcionalnost (auto-complete, auto-suggestions, bojenje sintakse), ali, ne žele još uvek da se 'bakću' detaljnim podešavanjem konfiguracionih datoteka
  • zsh (Z-Shell) - objektivno najsveobuhvatniji shell program koji nudi brojne mogućnosti za prilagođavanje (ali i brojne mogućnosti za "pretrpavanje" shell prompt-a, ako korisnik sebi da "previše oduška")

(Na slici br. 2 i drugim slikama, mogli ste videti program Zsh.)

Nijedan od tri pomenuta programa ne treba izbegavati: Bash je krajnje adekvatan i sasvim funkcionalan shell (kome doduše nedostaje nekolicina dodatnih opcija; pre svega, automatske sugestije u vezi sa prethodno pozivanim programima i sl), kada je u pitanju Fish, nedostaci se odnose "samo" na nemogućnost pokretanja standardnih skripti kakve Bash i Zsh mogu da pokreću, dok je Zsh pomalo nepristupačan prema početnicima, s obzirom na to da su podrazumevana podešavanja prilično "nasušna".

Posle najosnovnijih tehnikalija, usmerićemo se na: nekoliko osnovnih Linux komandi, principe UNIX-filozofije, nekoliko praktičnih primera, i (na kraju), na strukturu direktorijuma (tj. foldera) u UNIX-olikim operativnim sistemima.

Nekoliko najosnovnijih komandi u UNIX-olikim sistemima

Pored komande ls, navešćemo još nekoliko osnovnih komandi koje se koriste u GNU/Linux distribucijama (i drugim "Nix" sistemima):

		
# mkdir - kreiranje direktorijuma

$ mkdir /home/codeblog/slike

# cp - kopiranje datoteka i direktorijuma
# mv - premeštanje/preimenovanje datoteka i direktorijuma

$ cp /home/korisnik_1/slike/slika1.png /home/codeblog/slike
$ mv /home/korisnik_1/slike/slika1.png /home/codeblog/slike

# cat - prikaz sadržaja tekstualnih datoteka (izvorno, spajanje
# tekstualnih datoteka, za šta se komanda i dalje može koristiti);
# cat - skraćeno od "concatenate"

cat /home/korisnik/codeblog/telefonski_imenik.txt
		
	
Slika 15. - Često korišćene naredbe u UNIX-olikim operativnim sistemima.

Kao što smo već nagovestili, pregled nekoliko najosnovnijih komandi prikazan je samo zarad 'najelementarnijeg' upoznavanja (i da bi vam olakšao praćenje ostatka teksta). U sledećim poglavljima, svakako ćemo se upoznati sa još kojom komandom, ali, pravo upoznavanje sa komandama počinje (tek) u sledećem članku.

Posle upoznavanja sa samim osnovama, reklo bi se da je došao trenutak da se upoznamo i sa idejama koje celokupno iskustvo sa UNIX-olikim operativnim sistemima čine posebnim (bez brige, biće i komandi - i te kako). :)

UNIX filozofija (implementirana u GNU/Linux distribucijama)

Takozvana "UNIX filozofija" zasniva se na sledećim osnovnim principima:

  • svaki program treba da obavlja samo jedan posao - na najbolji i najefikasniji mogući način
  • programi treba da sarađuju međusobno (to jest, da se međusobno povezuju i razmenjuju tekstualne poruke)
  • u skladu sa prethodnim principom: pri projektovanju određenog programa, treba voditi računa o tome da tekstualni podaci koje program ispisuje na izlazu, budu formatirani tako da mogu biti korišćeni kao ulazni podaci u drugom programu
  • za nove zadatke koje nije moguće rešiti povezivanjem dostupnih programa, potrebno je pisati nove programe - umesto opterećivanja postojećih programa dodatnim opcijama
  • format za razmenu podataka između programa (kao što je već nagovešteno), treba da bude (običan) tekst

Navedena pravila ne bi imala previše smisla da je "UNIX filozofija" nastala kao manifest koji je iznet u javnost kao nešto što samo "deluje lepo" (ali nema dubljeg smisla) - pre nego što je išta od navedenog isprobano u praksi.

Da ne kažemo: "manifest kakav bi se lako mogao zamisliti u današnje vreme". :)

Principi koje smo naveli, polako su poprimali oblik upravo kroz praksu, i tek je onda sve "bačeno na papir" (kao svojevrstan 'amanet' za buduće generacije).

Sa jedne strane - može se reći da su optimalna rešenja proistekla iz nužde (kao što smo već naveli, u vreme nastanka UNIX-a, memorija je i dalje bila veoma skupa i prilično nedostupna, i stoga je postojala velika potreba za uštedom memorije (takođe, procesori su bili prilično spori)).

Sa druge strane, tvorci UNIX-a su svakako imali i "dugoročnu viziju", to jest, još na početku su uvideli da principi po kojima projektuju operativni sistem i druge programe, mogu samo funkcionisati bolje - onda kada veće količine memorije postanu dostupne (i kada procesori postanu brži).

Pogledaćemo u sledećih nekoliko odeljaka kako sve funkcioniše - u praksi.

Kao suprotnost prethodno opisanog pristupa (koji je tipičan za UNIX-olike operativne sisteme), često se navodi pristup kakav se sreće u Windows okruženju, gde postoji trend da se u programe tokom razvoja uvode nove opcije koje vrlo često nemaju veze sa osnovnom namenom, pri čemu program postaje sve više i više "pretrpan" (i pri tom, najčešće, program nije ni na početku bio projektovan tako da funkcioniše kao manja funkcionalna celina koju korisnici mogu povezivati sa drugim programima, na kreativne načine).

Postoji i popularan naziv za programe koji su preopterećeni nepotrebnim dodatnim opcijama - "bloatware" (eng. bloated - naduveno).

S tim u vezi, mogli bismo (delimično u šali) da predložimo termin "leanware", koji bi označavao pravilno projektovane programe koji funkcionišu "glatko" i nisu preopterećeni nepotrebnim dodacima (ako niko nije do sada predložio takav naziv, evo, mi predlažemo, pa neka ostane u upotrebi bar dok se ne iskoreni pojava "naduvenog" softvera). :)

Protočna obrada i redirekcija

Termini "protočna obrada podataka" i "redirekcija", koji se vezuju pre svega za kontekst upotrebe u UNIX-olikim operativnim sistemima (ali i za razne druge situacije), označavaju postupke za prosleđivanje podataka između programa i datoteka (najčešće u okviru jedne tekstualne naredbe).

Odmah ćemo sagledati i jedan jednostavan primer ....

Počnimo od izvršavanja (reklo bi se) najosnovnije komande, ls, i - pošto još uvek ne koristimo koncept protočne obrade - posle pokretanja se (očekivano) dobija izlaz sledećeg oblika:

		
-rw-r--r--  2  codeblog  users    241  Nov 27 14:51  27112021_145159.log
-rw-r--r--  2  codeblog  users     12  Nov 27 18:12  27112021_181221.log
-rw-r--r--  2  codeblog  users   2439  Nov 28 00:44  28112021_004415.log
-rw-r--r--  2  codeblog  users  50157  Nov 28 08:33  28112021_083321.log
-rw-r--r--  2  codeblog  users    143  Nov 28 11:54  28112021_115455.log
-rw-r--r--  2  codeblog  users     19  Nov 29 09:08  29112021_090801.log
-rw-r--r--  2  codeblog  users   5221  Nov 29 17:22  29112021_172257.log
-rw-r--r--  2  codeblog  users    242  Nov 30 02:20  29112021_022024.log
-rw-r--r--  2  codeblog  users    322  Nov 30 06:19  29112021_061937.log
-rw-r--r--  2  codeblog  users  18117  Nov 30 07:35  29112021_073541.log
-rw-r--r--  2  codeblog  users   2291  Nov 30 14:30  29112021_143051.log
-rw-r--r--  2  codeblog  users    144  Nov 30 19:21  29112021_192155.log
		
	
Slika 16. - Prikaz datoteka u određenom folderu, preko komande ls (u primeru koji prikazujemo, "pravićemo se" da su datoteke znatno brojnije i da ih treba prikazati na efikasan način).

Smatraćemo da izlaz (simbolički) predstavlja izrazito obiman tekst sa 'gomilom podataka' (koje nije jednostavno sagledati odjednom), * iz čega proizilazi pitanje: kako se iz teksta mogu izdvojiti samo one informacije koje su u određenom trenutku značajne (smatraćemo da nas zanimaju samo slogovi koji su vezani za jedan konkretan datum).

* Zarad preglednosti, nećemo (doslovno) prikazivati obimniji primer (jer - s obzirom na poveći obim uvodnog članka - ne verujemo da iko želi da vidi još i log datoteku od nekoliko hiljada linija teksta). :)

Program ls (koji je obavio svoj zadatak), ne sadrži opcije za pretragu (shodno UNIX filozofiji), i stoga ćemo rešenje tražiti na drugom mestu.

Protočna obrada ("pajpovanje")

Na UNIX-olikim operativnim sistemima, protočna obrada podrazumeva slanje podataka iz jednog programa u drugi. *

Program ls (koji koristimo za primer), proizvodi rezultat u obliku standardnog teksta, a takav tekst ne mora obavezno biti prosleđen na standardnu izlaznu jedinicu (tj. ne mora biti ispisan na ekranu), već može biti preusmeren tako da predstavlja ulazni podatak u drugom programu.

* Gornja definicija je vrlo slična definiciji sa početka prethodnog odeljka, ali, protočna obrada, to jest - "pajpovanje", ** nema (striktno govoreći) veze sa čitanjem iz datoteka i/ili upisom u datoteke (za I/O operacije sa datotekama, koristi se redirekcija (tema sledećeg odeljka)).

** U svakodnevnom govoru, protočna obrada je poznatija kao "pajpovanje" (eng. piping), i stoga ćete u našim člancima moći da pročitate da se podaci "pajpuju u program_xyz" (jer smatramo da se izbegavanjem izraza koje programeri zapravo koriste u svakodnevnoj komunikaciji, samo može umanjiti kvalitet informacija koje predstavljamo).

Naravno, moći ćete da pročitate i to da se podaci "prosleđuju u program_yzx", budući da još manje želimo da izbegnemo (ili, još gore - "poništimo"), upotrebu adekvatnih termina iz maternjeg jezika.

U praktičnom smislu, naredba iz prethodnog odeljka se može dopuniti na sledeći način:

		
ls -la | grep "Nov 28"
		
	
Slika 17. - Primer "pajpovanja" komandi (ulazni podaci za komandu grep su, praktično, izlazni podaci prethodno izvršene komande).

Ovoga puta, umesto da tekst koji je nastao pokretanjem programa ls bude prikazan na ekranu - biće prosleđen programu grep u svojstvu ulaznog podatka.

Program grep * traži (odnosno, praktično - izdvaja), redove koji sadrže nisku "Nov 28", i stoga se dobija sledeći izlaz:

		
-rw-r--r--  2  codeblog  users   2439  Nov 28 00:44  28112021_004415.log
-rw-r--r--  2  codeblog  users  50157  Nov 28 08:33  28112021_083321.log
-rw-r--r--  2  codeblog  users    143  Nov 28 11:54  28112021_115455.log
		
	
Slika 18. - Rezultat izvršavanja komande sa prethodne slike.

* Program grep je konzolni program koji omogućava pretragu tekstualnih obrazaca u niskama i tekstualnim datotekama.

(Za početak smo naveli samo jednostavnu i praktičnu definiciju, a što se tiče detaljnijeg upoznavanja sa programom grep, to ćemo ostaviti za 3. članak u serijalu.)

Što se tiče originalnog naziva "piping" ("povezivanje putem cevi"/"spajanje cevima"), tvorci tehnike pajpovanja smatrali su da simbol | podseća na cev (što je pomalo diskutabilno) i smatrali su da termin "piping" veoma dobro opisuje prirodu operacija koje se sprovode (sa čime se slažemo).

Ukoliko je potreban drugačiji vid obrade, umesto programa grep može se izabrati drugi program:

		
$ ls -lha | awk '/Nov 28/ { printf("%s %s %s\n", $5, $6, $7) }'
		
	
Slika 19. - Primer "pajpovanja" komande ls u komandu awk.

Komanda awk, koju smo ovoga puta pokrenuli, * omogućava detaljniju obradu teksta, i sada: ne samo da se u redovima može pretraživati određeni pojam ("Nov 28"), već je moguće birati i koje će kolone biti ispisane (argumenti komande awk: $5, $6 i $7, predstavljaju redne brojeve kolona, tj. pojedinačna polja u jednom redu).

Rezultat izvršavanja je sledeći ispis:

		
2.4K Nov 28 00:44
50K Nov 28 08:33
143 Nov 28 11:54
		
	
Slika 20. - Rezultat izvršavanja komande sa prethodne slike.

Ovakav izlaz jeste ono što smo tražili u smislu informacija, ali, ne i u smislu prikaza.

* Program awk omogućava razne vidove napredne obrade niski i tekstualnih datoteka (detaljnije upoznavanje sa ovim programom takođe ostavljamo za 3. članak).

Program ls automatski formatira izlaz (dodavanjem razmaka i tabulacije po potrebi), međutim, budući da program awk na ulazu uklanja razmake, a na izlazu ispisuje samo po jedan razmak između svaka dva podatka (i to samo zato što smo 'ručno' formatirali izlaz preko interne komande printf), potrebno je poravnati prikaz podataka.

Ako se u "pipeline" doda još jedna komanda ....

		
$ ls -lha | awk '/Nov 28/ { printf("%s %s %s\n", $5, $6, $7) }' | column -t
		
	
Slika 21. - Primer dodavanja komande column u "pajplajn".

.... problem je rešen:

	 	
2.4K  Nov 28  00:44
50K   Nov 28  08:33
143   Nov 28  11:54
		
	
Slika 22. - Rezultat izvršavanja komande sa prethodne slike.

U nastavku, koristićemo ponovo program grep * i "pravićemo se" da je količina teksta koju je program izbacio, i dalje prevelika (za razliku od krajnje umerene količine teksta koju zapravo vidimo).

Pošto je u navedenim okolnostima uputno da se izlaz preusmeri u datoteku (zarad lakšeg naknadnog pregleda u nekom editoru teksta i sl) - na scenu stupa redirekcija.

* Komande su preglednije (u odnosu na awk), pri čemu, u primerima kakve koristimo, mehanizmi za obradu teksta nisu previše bitni sami po sebi (kao što smo već naveli, o programima grep, sed i awk, odnosno, o naprednijoj obradi teksta u konzoli (u opštem smislu), pisaćemo uskoro).

Redirekcija

Pri pokretanju konzolnih programa, komandna linija (tj. "shell prompt"), tipično se koristi kao ulazna jedinica, a sam terminal, kao izlazna jedinica.

Videli smo da programi mogu jedni drugima slati podatke, međutim, podaci se takođe mogu direktno čitati iz datoteka i zapisivati u datoteke.

Druga navedena pojava nosi naziv redirekcija.

U sledećem primeru, izlaz komande grep biće preusmeren u datoteku, preko operatora >:

		
ls -la | grep "Nov 30" > log_30112021.txt
		
	
Slika 23. - Redirekcija, tj. prosleđivanje izlaznih podataka poslednje izvršene komande - u datoteku (umesto na ekran).

Ako ste sve vreme zamišljali (onako kako je trebalo), da, umesto sa manjim količinama teksta koje smo zapravo viđali, operišemo nad 'ogromnim i nepreglednim datotekama', nije teško uvideti da modularni "unix-ovski" pristup uz korišćenje pajpovanja i redirekcije - i te kako olakšava administraciju sistema (a naravno i druge zadatke).

Dodatni primeri upotrebe tehnika protočne obrade i redirekcije

Da bismo još bolje ilustrovali upotrebnu vrednost pajpovanja i redirekcije, proći ćemo kroz dva primera iz svakodnevne prakse (i pri tom ćemo se upoznati i sa još kojom komandom iz UNIX-olikih operativnih sistema).

Primer #1: Kreiranje PDF datoteka

Upoznavanje sa GNU/Linux distribucijama (a isto važi i za ostale UNIX-olike operativne sisteme), podrazumeva čitanje dokumentacije.

U terminalu (tj. u konzoli), za ispis uputstava za upotrebu programa, zadužena je komanda man (skraćeno od eng. "manual").

Program man čita (i prikazuje u terminalu), "man stranice" (eng. man page(s)), posebno formatirane tekstualne datoteke u kojima je detaljno opisan način funkcionisanja instaliranih programa.

Ako pozovemo komandu man i predamo kao argument naziv programa (u donjem primeru, program čije opcije proučavamo je ls) ....

		
man ls
		
	
Slika 24. - Komanda man služi za prikazivanje dokumentacije za određeni program.

.... dobićemo konzolni ispis sa uputstvom za upotrebu programa i dodatnim objašnjenjima koja se tiču svih opcija koje su dostupne za korišćenje uz navedeni program (u konkretnom primeru, neke od argumenata programa ls, kao što su -a i -l, već smo videli, ali, ima i drugih argumenata (zapravo - "poprilično")).

Ako je potrebno da tekst koji se ispisuje preko komande man bude preusmeren u PDF datoteku (što je vrlo popularan pristup, budući da se man stranice u PDF formatu lako mogu razmenjivati preko email-a, čitati preko prenosnih uređaja i sl), može se koristiti sledeća komanda:

		
man -Tpdf ls > man_ls.pdf
		
	
Slika 25. - Primer upisa dokumentacije za program ls u imenovanu datoteku.

.... posle čega će tekstualni sadržaj biti uredno uobličen u skladu sa formatom PDF, i zapisan u datoteku man_ls.pdf, koja se može otvoriti u nekom PDF vieweru.

Po želji, prethodna naredba može se dopuniti tako da se datoteka otvori odmah .....

		
man -Tpdf ls > man_ls.pdf | xpdf man_ls.pdf
		
	
Slika 26. - Posle redirekcije sa gornje slike, možemo (po želji) datoteku odmah otvoriti u programu za pregled PDF datoteka.

.... a usput smo se upoznali i sa time da postoji mogućnost da redirekcija prethodi pajpovanju.

Primer #2: Ispis sistemskih parametara u naslovnoj traci menadžera prozora

Pogledaćemo još jedan primer iz prakse, koji smo nagovestili ranije (kada smo pomenuli da menadžer prozora koji koristimo, ne prikazuje sistemske informacije "sam od sebe", već, da je ručno "hakovan").

Međutim, za razliku od prethodnog primera, koji je vrlo jednostavan za razumevanje (i samostalno isprobavanje), primer koji ćemo prikazati u ovom odeljku je kompleksniji, i tu je da čitaocima "predoči mogućnosti".

Na samom početku, primeri nalik onome koji sledi, ne deluju "nimalo naivno", međutim, posle nekog vremena, delovaće mnogo, mnogo jednostavnije. :)

Pre svega: odakle (uopšte) "crpeti" sistemske informacije?

Zauzeće RAM-a (operativne memorije), može se očitati preko komande free, a slobodan prostor na određenom drajvu (odnosno particiji), preko komande df (disk free).

Preostale dve komadne, mpstat i sensors (koje služe za očitavanje procesorskog zauzeća i temperature procesora), nisu obavezno deo standardne instalacije na većini distribucija (mada, vrlo često jesu), ali, svakako ih možete samostalno instalirati i pokrenuti.

		
# ram:
$ free -h | awk '/^Mem/ {printf("%sB", $3)}'

# ssd:
$ df -h /dev/sda1 | awk '/dev/ {print $4}'

# cpu (opterećenje):
$ mpstat | awk '/all/ { printf("%s%%", $4) }'

# cpu (temperatura):
$ sensors | awk '/Core 0/ {print $3}'
		
	
Slika 27. - Nekoliko komandi za očitavanje sistemskih parametara.

Izlaz navedenih komandi može se "pajpovati" u program awk (koji služi za napredno formatiranje teksta), ali, sve se i dalje ispisuje u konzoli.

Međutim ....

Sada stvari postaju (istovremeno), komplikovanije i zanimljivije ....

Grafički server X.Org server (ili jednostavnije xserver), stavlja na raspolaganje korisnicima i programima komandu xsetroot, preko koje se može zadati naslov "glavnog" prozora (u primerima koje smo videli - slika #2 i druge slike - glavni naslov se prikazuje u naslovnoj traci, u gornjem desnom uglu).

Ako preko terminala zadamo sledeću komandu ....

		
xsetroot -name "Dobar dan"
		
	
Slika 28. - Komanda xsetroot, preko koje se zadaje naziv glavnog prozora.

.... ispis u naslovnoj liniji prozora biće (upravo) - niska koja je predata kao argument.

Međutim, ako se u komandu xsetroot prosledi izlaz sistemskih komandi (koji smo prethodno pripremili), ispis će postati znatno zanimljiviji, što možemo rešiti (npr) preko manje skripte sledećeg sadržaja ....

		
#!/bin/bash

while true
do
	d=$(date +"%H:%M:%S")
	ram=$(free -h | awk '/^Mem/ {printf("%sB", $3)}')
	ssd_1=$(df -h /dev/sda1 | awk '/dev/ {print $4}')
	ssd_2=$(df -h /dev/sda3 | awk '/dev/ {print $4}')
	cpu=$(top -n 1 | awk '/Cpu/ {printf("%s%%", $2)}')
	cpu=$(mpstat | awk '/all/ { printf("%s%%", $4) }')
	cpu_t=$(sensors | awk '/Core 0/ {print $3}')
	keyb=$(setxkbmap -query | awk '/layout/{ print $2 }')
	podaci=$("  CPU: $cpu $cpu_t | RAM: $ram | SSD: $ssd_1 / $ssd_2 | $keyb | $d  ")
	xsetroot -name $podaci
	sleep 1
done
		
	
Slika 29. - Shell skripta koja očitava sistemske parametre (procesorsko i memorijsko zauzeće, izabrani jezik za tastaturu i trenutno vreme).

.... a možemo urediti i to da se skripta pokrene pri pokretanju grafičkog okruženja, posle čega će se na naslovnoj traci prikazivati sistemski podaci koji se osvežavaju svake sekunde.

Skripta funkcioniše na sledeći način:

  • izlaz komandi koje su navedene u prvom bloku (u ovom odeljku), smešta se u shell promenljive (shell omogućava korišćenje promenljivih i pozivanje skripti; više o svemu u zasebnom članku koji ćemo posvetiti pisanju shell skripti)
  • formatirani izlaz, u kome se koriste vrednosti prethodno definisanih promenljivih, prosleđuje se komandi xsetroot (u ovom koraku, zapravo nije u pitanju pajpovanje; komanda xsetroot prima argumente i jedan od argumenata je niska koju treba ispisati)
  • dosadašnje komande se smeštaju u telo "beskonačne petlje" koja se izvršava "ukrug", s tim da između svakog ciklusa postoji pauza od 1s (sleep 1)

Možda smo otišli predaleko sa gornjim primerom (bar kada je u pitanju sam početak :)), ali, kao što smo već napomenuli, ovakav primer treba da vam prikaže prave mogućnosti sistema, i - što je važnije - da vas potakne na razmišljanje, na temu: "čega sve još ima i šta se sve još može uraditi?!"

Praktičan odgovor na postavljeno pitanje glasi: mnogo toga (ima) i "sve i svašta!" (se može uraditi).

Međutim, nastavljamo da se upoznajemo sa Linux-om postepeno, a komande koje smo videli, biće detaljnije prikazane kroz sledeća tri članka koji će biti posvećeni: osnovnim i naprednim komandama (#2 i #3), i pisanju shell skripti (#4).

Vraćamo se na osnove ....

Mogli ste primetiti da je jedan od argumenata komande df (disk free), bila niska /dev/sda1, koja označava prvu particiju na disku "a", pri čemu takva oznaka može delovati pomalo zbunjujuće prvi put kada se neko sa njom susretne (pre svega, ne treba poistovećivati oznaku koju smo videli, sa zastarelom oznakom A: iz DOS-a i Windows-a, koja se ranije koristila za floppy drajvove).

U praktičnom smislu, floppy diskovi nisu u upotrebi "već neko vreme", međutim, sama oznaka A:, i dalje je (na posredan način) deo računarske kulture.

Zarad upoznavanja sa načinom označavanja drajvova i particija u UNIX-olikim sistemima (i zarad otklanjanja različitih nedoumica), u nastavku ćemo se upoznati sa strukturom direktorijuma (tj. "foldera") u GNU/Linux distribucijama (odnosno, u okviru UNIX-olikih operativnih sistema uopšte).

Struktura direktorijuma u UNIX-olikim operativnim sistemima

Linux i drugi UNIX-oliki operativni sistemi odlikuju se specifičnom strukturom direktorijuma, i (pogotovo), specifičnim prikazom strukture direktorijuma, koji se u većoj meri razlikuje od načina na koji se struktura drajvova, particija i foldera prikazuje u Windows-u.

Za početak (što se tiče razlika u odnosu na Windows), na UNIX-olikim sistemima nema lokacija kao što su C:, D:, E: i sl. i nema (praktično fiktivne) lokacije "My Computer" (koja sadrži prikaz drajvova, priključenih uređaja i sl).

Međutim, u svemu (sasvim očekivano), postoje i brojne sličnosti.

U osnovi strukture direktorijuma (na UNIX-olikim sistemima), stoji koreni direktorijum operativnog sistema ("root"), u odnosu na koji su ostali direktorijumi raspoređeni.

Koreni direktorijum nosi oznaku: / (kosa crta).

Particije se ne primećuju "na prvi pogled" (tj. ne prikazuju se onako kako se prikazuju u Windows-u), međutim, particije su (naravno) * i dalje prisutne, samo što su (praktično) integrisane u opštu strukturu direktorijuma.

* Pod uslovom da su drajvovi (hardverski) priključeni - "particije su tu" i samo je pitanje kako (tačno) će biti prikazane: na Windows-u se prikaz particija obavlja automatski, na vrlo "očigledan" način, međutim, pod Linux-om (tj. UNIX-om), drajvovi i particije najčešće se moraju "montirati" ručno, ** pri čemu se za prikaz sadržaja određene particije, koristi određeni poddirektorijum korenog direktorijuma.

** Montiranju drajvova i particija posvetićemo naredni odeljak.

Naveli smo prethodno da je /dev/sda1 odrednica koja ima veze sa "prvom particijom na prvom drajvu", * međutim, ako pokušamo da pozovemo komandu ....

		
$ cd /dev/sda1
		
	
Slika 30. - Komanda za prebacivanje u direktorijum koja neće dati rezultat, jer /dev/sda1 nije direktorijum.

.... bićemo odbijeni, jer /dev/sda1 nije direktorijum, već - virtuelna sistemska datoteka - koja ima veze sa prvom particijom, ali, ne omogućava direktan pristup direktorijumima i datotekama koje su zapisane na prvoj particiji.

* /dev/sda1 je odrednica za prvu particiju na prvom drajvu, pri čemu oznaka "sd" upućuje na SSD drajv(ove).

Kada kažemo "prvi" (drajv), radi se o redosledu pri priključivanju drajvova na matičnu ploču (što znači, recimo, da drugi prijavljeni SSD drajv, tipično ima oznaku sdb, treći SSD drajv tipično se prepoznaje kao sdc, četvrti kao sdd i sl).

Hard diskovi se označavaju preko skraćenice "hd": hda (prvi HD drajv), hdb (drugi HD drajv), hdc2 (druga particija na trećem HDD-u) i sl.

Noviji NVMe drajvovi se označavaju preko skraćenice "nvme0n" (malo drugačije u odnosu na HDD-ove i SSD-ove), što znači (na primer), da sledeća skraćenica: nvme0n1p4 - označava četvrtu particiju na prvom NVMe drajvu.

Da se vratimo na drajv koji je prepoznat kao /dev/sda ....

Pitanje je: gde se u okviru strukture direktorijuma nalaze datoteke sa particije /dev/sda1?

Pri početnom upoznavanju, situacija deluje 'malčice komplikovano', i (kao što rekosmo), svakako postoje razlike u odnosu na pristup na koji su korisnici Windows-a navikli, ali, struktura direktorijuma na UNIX(olikim) sistemima nije zapravo komplikovana sama po sebi (naprotiv), i samo je potrebno uložiti malo truda da bi se postiglo razumevanje ....

Kao što smo već naveli, 'particije su tu' i može im se pristupiti (stvar je samo u tome da se (skoro) isti podaci predstavljaju na drugačiji način).

Komanda mount - "montiranje" drajvova

Kada se na računar priključi novi drajv i zatim pokrene Linux (ili UNIX, BSD i sl), u direktorijumu /dev pojaviće se nove datoteke koje sadrže podatke koji omogućavaju pristup particijama na novom drajvu, ali (kao što smo već videli), u poddirektorijumima na putanji /dev - neće automatski biti prikazane datoteke i direktorijumi sa novih particija. *

Za primer ćemo uzeti da novi drajv (koji smo dodali), sadrži dve particije, koje će biti prijavljene kao /dev/sdb1 i /dev/sdb2.

Ispratite priču (vratićemo se ubrzo na koreni direktorijum i druge postojeće direktorijume, i (naravno), na to "odakle su se stvorili").

* Usputna napomena: direktorijumi preko kojih se prikazuje sadržaj novih particija, neće se pojaviti ni na drugim lokacijama u okviru strukture direktorijuma.

Particijama novog drajva ne može se pristupiti direktno preko putanja /dev/sdb1 i /dev/sdb2 (sličan primer smo već videli), ali, nove particije se mogu "montirati" preko komande mount:

		
$ mkdir /muzika
$ mkdir /filmovi

$ mount /dev/sdb1 /muzika
$ mount /dev/sdb2 /filmovi
		
	
Slika 31. - Komanda mount, preko koje se drajvovi (tj. particije), dodaju u strukturu direktorijuma.

.... što praktično znači da se sadržaj particija (ovoga puta je sadržaj), vezuje za određene direktorijume.

Direktorijume je potrebno pripremiti unapred, što smo i učinili preko komande mkdir.

U slučaju putanja koje smo prethodno "montirali", sada se može preći (na primer), u direktorijum /muzika, i može se pristupiti sadržaju:

		
$ cd /muzika
$ ls -la
 		
	
Slika 32. - Primer pristupa direktorijumu koji smo prethodno "montirali".

Dakle, konkretan sadržaj nalazi se na particijama (u primerima, particije su: sdb1 i sdb2), ali, particijama se pristupa preko direktorijuma (/muzika i /filmovi), koji nisu "na očigledan način povezani sa particijama".

Ako je potrebno da se particija "odmontira" (operacija koju često koriste korisnici Linux-a koji na određenom računaru imaju i Windows, odnosno NTFS particije kakve Windows prepoznaje), koristi se komanda umount:

		
umount /muzika
umount /filmovi
		
	
Slika 33. - Uklanjanje prethodno "montiranih" particija, preko komande umount.

Sada sledi rasplet po pitanju particije /dev/sda1 ....

Ako se osvrnemo na to da je u pitanju: prva particija - na prvom SSD drajvu, moglo bi se pretpostaviti da je navedena particija montirana upravo kao koreni direktorijum sistema.

Smatraćemo da jeste tako, ali, onda se postavlja pitanje: kada je (i kako), particija /dev/sda1 montirana kao koreni direktorijum sistema?

Odgovor je (kao što pretpostavljamo da naslućujete) - pri instalaciji sistema.

Drajvovi i particije koji čine "stalnu postavku" sistema, montiraju se automatski, pri podizanju sistema, preko podataka iz sistemske datoteke /etc/fstab (File System Table), u koju se pri instalaciji sistema zapisuje kojoj particiji odgovara koja sistemska lokacija:

		
# Primer sadržaja datoteke /etc/fstab
# Napomena UUID oznake su inače
# u drugom formatu (veće dužine)

# /dev/sda1
UUID=xxxx-xx-xx-xx-xxxxx   /       ext4   rw,relatime	0 1

# /dev/sd2
UUID=yyyy-yy-yy-yy-yyyyy   none    swap   defaults      0 0

# /dev/sda3
UUID=zzzz-zz-zz-zz-zzzzz   /home   ext4   rw,relatime	0 2
		
	
Slika 34. - Primer sadržaja datoteke /etc/fstab.

U primeru koji smo prikazali, prva particija je montirana kao koreni direktorijum, a treća kao direktorijum sa korisničkim podacima (više o lokaciji /home, u nastavku). Druga particija montirana je kao swap prostor (virtuelna memorija).

U smislu "ručnog" pozivanja komande mount, pojam montiranja ne odnosi se toliko na hard diskove i SSD-ove, * koliko na USB drajvove, koji su i dalje u svakodnevnoj upotrebi (ali, temi montiranja USB-ova i tome kako se proces može automatizovati, posvetićemo više prostora u narednim člancima).

Pošto sada znamo u kakvoj su vezi struktura direktorijuma i drajvovi koji su prijavljeni sistemu, možemo se upoznati sa time šta tipično sadrže sistemski direktorijumi (tj. folderi) u UNIX-olikim operativnim sistemima.

Ranije je struktura direktorijuma u Linux distribucijama (kao i pod UNIX-om, BSD-om i sl), bila .... "proizvoljnija", ali, vremenom je uvedeno više reda, i može se reći da je struktura sistemskih direktorijuma, u sadašnjem trenutku, u velikoj meri standardizovana, ** što znači da dve različite Linux distribucije (pa čak i dva različita OS-a; na primer: Linux i BSD, ili BSD i UNIX i sl), uglavnom imaju gotovo istu strukturu direktorijuma.

Pre nego što nastavimo, nekoliko usputnih napomena ....

Postoji uzrečica da je pod UNIX-om "sve datoteka" (što zapravo znači da su sistemski uređaji i procesi predstavljeni u obliku virtuelnih datoteka), ali, izgleda da su particije ipak vezane za direktorijume (tj. foldere), što znači da postoji izuzetak od pravila?!

Međutim, ipak nema izuzetka: direktorijum nije ništa drugo nego datoteka (doduše, specijalno formatirana i "nepristupačna" datoteka), koja sadrži spisak drugih direktorijuma i datoteka (i druge informacije neophodne za pristup), i stoga, u UNIX-olikim sistemima - i dalje je "sve datoteka".

Kako god bilo, vidimo da su pod Linux-om particije prisutne (i "uvažene"), samo što im se pristupa na drukčiji način, a ako vam ovakav novi pristup i dalje deluje "manje logično", budite uvereni da je u pitanju samo stvar navike. :)

* Jedan od izuzetaka je upotreba u dual-boot konfiguracijama (kao što smo ranije pomenuli).

** Kada smo napisali, "u velikoj meri", mislili smo na to da se strukture direktorijuma na različitim GNU/Linux distribucijama najčešće ne poklapaju "baš skroz", ali, ipak se poklapaju u velikoj meri (pri čemu se direktorijumi gotovo uvek koriste na način koji ćemo opisati u nastavku).

Sistemski direktorijumi

Sistemski direktorijumi su direktorijumi koji nastaju tokom instalacije (OS-a), i sadrže datoteke koje su neophodne za funkcionisanje sistema (izvršne, konfiguracione i druge neophodne datoteke).

Neki od sistemskih direktorijuma, striktno govoreći, zapravo su korisnički direktorijumi, ali, jedan deo njihovog sadržaja ne čine proizvoljni korisnički direktorijumi i datoteke, već, sadržaj koji (takođe) nastaje pri instalaciji operativnog sistema, ili pri instalaciji različitih programa.

Napomenimo i to da standard FHS (Filesystem Hierarchy Standard), čija je svrha - uspostavljanje standardnih naziva direktorijuma i standardnih načina upotrebe sistemskih direktorijuma u UNIX-olikim operativnim sistemima, ne podrazumeva (baš) sve direktorijume koje ćete u nastavku videti, ali, bićemo praktični i spomenućemo ((skoro) sve) direktorijume sa kojima ćete se susretati u uobičajenim distribucijama (bez obzira na to što će vam pojava određenih direktorijuma delovati pomalo 'čudno').

/ - koreni direktorijum (root)

Koreni direktorijum (kao što smo već naveli), predstavlja "uporišnu tačku", to jest, putanju u odnosu na koju su raspoređeni ostali direktorijumi, i (takođe), videli smo da nije u pitanju "fantomska" lokacija (kao npr. My Computer na Windows-u), već, konkretna particija jednog od drajvova - koja je pri instalaciji proglašena za root direktorijum.

Napomena: koreni direktorijum / (eng. root directory), ne treba mešati sa direktorijumom /root (kome ćemo posvetiti pažnju kada dođe na red po alfabetu).

/bin ("binaries" - binarne/izvršne datoteke)

Direktorijum /bin sadrži izvršne datoteke osnovnih programa kao što su shell i GNU core utilities (ls, cp, mv, cat, grep i sl), i možemo reći da su u pitanju manji, ali suštinski bitni programi.

Sa druge strane, "moderniji" programi većeg obima, tipično se smeštaju u direktorijum /usr (više o ovom direktorijumu, u nastavku).

/boot (boot loader)

Direktorijum /boot sadrži datoteke (i poddirektorijume) neophodne za pokretanje sistema (tj. "butovanje").

Za pokretanje sistema tipično se koristi program Grub (sa poddirektorijumom na lokaciji /boot/grub), kome, pri pokretanju sistema, BIOS (ili poslednjih godina UEFI), predaje "štafetu" i poverava zadatak učitavanja operativnog sistema u memoriju.

Takođe, sam Linux kernel se najčešće instalira upravo u direktorijum /boot.

/cdrom (stara lokacija za prikaz sadržaja CD diskova)

Budući da navodimo sve direktorijume koji se praktično javljaju u Linux distribucijama (bez obzira na to da li su deo standarda FHS ili ne), spomenućemo i direktorijum /cdrom, jedan od direktorijuma koji su 'zaostali' iz starijih vremena (dok su CD drajvovi još uvek bili u upotrebi).

Ili, drugačije: budući da programeri zaduženi za "pakovanje" distribucija, i dalje ne uklanjaju direktorijum /cdrom, spomenuli smo ga i mi (čisto da znate o čemu se radi). :)

/dev ("devices" - podaci o sistemskim uređajima)

Direktorijum /dev sadrži "virtuelne" datoteke (većinom tekstualnog tipa), u kojima se čuvaju podaci o uređajima na sistemu.

Nagovestili smo već šta su virtuelne datoteke (i o svemu ćemo više govoriti u narednim člancima), a videli smo i šta se u praksi može raditi sa virtuelnim datotekama (navođenje putanje /dev/sda1 u programu kao što je free, koji ume pravilno da protumači podatke sa navedene putanje), i takođe smo videli šta se ne može raditi sa virtuelnim datotekama sa putanje /dev (navođenje komande kao što je cd /dev/sda1 i sl).

/etc ("et cetera" - sistemske konfiguracione datoteke)

Za direktorijum /etc možemo reći da predstavlja svojevrstan konfiguracioni centar OS-a, koji sadrži datoteke (uglavnom tekstualnog formata), u kojima su zapisana podešavanja sistema i globalna podešavanja sistemskih programa.

U navedenom folderu mogu se pronaći konfiguracione datoteke: menadžera paketa, grafičkog servera (X11), http servera (ako je instaliran), kao i mnoge druge datoteke za konfigurisanje sistema (na primer, datoteka /etc/fstab, koju smo već pominjali kada smo pisali o automatskom montiranju particija).

/home (korisnički direktorijumi)

Svakom korisničkom nalogu koji se kreira u okviru sistema, dodeljuje se odgovarajući direktorijum, upravo unutar direktorijuma /home (na primer /home/korisnik_1, /home/korisnik_2 i sl).

Korisnički (pod)direktorijumi u direktorijumu /home imaju dvojaku ulogu: na ovom mestu, programi čuvaju svoja podešavanja (pre svega preko poddirektorijuma .config i .cache), * zbog čega direktorijum /home praktično jeste sistemski direktorijum, ali, u pitanju je takođe i folder u kome korisnici tipično čuvaju svoja dokumenta.

* Da budemo precizni, u pitanju su poddirektorijumi home direktorijuma, u smislu: /home/korisnik_x/.config, /home/korisnik_x/.cache i sl.

/lib ("libraries")

Lokacija za instaliranje biblioteka koje su dostupne širom sistema (nešto nalik na folder "System32", sa *.dll datotekama, u okviru Windows-a).

/media

Lokacija za "montiranje" prenosivih drajvova i optičkih medija.

U praktičnom smislu: lokacija koju će koristiti programi koji automatski montiraju prenosne uređaje.

/mnt ("mount")

Preporučena lokacija za "ručno"/privremeno "montiranje" drajvova (kao što su USB drajvovi i sl).

Razlika u odnosu na putanju /media: putanja /mnt je preporučena putanja na koju korisnici (sami/"ručno") treba da montiraju prenosne drajvove.

/opt ("optional")

Jedan od manje standardizovanih direktorijuma, * u koji neki od programa (koji se ne drže standarda FHS), odlažu svoje datoteke.

* Bez obzira na navedeno, direktorijum /opt (baš kao i direktorijum /cdrom), uvršten je u prikaz sistemskih direktorijuma, iz razloga što je prisutan na većini distribucija (posle instalacije).

/proc ("processes")

Direktorijum /proc sadrži informacije o pokrenutim procesima u okviru sistema. *

U tehničkom smislu, radi se o podacima koji su sadržani u virtuelnim sistemskim datotekama tekstualnog formata, što praktično znači da se takve datoteke lako mogu "grepovati", "awk-ovati" (i obrađivati na razne druge načine).

* U okviru operativnog sistema, naziv proces odnosi se na pokrenuti program.

/root (korisnički direktorijum za administratorski nalog)

Za razliku od korisničkih naloga nižeg nivoa privilegija (ili, prostije, "za razliku od svih ostalih naloga"), za korisničke datoteke povezane sa root nalogom, predviđen je poseban direktorijum /root.

Kada je u pitanju root nalog, postoje i uvrežena pravila korišćenja (sa kojima je potrebno upoznati se, i uvažiti ih):

  • pre svega, na UNIX-olikim operativnim sistemima postoji samo jedan root nalog
  • root nalog se ne koristi za direktan pristup sistemu (osim u izuzetnim situacijama)
  • za pokretanje programa koji zahtevaju administratorske privilegije, određenim ("običnim"/"ne-root") korisnicima, dodeljuju se administratorske privilegije *

* "Aktiviranje" administratorskih privilegija tipično podrazumeva navođenje komande sudo (Substitute User - Do), pre (glavne) komande koju je potrebno izvršiti.

Privilegije različitih korisnika (odnosno, grupa korisnika), u smislu toga ko sme da koristi komandu sudo (a ko ne sme), definišu se preko datoteke /etc/sudoers.

Iz svega navedenog, nije teško zaključiti da se i direktorijumu /root u praksi pristupa veoma retko, "samo kad je baš neophodno" (a razlike između root naloga i (običnih) korisničkih naloga, svakako su tema za dalju diskusiju u sledećim nastavcima).

/run ("runtime" variable data)

Direktorijum sa informacijama o pokrenutim servisima i prijavljenim korisnicima (u okviru trenutne sesije, odnosno, "posle poslednjeg podizanja sistema").

/sbin ("system binaries")

Još jedna od lokacija za čuvanje izvršnih datoteka važnijih sistemskih programa (slično kao lokacija /bin).

/srv ("server")

Bićemo praktični i navešćemo da iza naziva /srv stoji odrednica server, jer namena ovog direktorijuma u današnje vreme je (upravo): čuvanje podešavanja koja su vezana za serversku funkcionalnost koju sistem (eventualno) obavlja.

Naveli smo već da je Linux (veoma) popularan serverski OS, ali, čak i ako ne koristite Linux za pokretanje javno dostupnog servera - a pri tom se bavite razvojem sajtova - velike su šanse da ćete pokretati lokalni web server (Apache i sl), zarad isprobavanja sajtova.

U navedenim okolnostima, program će za čuvanje podataka koristiti lokaciju /srv (odnosno, određeni poddirektorijum po vašem izboru).

(Takođe, povremeno ćete se sretati sa tvrdnjom da se iza naziva direktorijuma /srv nalazi odrednica "services", ali, ovo ni iz daleka nije jedina situacija u kojoj nije lako utvrditi pravo poreklo naziva sistemskih direktorijuma na UNIX-u.)

/tmp ("temporary" - lokacija za privremene datoteke)

Kao što možete pretpostaviti shodno nazivu, * u direktorijum /tmp se smeštaju datoteke 'privremenog karaktera' (tj. datoteke koje neće biti dostupne pri sledećem pokretanju sistema).

* Mnogi direktorijumi (kao što je /tmp), imaju indikativne nazive (tj. nazive preko kojih se lako može prepoznati svrha direktorijuma), dok - sa druge strane - mnogi direktorijumi imaju nazive koji su .... pomalo diskutabilni. :)

Na primer, verujemo da su skoro svi korisnici Linux-a upućeni u namenu direktorijuma /etc (i verujemo da većina korisnika zna šta na latinskom znači "et cetera"), ali - pitanje je koliko bi korisnika bilo u stanju da poveže navedeni naziv direktorijuma, sa namenom direktorijuma. :)

/usr ("UNIX System Resources")

Postoje različite 'priče' o poreklu naziva direktorijuma /usr: jedna navodi da su, u početku, na ovom mestu odlagani korisnički podaci i programi koje su korisnici kompajlirali (što bi značilo da je naziv "usr" nastao od reči "user(s)"), dok je u današnje vreme popularno reći da iza naziva stoji termin "Unix System Resources".

Bilo kako bilo, u pitanju je sistemski folder koji igra dvojaku ulogu: u direktorijum /usr se (zapravo) smeštaju instalirani programi (veći i obimniji programski paketi; oni koji ne spadaju u kategoriju osnovnih konzolnih alata koji se instaliraju u direktorijum /bin), i - takođe - u folder /usr se (zaista) smeštaju određeni sistemski resursi "statičkog tipa", koji su dostupni svim programima (fontovi, dokumentacija i sl).

.... ali, u direktorijumu /usr nema korisničkih podataka opšteg tipa (ili - bar ne bi trebalo da ih bude). :)

/var ("varijabilne" datoteke)

Ako je direktorijum /usr (šta god se zapravo "krilo" iza njegovog naziva), namenjen čuvanju "statičkih" sistemskih resursa, folder /var je namenjen čuvanju onih resursa za čiji sadržaj se očekuje da će se menjati.

Na primer: log datoteke, baze podataka i slični podaci - nalaze se (upravo) u okviru direktorijuma /var.

Još nekoliko reči o sistemskim direktorijumima i njihovom poreklu

U uvodnom članku (iako smo najverovatnije izneli više nego dovoljno informacija za sam početak), nismo hteli da previše ulazimo u detalje po pitanju sistemskih direktorijuma, jer (prosto rečeno), neki detalji nemaju preveliki značaj iz današnje perspektive, a drugi samo mogu bespotrebno opteretiti korisnike koji se sa Linux-om tek upoznaju.

Međutim, ako želite da odmah "pohranite u sopstvenu memoriju" još koji podatak koji može dobro doći 'za kasnije', spomenućemo da je struktura foldera u UNIX-olikim sistemima, ipak nešto komplikovanija, * i (naravno), navešćemo još koji primer.

* Verujemo da ste i sami pretpostavili da je tako. :)

Recimo:

  • mnoge izvršne datoteke instaliraju se na lokaciju /usr/bin
  • direktorijum /usr sadrži i određene bitne datoteke i poddirektorijume sa kojima ćete se često susretati ako se upustite u administraciju Linux sistema (na primer, u poddirektorijumu /usr/src čuvaju se izvorni kodovi instaliranih programa, a u poddirektorijumu /usr/man, dokumentacija o instaliranim programima)
  • isto važi i za direktorijum /etc (na primer, datoteka /etc/fstab sadrži informacije o "montiranim" drajvovima, poddirektorijum /etc/X11 sadrži konfiguracione datoteke za grafički server i sl)

.... međutim, budite staloženi.

Ne treba žuriti, i - uz uloženi trud - "sve će doći na svoje". :)

U nastavku ....

Da li je, u tekstu koji ste pročitali, sadržano "sve što ima da se ispriča" o UNIX-u, ili o GNU/Linux distribucijama?

Naravno da nije (tek smo počeli).

Nadamo se da ste prepoznali pošalicu u gornjem pitanju. :)

Pre svega, kada su u pitanju osnovna sistemska podešavanja, posebnu pažnju treba posvetiti kategorizaciji korisničkih naloga i privilegijama koje se korisničkim nalozima dodeljuju, ali, nešto smo ipak morali (skroz) da preskočimo na samom početku i ostavimo za drugi put, i stoga ćemo u bliskoj budućnosti (s obzirom na to da smo 'načeli' temu GNU/Linux distribucija i upoznali se sa osnovnim tehnikama), nastaviti da objavljujemo nove članke.

Sledeća dva nastavka posvetićemo osnovnim i napredni(ji)m komandama za administraciju sistema, četvrti nastavak biće posvećen pisanju shell skripti, a posle toga (u nešto daljoj budućnosti), bavićemo se i mnogim drugim temama: instalacija i podešavanje minimalističke Linux distribucije (Arch Linux), podešavanje grafičkog servera, menadžera prozora i korisničkih programa, napredna podešava korisničkih naloga .... da nabrojimo samo 'najočiglednije' ideje ....

Do tada ....

Happy hacking!

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-2025. Sva prava zadržana.
Facebook LinkedIn Twitter Viber WhatsApp E-mail
početna > Članci > GNU/Linux - 1. deo - Uvod
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-2025. Sva prava zadržana.
Facebook - logo
Instagram - logo
LinkedIn - logo
Twitter - logo
E-mail
Naslovna
   •
Uslovi korišćenja
   •
Obaveštenja
   •
FAQ
   •
Kontakt