2.3 Lekcija 2
Sertifikat: |
Linux Essentials |
---|---|
Verzija: |
1.6 |
Tema: |
2 Kretanje kroz Linux sistem |
Cilj: |
2.3 Korištenje direktorija i prikaz podataka |
Lekcija: |
2 od 2 |
Uvod
Unix operativni sistem je prvobitno dizajniran za mainframe računare sredinom 1960-ih. Ovi računari su bili podijeljeni među mnogim korisnicima, koji su pristupali resursima sistema preko terminala. Ove fundamentalne ideje prenose se i na Linux sisteme (distribucije) danas. Još uvijek pričamo o korištenju “terminala” za unos komandi u šel (eng.shell), a svaki Linux sistem je organiziran na takav način da je lako kreirati mnogo korisnika na jednom sistemu.
Home direktoriji
Ovo je primjer normalnog sistema datoteka u Linux-u:
$ tree -L 1 / / ├── bin ├── boot ├── cdrom ├── dev ├── etc ├── home ├── lib ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin ├── srv ├── sys ├── tmp ├── usr └── var
Većina ovih direktorija je konzistentna u svim Linux sistemima. Od servera preko superkompjutera do sićušnih ugrađenih sistema, iskusni Linux korisnik može biti siguran da može pronaći komandu ls
unutar /bin
direktorija, može promijeniti konfiguraciju sistema modificiranjem datoteka u /etc`direktoriju i čitati sistemske logove `/var
direktorija. Standardna lokacija ovih datoteka i direktorija definirana je standardom hijerarhije sistema datoteka (FHS), o čemu će biti riječi u kasnijoj lekciji. Saznat ćete više o sadržaju ovih direktorija kako budete nastavili učiti o Linuxu, ali za sada znajte da:
-
izmjene koje napravite u root sistemu datoteka će uticati na sve korisnike, te
-
će izmjena datoteka u root sistemu datoteka zahtjevati administratorske privilegije.
To znači da će normalnim korisnicima biti zabranjeno mijenjati ove datoteke, a može im biti zabranjeno čak i čitanje ovih datoteka. Temu dozvola ćemo pokriti u kasnijem odjeljku.
Sada ćemo se fokusirati na direktorij /home, koji bi vam trebao biti poznat do sada.
$ tree -L 1 /home /home ├── user ├── michael └── lara
Naš primjer sistema ima tri normalna korisnika, a svaki od naših korisnika ima svoju namjensku lokaciju, gdje mogu kreirati i mijenjati datoteke i direktorije bez utjecaja na svog susjeda. Na primjer, u prethodnoj lekciji radili smo sa sljedećom strukturom datoteka:
$ tree /home/user user └── Documents ├── Mission-Statement └── Reports └── report2018.txt
U realnosti, pravi sistem datoteka izgleda ovako:
$ tree /home /home ├── user │ └── Documents │ ├── Mission-Statement │ └── Reports │ └── report2018.txt ├── michael │ ├── Documents │ │ └── presentation-for-clients.odp │ └── Music
…a tako i za korisnika lara
.
U Linuxu, /home
je sličan stambenoj zgradi. Mnogi korisnici mogu imati svoj prostor ovdje, odvojen u namjenske stanove. Komunalne usluge i održavanje same zgrade su odgovornost root korisnika.
Specijalna relativna putanja home direktorija
Kada pokrenete novu terminal sesiju u Linux-u, vidjet ćete komandni prompt koji izgleda ovako:
user@hostname ~ $
Tilda (~
) ovdje predstavlja naš home direktorij. Ako pokrenete naredbu ls
, vidjet ćete neki poznati izlaz:
$ cd ~ $ ls Documents
Uporedite to sa gornjim sistemom datoteka da provjerite svoje razumijevanje.
Razmotrite sada što znamo o Linuxu: sličan je stambenoj zgradi, s mnogo korisnika koji borave u /home
direktoriju. Dakle, dom user`a će biti drugačiji od doma korisnika po imenu `michael
. Da bismo to demonstrirali, koristit ćemo naredbu su
da promijenimo korisnika.
user@hostname ~ $ pwd /home/user user@hostname ~ $ su - michael Password: michael@hostname ~ $ pwd /home/michael
Značenje ~
se mijenja ovisno o tome tko je korisnik. Za michaela`apsolutna putanja `~
je /home/michael
. Za lara
, apsolutna putanja od ~
je
/home/lara
, i tako dalje.
Relativna home putanja datoteka
Korištenjem ~
tilda komande je veoma zgodno, pod uslovom da ne menjate korisnike. Razmotrit ćemo sljedeći primjer za korisnika user
, koji je započeo novu sesiju:
$ ls Documents $ cd Documents $ ls Mission-Statement Reports $ cd Reports $ ls report2018.txt $ cd ~ $ ls Documents
Imajte na umu da će korisnici uvijek započeti novu sesiju u svom home direktoriju. U ovom primjeru, user
je otputovao u svoj poddirektorij Documents/Reports
i sa komandom cd ~
vratio se tamo odakle je započeo. Istu radnju možete izvesti koristeći komandu cd
bez argumenata:
$ cd Documents/Reports $ pwd /home/user/Documents/Reports $ cd $ pwd /home/user
Posljednja stvar koju treba napomenuti: možemo specificirati home direktorije drugih korisnika specificiranjem korisničkog imena iza tilde. Na primjer:
$ ls ~michael Documents Music
Imajte na umu da će ovo funkcionirati samo ako nam je michael
dao dozvolu za pregled sadržaja njegovog home direktorija.
Razmotrimo situaciju u kojoj bi michael
želio vidjeti datoteku report2018.txt
u home direktoriju korisnika user
. Pod pretpostavkom da michael
ima dozvolu za to, on može koristiti komandu less
.
$ less ~user/Documents/Reports/report2018.txt
Svaka putanja datoteke koja sadrži znak ~
naziva se relativna home staza.
Skrivene datoteke i direktoriji
U prethodnoj lekciji uveli smo opciju -a
za komandu ls
. Koristili smo ls -a
da uvedemo dvije specijalne relativne putanje: .
i ..
. Opcija -a
će ispisati sve datoteke i direktorije, uključujući skrivene datoteke i direktorije.
$ ls -a ~ . .. .bash_history .bash_logout .bash-profile .bashrc Documents
Skrivene datoteke i direktoriji uvek će početi tačkom (.
). Prema zadanim postavkama, home direktorij korisnika će uključivati mnoge skrivene datoteke. One se često koriste za postavljanje konfiguracijskih postavki specifičnih za korisnika i može ih mijenjati samo iskusan korisnik.
Opcija duge liste
Komanda ls
ima mnogo opcija za promjenu svog ponašanja. Pogledajmo jednu od najčešćih opcija:
$ ls -l -rw-r--r-- 1 user staff 3606 Jan 13 2017 report2018.txt
-l
kreira dugu listu. Datoteke i direktoriji će svaki zauzimati jedan red, ali će se prikazati dodatne informacije o svakoj datoteci i direktoriju.
Vrsta datoteke i prava nad datotekom. Imajte na umu da obična datoteka počinje sa crtom, a direktorij sa 'd'.
1
-
Broj linkova na datoteku.
user staff
-
Specificira vlasnika datoteke. 'user' je vlasnik datoteke, a ista pripada grupi 'staff'.
3606
-
Težina datoteke u bitovima.
Jan 13 2017
-
Vrijeme nastanka i modifikacije datoteke.
report2018.txt
-
Naziv datoteke
Teme kao što su vlasništvo, dozvole i veze (linkovi) će biti pokriveni u budućim sekcijama. Kao što vidite, verzija duge liste komande 'ls' je često bolja od zadanog.
Dodatne ls opcije
Ispod su neki od načina na koje najčešće koristimo komandu ls
. Kao što možete vidjeti, korisnik može kombinirati mnoge opcije zajedno kako bi dobio željeni rezultat.
ls -lh
-
Kombinovanje duge liste sa ljudski čitljivim veličinama datoteka daće nam korisne sufikse kao što su
M
za megabajte iliK
za kilobajte. ls -d */
-
Opcija
-d
će prikazati direktorije, ali ne i njihov sadržaj. Kombinovanjem ovoga sa*/
će se prikazati samo poddirektorijumi i bez datoteka. ls -lt
-
Kombinira dugu listu sa opcijom sortiranja prema vremenu izmjene. Datoteke s najnovijim promjenama bit će na vrhu, a datoteke s najstarijim promjenama na dnu. Ali ovaj redoslijed se može obrnuti sa:
ls -lrt
-
Kombinira dugu listu sa sortiranjem prema vremenu (modifikacije) u kombinaciji sa
-r
koji _obrće sortiranje. Sada su fajlovi s najnovijim promjenama na dnu liste. Pored sortiranja po vremenu modifikacije, fajlovi se također mogu sortirati po vremenu pristupa ili po statusu vremenu. ls -lX
-
Kombinira dugu listu sa opcijom sortiranja po ekstenziji datoteke. Ovo će, na primjer, grupirati sve datoteke koje završavaju sa
.txt
zajedno, sve datoteke koje završavaju sa.jpg
zajedno, i tako dalje. ls -S
-
-S
sortira prema veličini fajla, na isti način kao što-t
i-X
sortira po vremenu i ekstenziji. Najveći fajlovi će biti prvi, a najmanji poslednji. Imajte na umu da sadržaj poddirektorija nije uključen u sortiranje. ls -R
-
Opcija
-R
će modificirati komanduls
da prikaže rekurzivnu listu. Šta to znači?
Rekurzija u Bešu
Rekurzija se odnosi na situaciju kada je “nešto definisano u terminima samo po sebi”. Rekurzija je veoma važan koncept u kompjuterskoj nauci, ali ovde je njeno značenje daleko jednostavnije. Razmotrimo naš primjer od ranije:
$ ls ~ Documents
Od ranije znamo da user
ima home direktorij, a u ovom direktoriju postoji jedan poddirektorij. ls
nam je do sada pokazao samo datoteke i poddirektorije lokacije, ali nam ne može reći sadržaj ovih poddirektorija. U ovim lekcijama koristili smo komandu tree
kada želimo prikazati sadržaj mnogih direktorija. Nažalost, tree
nije jedan od osnovnih uslužnih programa Linuxa i stoga nije uvijek dostupno. Uporedite izlaz komande tree
sa izlazom ls -R
u sljedećim primjerima:
$ tree /home/user user └── Documents ├── Mission-Statement └── Reports └── report2018.txt $ ls -R ~ /home/user/: Documents /home/user/Documents: Mission-Statement Reports /home/user/Documents/Reports: report2018.txt
Kao što vidite, sa rekurzivnom opcijom dobijamo daleko dužu listu datoteka. U stvari, to je kao da smo pokrenuli naredbu ls
u user
-ovom home direktoriju i naišli na jedan poddirektorij. Zatim smo ušli u taj poddirektorij i ponovo pokrenuli komandu ls
. Naišli smo na datoteku Mission-Statement
i drugi poddirektorij pod nazivom Reports
. I opet, ušli smo u poddirektorij i ponovo pokrenuli komandu ls
. U suštini, pokretanje ls -R
je kao da kažete Bashu: "`Pokreni ls
ovdje i ponovi komandu u svakom poddirektorijumu koji pronađete."
Rekurzija je posebno važna u komandama za izmjenu datoteka kao što su kopiranje ili uklanjanje direktorija. Na primjer, ako želite kopirati poddirektorij Documents
, morat ćete navesti rekurzivnu kopiju kako biste proširili ovu naredbu na sve poddirektorije.
Vođene vježbe
-
Koristite sljedeću strukturu datoteke, odgovorite na sljedeća tri pitanja:
/ ├── etc/ │ ├── network/ │ │ └── interfaces/ │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d │ └── udev.conf └── home/ ├── lost+found/ ├── user/ │ └── Documents/ └── michael/ └── Music/
-
Koja komanda će navigirati u
network
direktorij bez obzira na vašu trenutnu lokaciju? -
Koju komandu može unjeti 'user' da navigira u direktorij 'Documents' iz direktorija '/etc/udev'? Koristite najkraću moguću putanju.
-
Koju komandu može unjeti 'user' da navigira u 'michael'-ov direktorij 'Music'. Koristite najkraću moguću putanju.
-
-
Razmotrite sljedeći izlaz
ls -lh
komande da odgovorite na sljedeća dva pitanja. Imajte na umu da su direktoriji označeni sad
na početku reda.drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/ -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg -rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg -rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg -rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg -rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-24.png -rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-07.png -rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-30.png -rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/ -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg -rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg -rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/
-
Kada izvršite komandu 'ls -lrS', koja datoteka će biti na početku?
-
Molim vas opišite šta očekujete da ćete vidjeti na izlazu nakon unosa 'ls -ad */'.
-
Istraživačke vježbe
-
Pokrenite komandu
ls -lh
u direktoriju koji sadrži poddirektorije. Obratite pažnju na navedene veličine ovih direktorija. Da li vam se ove veličine datoteka čine ispravnim? Da li tačno predstavljaju sadržaj svih datoteka unutar tog direktorija? -
Evo nove komande koju treba isprobati:
du -h
. Pokrenite ovu komandu i opišite izlaz koji vam daje. -
Na mnogim Linux sistemima, možete upisati
ll
i dobiti isti izlaz kao što biste upisalils -l
. Međutim, imajte na umu dall
nije naredba. Na primjer,man ll
će vam dati poruku da za to ne postoji ručni unos. Ovo je primjer alias komande.Šta vam ovo sugerira o osobinama komandne linije?
Sažetak
U ovom labu ste naučili:
-
kako svaki Linux korisnik ima home direktorij
-
do home direktorija trenutnog korisnika se može doći korištenjem '~',
-
svaka putanja do datoteke koja koristi '~' se naziva _relativna home_putanja.
Također ste naučili o nekim od najčešćih načina mijenjanja komande `ls.
-a
(all)-
prikazuje sve datoteke/direktorije, uključujući i sakrivene
-d
(directories)-
prikazuje direktorije, ali ne i njihov sadržaj
-h
(human readable)-
prikazuje datoteke u ljudski razumljivom formatu
-l
(long list)-
pruža dodatne detalje, jedan fajl/direktorij po redu
-r
(reverse)-
obrnut red sortiranja
-R
(recursive)-
prikazuje sve datoteke, uključujući i datoteke poddirektorija
-S
(size)-
sortira po veličini
-t
(time)-
sortira po vremenu modifikacije
-X
(eXtension)-
sortira po ekstenzijama datoteka
Odgovori na vođene vježbe
-
Koristite sljedeću strukturu datoteke, odgovorite na sljedeća tri pitanja:
/ ├── etc/ │ ├── network/ │ │ └── interfaces/ │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d │ └── udev.conf └── home/ ├── lost+found/ ├── user/ │ └── Documents/ └── michael/ └── Music/
-
Koja komanda će navigirati u
network
direktorij bez obzira na vašu trenutnu lokaciju?cd /etc/network
-
Koju komandu može unjeti 'user' da navigira u direktorij 'Documents' iz direktorija '/etc/udev'? Koristite najkraću moguću putanju.
cd ~/Documents
-
Koju komandu može unjeti 'user' da navigira u 'michael'-ov direktorij 'Music'. Koristite najkraću moguću putanju.
cd ~michael/Music
-
-
Razmotrite sljedeći izlaz
ls -lh
komande da odgovorite na sljedeća dva pitanja. Imajte na umu da su direktoriji označeni sad
na početku reda.drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/ -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg -rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg -rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg -rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg -rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-24.png -rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-07.png -rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-30.png -rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/ -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg -rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg -rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/
-
Kada izvršite komandu 'ls -lrS', koja datoteka će biti na početku?
Sva tri foldera imaju 4.0K, što je najmanja veličina datoteke.
ls
će tada po defaultu sortirati direktorije po abecedi. Tačan odgovor je datotekascary.jpg
. -
Molim vas opišite šta očekujete da ćete vidjeti na izlazu nakon unosa 'ls -ad */'.
Ova komanda će prikazati sve poddirektorije, uključujući skrivene poddirektorije.
-
Odgovori na istraživačke vježbe
-
. Pokrenite komandu
ls -lh
u direktoriju koji sadrži poddirektorije. Obratite pažnju na navedene veličine ovih direktorija. Da li vam se ove veličine datoteka čine ispravnim? Da li tačno predstavljaju sadržaj svih datoteka unutar tog direktorija?Ne, nemaju. Svaki direktorij ima navedenu veličinu datoteke od 4096 bajtova. To je zato što su direktoriji ovdje apstrakcija: oni ne postoje kao struktura stabla na disku. Kada vidite naveden direktorij, vidite link na listu datoteka. Veličina ovih veza (linkova) je 4096 bajtova.
-
Evo nove komande koju treba isprobati:
du -h
. Pokrenite ovu komandu i opišite izlaz koji vam daje.Komanda
du
će generirati listu svih datoteka i direktorija i naznačiti veličinu svakog od njih. Na primjer,du -s
će prikazati veličinu datoteke svih datoteka, direktorija i poddirektorija za određenu lokaciju. -
Na mnogim Linux sistemima, možete upisati
ll
i dobiti isti izlaz kao što biste upisalils -l
. Međutim, imajte na umu dall
nije komanda. Na primjer,man ll
će vam dati poruku da za to ne postoji ručni unos. Ovo je primjer alias komande. Šta vam ovo sugerira o osobinama komandne linije?ll
je alias odls -l
. U Bashu možemo koristiti alias komandu da pojednostavimo najčešće korišćene komande.ll
je često definiran za vas u Linuxu, ali možete kreirati i svoj vlastiti.