Naredbeni redak u Linuxu
Iako je Linux kao korisnički operacijski sustav u zadnje vrijeme jako napredovao i gotovo sve dnevne operacije mogu se napraviti iz grafičkog sučelja nekad je potrebno zasukati rukave u ući u naredbenu liniju (drugi nazivi su: Terminal, Konzola, XTerm, Shell, Ljuska...). Netko čak odlazi u naredbenu liniju jer mu je bolja i draža :-)
Princip funkcioniranja naredbene linije je vrlo jednostavan: imamo jednu aktivnu liniju u koju upisujemo naredbe. Naredbu pokrećemo pritiskom na tipku Enter. Kad se naredba izvrši i ispište se rezultat (ako naredba daje kakav ispis) dana je nova aktivna linija, a stara se pomakla prema gore. Krivo napisana naredba se može korigirati s tipkama Delete i Backspace. Možda princip neodoljivo podsjeća na pisanje teksta na računalu morate biti svjesni da je nemoguće mijenjati gornje neaktivne linije - samo aktivnu i to do pristiska Entera.
Program koji prevodi računalu što je korisnik unio preko naredbene linije zove se interpreter. Postoje više različitih interpretera za naredbenu liniju u Linuxu. Najpoznatiji i najrasporastranjeniji je Bash i mi ćemo ga ovdje koristit. Ostali su sh, ksh, csh, tcsh itd.
Sadržaj
Najkorištenije Linux naredbe
Jedna naredba zaslužuje mjesto ispred svih ostalih, a to je naredba man (skraćeno od manual). Ona nam ispisuje pomoć o nekoj naredbi: opće informacije, kako je koristiti, koje argumente i parametre prima i na koji način te mnoge druge informacije. Naredbu koristimo tako da upišemo:
man neka_naredba
Kroz stranice te pomoći krećemo se s strelicama gore/dolje ili PageUp/PageDow, a izlazimo s slovom q. Svaku naredbu spomenutu u ovom tekstu možete bolje proučiti s man. Ako ne znamo ime programa, možemo ga potražiti uz pomoć naredbe man preko ključnih riječi vezanih uz traženi program:
[andy@localhost ~]$ man -k "copy file" File::Copy [] (3) - Copy files or filehandles cp [] (1) - copy files and directories cp [] (1p) - copy files
- Još neke naredbe vezane uz pomoć: apropos, help, info.
Naredbena linija pamti svaku unesenu naredbu (do nekih 500 u prošlost) pa nam je poslije omogućeno traženje prijašnjih naredbi. Strelicama gore/dolje se pomičemo za jednu naredbu, stariju/noviju u toj listi (jedan klik gore nam daje zadnje unesenu naredbu).
Kada ste u naredbenoj liniji uvijek se nalazite na nekoj lokaciji unutar hijerarhije datotečnog sustava. U startu je to obično vaš home direktorij, skraćeno se označava s tildom ~. Da bi saznali gdje ste, odnosno koji je vaš trenutni radni direktorij, upišite pwd
[andy@localhost ~]$ pwd /home/andy
Sad možemo promijeniti direktorij ili u daljnji poddirektorij ili u roditeljski direktorij sadašnjeg. Roditeljski direktorij se uvijek označava s dvije točke (..), a trenutni direktorij s jednom točkom (.). Spuštanje u roditeljski direktorij napravimo ovako:
cd ..
gdje je cd skraćeno od Change Directory, odnosno promijeni direktorij. Koristi se tako da se napiše cd ime_direktorija. Primjetite da naredba cd . nema previše smisla.
Da bi znali u koji poddirektorij želimo ići, pozvat ćemo prvo ispis svih datoteka i direktorija u trenutnom direktoriju s naredbom ls (dolazi od list).
[andy@localhost KM2]$ ls kolokvij2.jpg legenderova_transformacija.ggb zadaci.pdf Teorija
Dobro proširenje naredbe ls je ls -l - ispisuje sve isto, ali u stupcu i to s dodatnim informacijama (kao vremenu kreacije, dozvolama i vlasniku). Nastavak naredbe -l zove se argument (konkretnije: zastavica). Zastavice obično omogućuju da promijenimo ponašanje originalne naredbe. U ovom slučaju mi smo s -l zatražili detaljniji ispis liste. Običaj je kod svih programa da argumenti s jednim slovom se pozivaju s jednom crticom, a oni s više slova s dvije crtice, no ima iznimaka, zato obavezno provjeriti man naredbe. Ukoliko pozovemo više zastavica, možemo ih pisati sve zajedno, npr. umjesto ls -l -a pišemo ls -la.
Napokon smo našli ime poddirektorija u kojeg želimo ući i pišemo cd Teorija. Prvi hint: dovoljno je napisati samo cd T i ukoliko je to jedini direktorij koji počinje slovom T, pritisnemo tipku Tab na što će nam računalo nadopisati ostatak. Drugi hint: možemo napisati i cd T* u istom slučaju kao i za prvi hint, na što će računalo zamijeniti * s dostupnim nastavkom i izvršiti prvotnu naredbu. Zvijezdica (*) gdje god se u naredbenom retku primjeni zamjenjuje znak ili skupinu znakova, dok upitnik ? zamjenjuje točno jedan znak. Primjer: ako imamo u direktoriju u kojem se nalazimo dva poddirektorija Kuca i Kuhaca i unesemo naredbu cd Ku* računalo bi ušlo u oba direktorija da može (ali ne može, ući će u prvi po abecedi) jer Ku* može zamijeniti i Kuca i Kuhaca. ? i * su tzv. wildcards.
Ukoliko imamo ime datoteke ili direktorija koje se sastoji od dvije ili više riječi koje su odvojene razmakom nastaje mali problem. Ako doslovno prepišemo:
naredba ovo je ime datoteke
naredba će primati svaku od riječi posebno, a neće to shvatiti kao ime za jednu datoteku. U tom slučaju treba koristiti poseban znak ispuštač \ prije svakog razmaka (ukoliko želimo baš znak \, koristimo ga dva puta \\). Drugi pristup je da cijelo ime stavimo pod dvostruke navodnike:
naredba "ovo je ime datoteke"
Da ne bi sve išlo tako pješice, naredbe ne primaju samo imena datoteka ili direktorija, već i cijele puteve do njih. Ovo je primjer takozvanog kombo nastupa:
cd /var/log/mail/
gdje nas cd odmah odvodi do tog mjesta. Kao što je već u hijerarhiji spomenuto / je oznaka za korijenski direktorij, odnosno onaj koji nema svog roditelja (naredba cd .. u njemu neće nigdje dalje otići). Iz / sve počinje.
Nešto o pretrazi. Klasično traženje datoteke ili direktorija možemo pokrenuti ovako:
find /home/andy/Documents -name riječ
Drugi argument označava mjesto na kojem treba tražiti (najširi uvjet u tom pogledu je dakako /). Postoji i brže traženje (gotovo trenutno) s locate riječ, gdje se pretražuje baza u kojoj su popisane sve datoteke, no da bi baza bila ažurirana potrebno je pokrenuti updatedb (i to s administratorskim ovlastima). Obje ovdje spomenute naredbe za pretragu je moguće koristiti s * i ?. Naredba which ime_programa nam otkriva gdje se izvršna datoteka tog programa i fizički nalazi.
Rad s datotekama i direktorijima
Počnimo s najopasnijom naredbom:
rm ime_datoteke
dolazi od remove i trajno briše označenu datoteku. Ekvivalent za direktorije je rmdir, ali radi samo ako je direktorij potpuno prazan, u obrnutoj situaciji koristiti rm -rf direktorij (briši direktorij i sve u njemu rekurzivno bez pitanja "Da li želite obrisati i ovo... i ovo... i ovo?). Jako oprezno s time jer su obrisani podaci uglavnom nepovratni, a tek pogotovo s ovim: rm -rf *.
Naredba za kopiranje (copy):
cp /jedan/put/do/datoteka1 /gdje/cu/kopiju/smjestiti/kopija_datoteke1
(isto je i s direktorijima). Pogledaj man cp za više.
Naredba mv (move) pomiće objekt s jednog na drugo mjesto (sintaksa ista kao i kod cp).
Želimo da se jedna datoteka nalazi i na nekom drugom mjestu, ali tako da je to drugo mjesto samo putokaz (ili prečac) do prvotnog mjesta:
ln -s originalni_put odredišni_put_prečaca
gdje nam -s simbolizira soft, odnosno simboličku poveznicu (više man ln).
Rad s tekstualnim datotekama
Ekstenzija na datoteci u Unix svijetu ne znači puno, ona služi eventualno kao pomoć čovjeku u raspoznavanju o kojoj vrsti datoteka se radi. Naredba file datoteka nam vraća točno o kojem tipu datoteke se radi, npr.
[andy@localhost Ostalo]$ file polinomi.c polinomi.c: ASCII C program text
Tekstualne datoteke nisu samo one s nastavkom .txt, već sve koje sadrže čitljivi tekst (slova, razmaci) kad ih otvorite kao tekst (op.a. malo kružna definicija - eh). Nasuprot tekstualnim, postoje i binarne datoteke (kada njih pokušate pročitati kao tekst dobijete hrpu nerazumljivih znakova i vjerojatno ćete trebati posegnuti za naredbom reset.
- head ime_datoteke prikazuje nekoliko prvih redova unesene datoteke
- tail ime_datoteke prikazuje kraj (nekoliko završnih redova) unesene datoteke
- cat ime_datoteke ispisuje cijelu datoteku na ekran (ukoliko je prevelika, prekinite ispis s ctrl+c)
- more ime_datoteke prikazuje datoteku stranicu po stranicu (Razmak za prebacivanje na sljedeću)
Osnovne operacije s naredbenim retkom
- exit momentalno izlazi iz naredbenog retka
- clear očisti sav ekran i aktivni redak za upis naredbi prebaci na vrh
- reset nam čudesno ozdravi naredbeni redak (kada počne ispisivati nesuvisle znakove umjesto normalnih)
Pozivanje sistemskih programa i naredbi
- reboot restarta računalo
- shutdown -h now gasi računalo
- who ispisuje tko je sve prijavljen na trenutno raćunalo
- passwd je naredba koja mijenja korisnikovu lozinku
- su dolazi od Substitute User i koristi se tako da se napiše korisničko ime kao argument (su tata). Potrebno je unijeti i lozinku od tog korisnika. Za promjenu u root korisnika (administratora) pišemo su -. Pažnja: neke distribucije Linuxa imaju root korisnika isključenog (tada koristiti sudo - Super User DO).
- mount postavlja podatkovni medij ili diskovnu particiju (u Linuxu je to neki virtualni uređaj) na određenu lokaciju u datotečnom sustavu gdje joj je moguće pristupiti, npr. mount /dev/sda2 /media/backup - /dev/sda2 je druga particija prvog diska, a /media/backup je mjesto gdje ćemo tu particiju postaviti. U slučaju da se radi o nestandardnim ili automatski neprepoznatim tipovima uređaja treba specificirati -t vrsta (npr. -t vfat za FAT32, -t ntfs-3g za NTFS particiju).