Naredbeni redak u Linuxu

Izvor: HrOpenWiki
Inačica od 20:26, 15. prosinca 2008. koju je unio/unijela 4ndY (razgovor | doprinosi)

Skoči na: orijentacija, traži
Primjer konzole u KDE desktop okruženju

Iako je Linux kao korisnički operativni 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.

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.

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 preko ključnih riječi vezanih uz njih:

[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).

Navigacija

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


Literatura i reference