Poglavlje 10 Upravljanje datotekama i direktorijima Linux ima cilj biti što sličniji Unixu. Tradicionalno, Unix operativni sistemi su usmjereni naredbenom retku. Slackware ima i grafičko sučelje, no naredbeni redak je i dalje glavni oblik kontrole sistema. Stoga je važno razumjeti neke od osnovnih naredbi za upravljanje datotekama. Slijedeće sekcije objašnjavaju osnovne naredbe za upravljanej datotekama i sadrže primjere kako ih koristiti. Postoji još mnogo drugih naredbi, ali ove će vam pomoći da počnete. Uz to, naredbe su ovdje obrađene samo površno. Naći ćete detaljnije opise u man stranicama svake od njih. 10.1 Navigacija : ls, cd, i pwd 10.1.1 ls Ova naredba ispiše datoteke koje se nalaze u direktoriju. Windows i DOS korisnici će primjetiti sličnosti s dir naredbom. Pokrenuta bez dodatnih opcija, ls(1) će ispisati datoteke u radnom direktoriju. Da vidite što vam se nalazi u root direktoriju, unesite slijedeće naredbe: % cd / % ls bin cdr dev home lost+found proc sbin tmp var boot cdrom etc lib mnt root suncd usr vmlinuz Problem je u tome što mnogi ljudi s tim ispisom ne mogu lako razlikovati datoteke od direktorija. Neki korisnici preferiraju ls naredbi dodati opciju, kao što vidite u slijedećem primjeru: % ls -FC bin/ cdr/ dev/ home/ lost+found/ proc/ sbin/ tmp/ var/ boot/ cdrom/ etc/ lib/ mnt/ root/ suncd/ usr/ vmlinuz Direktoriji dobiju kosu crtu na kraju naziva, egzekutabilne datoteke dobiju zvjezdicu (asterisk) na kraju naziva, itd. ls se također može koristiti za prikazivanje podataka vezanih za datoteke. Na primjer, da prikaže vrijeme stvaranja, vlasnike, dopuštenja, koristili bi -l opciju: % ls -l drwxr-xr-x 2 root bin 4096 May 7 09:11 bin/ drwxr-xr-x 2 root root 4096 Feb 24 03:55 boot/ drwxr-xr-x 2 root root 4096 Feb 18 01:10 cdr/ drwxr-xr-x 14 root root 6144 Oct 23 18:37 cdrom/ drwxr-xr-x 4 root root 28672 Mar 5 18:01 dev/ drwxr-xr-x 10 root root 4096 Mar 8 03:32 etc/ drwxr-xr-x 8 root root 4096 Mar 8 03:31 home/ drwxr-xr-x 3 root root 4096 Jan 23 21:29 lib/ drwxr-xr-x 2 root root 16384 Nov 1 08:53 lost+found/ drwxr-xr-x 2 root root 4096 Oct 6 12:47 mnt/ dr-xr-xr-x 62 root root 0 Mar 4 15:32 proc/ drwxr-x--x 12 root root 4096 Feb 26 02:06 root/ drwxr-xr-x 2 root bin 4096 Feb 17 02:02 sbin/ drwxr-xr-x 5 root root 2048 Oct 25 10:51 suncd/ drwxrwxrwt 4 root root 487424 Mar 7 20:42 tmp/ drwxr-xr-x 21 root root 4096 Aug 24 03:04 usr/ drwxr-xr-x 18 root root 4096 Mar 8 03:32 var/ Recimo da želite vidjeti sve skrivene datoteke u radnom direktoriju. Ova naredba će napraviti upravo to: % ls -a . bin cdrom home mnt sbin usr .. boot dev lib proc suncd var .pwrchute_tmp cdr etc lost+found root tmp vmlinuz Datoteke koje počinju sa točkom (takozvane dot datoteke) su sakrivene kada pokrenete ls. Vidjet ćete ih samo ako dodate -a opciju. Postoji mnogo više opcija koje možete pogledati u man stranici naredbe. Nemojte zaboraviti da možete kombinirati opcije koje dodajete iza ls. 10.1.2 cd Naredba cd se koristi za promjenu radnog direktorija. Jednostavno upišete cd iza čega slijedi putanja u koju želite promijeniti radni direktorij. Evo nekoliko primjera: darkstar:~$ cd /bin darkstar:/bin$ cd usr bash: cd: usr: No such file or directory darkstar:/bin$ cd /usr darkstar:/usr$ ls bin darkstar:/usr$ cd bin darkstar:/usr/bin$ Obratite pažnju na to da bez kose crte, pokušava promijeniti direktorij unutar radnog direktorija. Ako pokrenete cd bez dodatnih opcija, prebacit će vas u vaš korisnički (home) direktorij. Naredba cd se razlikuje od ostalih po tome što je ona sastavni dio shella. Te naredbe su obrađene u Sekciji 8.3.1. To zapravo znači da za nju nema man stranice, ako želite pomoć morate koristiti ugrađenu shell pomoć: % help cd To će vam prikazati opcije za cd i kako ih koristiti. 10.1.3 pwd Naredba pwd se koristi za prikazivanje trenutačne lokacije. Jednostavno upišite pwd i to je to: % cd /bin % pwd /bin % cd /usr % cd bin % pwd /usr/bin 10.2 Prikazivači: more, less, i most 10.2.1 more more(1) je alat za prikazivanje. Često je ispis nekih naredbi prevelik da stane na jedan ekran. Pojedinačne naredbe ne mogu rasporediti ispise različitim ekranima. Tu uskače alat za prikazivanje. Naredba more podijeli ispis na odvojene ekrane i čeka da korisnik pritisne space tipku prije nastavljanja na slijedeći ekran. Pritiskom na enter tipku ćete pomaknuti ispis za jednu liniju. Evo dobrog primjera: % cd /usr/bin % ls -l To bi trebalo prikazati malo dužu listu. Da podijelite ispis na više ekrana, jednostavno ga preusmjerite na more: % ls -l | more Uspravna crta (pipe) služi za preusmjeravanje ispisa naredbe ls u more. Možete preusmjeriti gotovo sve naredbe kroz more, ne samo ls. Preusmjeravanje je detaljnije obrađeno u Sekciji 8.2.3. 10.2.2 less Naredba more je poprilično korisna, no često ćete proći ekran na kojem se nalazio podatak koji vam je trebao, a more naredba ne omogućuje vraćanje unatrag. Zato naredba less(1) omogućuje tu opciju. Koristi se na isti način kao i more naredba, tako da prošli primjer vrijedi i za ovu naredbu. Tako da je less više nego more. Joost Kremers je to opisao ovom igrom riječi: less is more, but more more than more is, so more is less less, so use more less if you want less more. 10.2.3 most Tamo gdje i more i less zakazuju, most(1) preuzima stvar. Ako je less više od more, most je više od less. Dok ostali prikazivači prikazuju datoteke jednu po jednu, most ima mogućnost otvaranja velikog broja datoteka, uz uvjet da je prozor za prikazivanje svake datoteke velik najmanje 2 linije. most ima mnogo opcija, pogledajte man stranice za puni popis. 10.3 Jednostavni ispis: cat and echo 10.3.1 cat cat(1) je skraćenica od "concatenate". Izvorno joj je namjena bila spajanje više tekstualnih datoteka u jednu, ali se može koristiti i u brojne druge svrhe. Kako bi spojili dvije ili više datoteka u jednu, jednostavno napišite imena datoteka iza cat naredbe i zatim usmjerite ispis u novu datoteku. cat radi sa standardnim ulazom i izlazom, tako da morate koristiti shell karaktere za preusmjeravanje. Primjerice: % cat file1 file2 file3 > bigfile Ova naredba uzme sadržaje datoteka file1, file2, and file3 i spoji ih u datoteci bigfile. Rezultat naredbe se šalje na standardni izlaz. Naredbu cat možete koristiti i za prikaz sadržaja datoteka. Dosta korisnika koristi naredbu cat zajedno sa more ili less naredbom za lakši ispis tekstualnih datoteka. Primjerice: % cat file1 | more Ova naredba će uzeti sadržaj datoteke file1 i preusmjeriti ga kroz more naredbu tako da ćete ga dobiti jedan po jedan ekran. Još jedna uobičajena primjena naredbe cat je za kopiranje datoteka. Možete kopirati bilo koju datoteku na slijedeći način: % cat /bin/bash > ~/mybash Program /bin/bash je ovim kopiran u vaš home (korisnički) direktorij i nazvan je mybash. cat ima mnogo primjena i ove koje smo obradili u ovih par primjera je mali dio toga. S obzirom da cat koristi standardni ulaz i izlaz, idealna je za korištenje u shell skriptama ili kao dio drugih složenijih naredbi. 10.3.2 echo Naredba echo(1) ispisuje navedeni tekst na ekranu. Vi navodite tekst koji će se prikazati nakon echo naredbe. Po defaultu echo će ispisati tekst i novu liniju iza njega. Možete dodati -n opciju da onemogućite ispis nove linije. Opcija -e će natjerati echo da traži escape znakove u stringu i izvrši ih. 10.4 Stvaranje: touch i mkdir 10.4.1 touch Naredba touch(1) se koristi za izmjenu vremena stvaranja datoteke. Možete izmjeniti vremenske oznake kada se pristupalo datoteci i kada je došlo do promjene sadržaja datoteke. Ako navedena datoteka ne postoji, touch će kreirati praznu sa navedenim nazivom. Da datoteci dodate trenutačno sistemsko vrijeme izvršili bi slijedeću naredbu: % ls -al file1 -rw-r--r-- 1 root root 9779 Feb 7 21:41 file1 % touch file1 % ls -al file1 -rw-r--r-- 1 root root 9779 Feb 8 09:17 file1 Postoji nekoliko opcija za touch, uključujući opcije koje označavaju vremensku oznaku koju želite izmjeniti, vrijeme koje će se koristiti itd. Za detalje pogledajte man stranicu naredbe. 10.4.2 mkdir Naredba mkdir(1) će kreirati novi direktorij. Prilikom pokretanja mkdir samo navedete ime direktorija kojeg želite kreirati. U ovom primjeru kreiramo direktorij hejaz u radnom direktoriju: % mkdir hejaz Možete i navesti putanju, primjerice : % mkdir /usr/local/hejaz Opcija -p omogućuje kreiranje roditeljskih direktorija. Gore navedeni primjer neće biti izvršen ako /usr/local ne postoji. Opcija -p će kreirati i /usr/local i /usr/local/hejaz: % mkdir -p /usr/local/hejaz 10.5 Kopiranje i Premještanje 10.5.1 cp Naredba cp(1) kopira datoteke. DOS korisnici će uočiti sličnost s copy naredbom. Postoji mnogo opcija za cp, tako da najbolje pogledate man stranicu prije korištenja. Najčešća upotreba naredbe cp je kopiranje datoteke s jedne lokacije na drugu. Primjerice: % cp hejaz /tmp Navedeni primjer će kopirati hejaz datoteku iz radnog direktorija u /tmp direktorij. Mnogi korisnici preferiraju da vremenske oznake ostanu nepromijenjene kopiranjem, kao u slijedećem primjeru: % cp -a hejaz /tmp Sa ovom opcijom štitimo vremenske oznake od promjene tokom kopiranja. Rekurzivno kopiranje sadržaja direktorija sa svim poddirektorijima i datotekama moguće je uz slijedeću opciju: % cp -R mydir /tmp Navedeni primjer će kopirati direktorij mydir u /tmp direktorij. Također ako želite kopirati direktorij ili datoteku i sačuvati sve njihove dozvole i vremenske oznake koristite naredbu cp -p. % ls -l file -rw-r--r-- 1 root vlad 4 Jan 1 15:27 file % cp -p file /tmp % ls -l /tmp/file -rw-r--r-- 1 root vlad 4 Jan 1 15:27 file cp ima mnoge druge opcije koje su detaljnije opisane u man stranicama. 10.5.2 mv Naredba mv(1) premješta datoteke iz jedne lokaciju u drugu. Zvuči poprilično jednostavno zar ne? % mv oldfile /tmp/newfile mv ima nekoliko korisnih opcija koje su objašnjene u man stranici. U praksi, mv se gotovo nikad ne koristi sa dodatnim opcijama. 10.6 Brisanje: rm i rmdir 10.6.1 rm Naredba rm(1) briše datoteke i stabla direktorija. DOS korisnici će uočiti sličnosti sa del i deltree naredbama. Naredba rm može biti vrlo opasna ako ne pazite. Iako je nekada moguće povratiti nedavno obrisanu datoteku, može biti komplicirano (i potencijalno skupo) i to je izvan opsega ove knjige. Da obrišete jednu datoteku, navedite njen naziv prilikom pokretanja naredbe: % rm file1 Ako datoteka ima uklonjene dozvole za upis u datoteku, dobit ćete "permission denied" poruku greške. Kako bi obrisali datoteku bez obzira na bilo koje dozvole, dodajte -f opciju, primjerice: % rm -f file1 Za brisanje čitavog direktorija, koristite -r i -f opcije zajedno. Ovo je dobar primjer kako obrisati čitav sadržaj vašeg tvrdog diska. Vi to stvarno ne želite učiniti. No evo vam naredba svejedno: # rm -rf / Budite vrlo oprezni sa rm; mogli bi si jako zagorčati život. Postoji nekoliko dodatnih opcija, koje su opisane u man stranici naredbe. 10.6.2 rmdir Naredba rmdir(1) briše čitave direktorije. Direktorij mora biti prazan prije brisanja. Sintaksa naredbe je jednostavna: % rmdir Slijedeći primjer će obrisati hejaz poddirektorij u trenutačnom radnom direktoriju: % rmdir hejaz Ako taj direktorij ne postoji, rmdir će vas o tome obavijestiti. Također možete navesti punu putanju do direktorija kojeg želite obrisati, primjerice: % rmdir /tmp/hejaz Navedeni primjer će pokušati obrisati hejaz direktorij koji se nalazi unutar /tmp direktorija. Također možete obrisati direktorij zajedno sa svim njegovim roditeljskim direktorijima dodavajući -p opciju: % rmdir -p /tmp/hejaz Naredba prvo pokuša obrisati hejaz direktorij unutar /tmp. Ako je to uspješno, pokušat će obrisati /tmp. rmdir će nastaviti sve dok se ne pojavi greška ili dok cijelo stablo direktorija nije obrisano. 10.7 Povezivanje datoteka sa ln Naredba ln(1) se koristi za stvaranje veza između datoteka. Veze mogu biti čvrste (hard) ili simbolične (soft). Razlike između te dvije vrste veza su opisane u Sekciji 9.3. Ako želite kreirati simboličnu vezu na direktorij /var/media/mp3 i postaviti ju u vaš korisnički (home) direktorij trebali bi učiniti slijedeće: % ln -s /var/media/mp3 ~/mp3 Opcija -s govori ln da kreira simboličnu vezu. Slijedeća opcija je meta veze (direktorij na kojem želimo kreirati vezu), i posljednja opcija je naziv veze. U ovom slučaju, samo će kreirati datoteku naziva mp3 u vašem korisničkom (home) direktoriju koja upućuje na /var/media/mp3. Možete nazvati vezu kako god želite mjenjajući posljednju opciju. Kreiranje čvrste veze je isto tako jednostavno. Samo trebate izostaviti -s opciju. Čvrste veze se inače ne koriste za upućivanje na direktorije ili datoteke drugih datotečnih sustava. Kako bi kreirali čvrstu vezu /usr/bin/email na /usr/bin/mutt, samo upišite slijedeće: # ln /usr/bin/mutt /usr/bin/email