OpenSolutions.rs

Linux konzola PDF Štampa El. pošta
Ocena korisnika: / 1
LošeNajbolje 
  
sreda, 01 april 2009 12:18

Krenuću sa ovom temom da vidite i sami da konzola u linuxu nije ništa strašno... Dapače. Moje lično iskustvo govori da sve što može u grafici, može i u konzoli. Ponekad brže i lakše. Ima recimo extremni primer gde sam puštao film (divx) iz konzole na pentiumu (beše) pro 200 MHz sa 64 MB RAMa i radio je bez bilo kakvog seckanja. Za puštanje filma sam koristio program koji je jedan od najpopularnijih u gui okruženju - mlayer. Dobro de... Ovde ne bi da pričam o puštanju filmova iz konzole... Ali želja mi je da pokažem da konzola nije bauk.
Pre nego što krenem u objašnjavanje naredbi, prvo ću objasniti neke konvencije u pisanju naredbi odnosno neke stavri koje Vam mogu olakšati život ako se nađete u konzoli.
U linux zajednici taraba ispred komande (#) označava da se naredba isključivo može izvršiti kao super korisnik, dolar ($) označava da se može kao običan odnosno pod isto bi se moglo posmatrati i procenat (%) koji u principu označava da naredbu može izvršiti bilo koji korinik. Za pokretanje opštih naredbi, odnosno naredbi koje se nalaze u zabeležene u pathu dovoljno je otkucati samo naziv naredbe i parametre iza, dok za naredbe koje nisu u pathu najčešće se koristi puna putanja (tipa /sbin/chkconfig). Ono što je definisano u jednoj distribuciji kao difrolna putanja, ne mora obavezno da bude na istom mestu u drugoj, mada se uglavnom distribucije drže nekih ustaljenih konvencija. Fajlove koje želimo izvršiti iz tekućeg foldera možemo startovati sa ./imefajla ili sa sh imefajla. Postoje i komplikovanije naredbe, koje su pisane u nekom programskom jeziku, ali o tome možda kasnije. Za sada ću se držati samo ustaljenih naredbi.
Pa da krenemo od samog početka.
Po meni početak bi bio šta da radim kada mi je potrebna pomoć u konzoli. Super varijanta je ako znamo komandu (nadam se da ću uspeti da obuhvatim one bitne tako da će i ovde biti opis, odnosno znaćete koju treba da kucate). Ako niste sigurni šta komanda radi, ovo možete proveriti sa whatis:
%whatis cp
gde dobijete obaveštenje čemu služi ova komanda.

 

U 90% slučajeva i sama komanda vam može izbaciti pomoć. Npr:
% cp --help
daće vam osnovne podatke i sintaksu naredbe cp.
Isto tako postoji jedan tip stranica sa uputstvima (manual) koji vam može pomoći malo detaljnije u čitavoj priči. Odnosno, ako me interesuje nešto detaljnije o naredbi cp, osnim onoga što mi izbacuje običan help dovoljno je ukucati:
%man cp
ovde se dobija malo detaljnije uputstvo (kroz njega se kreće strelicama gore dole, a kada želi da se izađe, dovoljno je pritisnuti taster q)
Svojevremeno je pokrenut projekat koji je trebao da zameni man strane, koji mnogo detaljnije opisuje čitave narebe i ne retko daje primere upotrebe istih, ali sadrži i detaljnije podatke o samom sistemu. Npr.
%info fstab
gde ćete kao rezultat dobiti kompletnu informaciju o fajlu fstab. Ono što je zanimljivo ovo je i inteaktivno, odnosno na dnu objašnjena fstab narebe piše recimo naredba mount, kursorom se namestite na nju i pritisnite enter i dobićete kompletnu informaciju o mount naredbi. Izlaz iz programa je isto kao i u manu taster q.
A šta da radim kada ne znam koju naredbu da upotrebim? E i tu ima leka. Recimo da želimo da uradimo kopiranje, a neznamo kako se to radi na linuxu, onda možemo da uradimo sledeće:
%apropos copy
i pojaviće se na ekranu sve man stranice u kojima se nalazi copy kao opis. Rezultati mogu ponekad da budu veoma nepregledni (puno redova) ovde možemo se poslužiti sa nekoliko trikova:
1. Ako se nalazimo u grafičkom okruženju, najlakše je pomerati konzolarni prikaz preko klizača
2. Ako se nalzimo u tekstualnom okruženju, dovoljno je da se sa shift i pg-up pg-down pomera čitav ekran gore dole.
3. zbog koga sve ovo pišem je nešto što se zove preusmeravanje izlaza (kasnije detaljnije) odnosno:
%apropos copy>rezultat.txt
Ova naredba će preusmeriti svoj izlaz umesto na ekran na fajl koji će biti smešten u tekućem direktorijumu i koji će se zvati rezultat.txt
Ovako iz bilo kog tekst editora možemo pristupiti tom fajlu i proveriti šta se tamo nalazi.

Bio bi red da pomenem neke osnovne naredbe.
Čuvena naredba, promeni direktorijum.... Svi koji su radili u dos-u već je znaju.
%cd /putanja/koja/treba
Ono što je olakšavajuća okolnost u linuxu (za razliku od dos-a) ne mora se kucati kompletna putanja. Naime, taster TAB dovršava reči, odnosno krenete da kucate putanju ukucate /ho i pritisnete TAB i on će vam sam završiti reč na /home.
Kada se ukuca samo:
%cd
on će Vas uvek vratiti u vaš home direktorijum.
Tu su i čuvene naredbe kreiraj direktorijum i briši direktorijum, odnosno:
%mkdir /ime/dira
%rmdir /ime/dira
Rmdir briše samo prazne direktorijume.
Opet karakteristika linuxa:
%mkdir -p /ime/dira/koje/ne/postoji
će kreirati kompletnu putanju bez obzira što postoji samo direktorijum (npr) ime.
Cool... A šta da radimo sa fajlovima. I tu idemo redom:
%ls
prikazuje sadržaj direktorijuma. Češće se koristi varijanta:
%ls -la
koja pokazuje kompletnu informaciju o nekom fajlu/direktorijum...
%du
pokazuje zauzeće diskova
%du -h
isto to smao malo čitljivije.
%df
Disk free, slobodno na diskovima, varijanta -h za čitljivije.
cp - copy
mv - move
rm - brisanje
Vodite računa kada brišete, naročito ako ste root, ovo je izuzetno moćna naredba. Najbolje ju je koristiti, kao
%rm -i fajlovi.ili.putanja
gde ćete dobiti interakciju.
Ako ste na trenutak zaboravili gde se nalazite, rešenje je naredba:
%pwd
koja pokazuje tekući direktorijum.
Ako ne piše, ili ako ne znate kako ste ulogovani, tu je naredba:
%whoami
koja pokazuje kako smo ulogovani.

E sada za one koje vole norton commander, windows commander na linuxu u konzoli postoji nešto što je veoma moćno i zove se midnight commander. Sa njim bukvalno sve gore navedeno, ali i mnooogo više se može uraditi. Jedna od prvih stvari koju uradim kada instaliram neki linux je da instaliram i ovu alatku jer će vam i te kako olakšati život. Inače se startuje sa :
%mc
Sledeća naredba koju ću pomenuti je ln. Naime ova naredba i te kako zna da bude korisna, a koristi se za kreiranje kako hard, tako i soft linkova (aka symbolic links).
Njegova sintaksa je sličana svim gore navedenim naredbama za manipulaciju fajlovima, odnosno:
ln [opcije] source link

Ne retko trebaće vam neki fajl koji ste sačuvali negde, a ne znate gde. Prva naredba koja vam može pomoći je naredba find:
find direktorijum -name "string"
Kao rezultat će se pojaviti sve što odgovara zadatom kriterijumu pod stringom (dozvoljeno je korišćenje džoker znakova), na zadatoj putanji (direktorijumu). Ako korisnik koji radi find naredbu nema prava za čitanjem nad nekim direktorijumom, taj direktorijum neće biti pretražen, a na ekranu će se pojaviti poruka da nije moguće očitati taj direktorijum.
Druga naredba koja se može koristiti za pronalaženje fajlova je locate. Po principu je slična komandi find, ali je manje "sotisficirana" od predhodne. Prednost komande locate je da kreira jednu mini bazu koja se na dnevnom nivou osvežava, tako da je dosta brži od naredbe find. Ovo osvežavanje se radi najčešće preko cron job-ova.
Kada vam treba neka komanda koja je standardna ili bar smeštena u neke standardne binardne direktorijume, najbrži način da se dođe do nje je naredba whereis.
U linuxu se dosta često primenjuje komanda grep, koja se koristi za pregled sadržaja fajla. Sintaksa:
grep [opcije] šema [fajlovi]
Ovde ću dati 2 veoma zanimljiva primera korišćenja komande grep:
#grep tty[12] /etc/*
Ova naredba će proći sve konfiguracijske fajlove u direktorijumu /etc i kao rezultat izbaciti imena fajlova gde se pominju tty1 i tty2 (u samom tekstu unutar fajla).
Drugi primer ću dati zbog još jednog pojma koji se dosta često zna koristiti u linuxu:
#ps ax | grep xterm

Ovde imamo 2 komande. ps komadna služi za izlistavanje procesa koji su tranutno aktivni na našem sistemu, odnosno, ovde kako je napisano ps ax označava da prikaže sve procese (opcija a) čak i one koji nemaju svoju konzolu - tty (x) . Kada bi ova naredba išla samo ovako dobili bi jedan nepregledan niz podataka. Kada znamo tačno šta nas interesuje onda možemo da filtriramo ovaj prikaz komandom grep. U linuxu se to radi preko jednog pojma koji se zove pipe i označava se sa | . Gore navedena naredba radi ovako:
pogledaj "sve" procese naredbom ps i onda izlaz naredbe ps "filtriraj" naredbom grep tako da pokazuje samo one procese koje u svom "imenu" imaju xterm string. Inače ova komanda je izuzetno korisna u upravljanju procesa na računaru.
Sledeća komanda je i te kako zanimljiva, naizgled jednostavna, a zna da bude izuzetno moćna. Elem, pričam o komandi cat (čini mi se da je pun naziv naredbe concatenate, ali lakše je samo cat zar ne?) koja služi, za preglede sadržaja, kombinovanje .. fajlova.
Recimo:
% cat /etc/inittab
će izlistati sadržaj inittaba na vaš ekran. Naravno (sada znamo), grep naredbom možemo izvući red tačno koji nam treba inače baš ovaj fajl bi bio veoma neugodan za čitanje na ekranu jer je velik.
Druga zanimljiva primena naredbe cat je kombinovanje više fajlova u jedan novi:
%cat /etc/fstab /etc/inittab > sveisvasta.txt
gde će umesto da pokaže sadržaje oba fajla, on to lepo smestiti u sveisvasta.txt gde se kasnije može isčitati.
"Čitanje" velikih fajlova se može raditi preko naredbe more, odnosno unapređene verzije less, ali tu se neću dugo zadržavati jer mislim da je interesantnija naredba za gledanje kraja i početka nekog fajla:
tail -n 20 /var/log/messages
Ova naredba je kao stvorena za pregled logova, (sve što se događa na vašem sistemu se može i ne mora smeštati u log fajlove, a najčešća lokacija istih je u direktorijumu /var/log) što i te kako zna piti korisno kada nešto ne predviđeno se krene događati sa sistemom. Ova gore napisana naredba pokazuje zadnjih 20 linija u logu messages. inače ako se ne navede ova opcije -n broj, onda je podrazumevano zadnjih 10 redova.
suprotno od tail-a je head, odnosno naredba koja pokazuje početak nekog faila i sintaksa mu je gotovo identična tailu.
Malo pre sam pričao o nekim operatorima pa čisto da dam i neka dodatna objašnjena. Naime već smo videli šta radi operator >. Npr.
%ifconfig > ifistorija.txt
Na ovaj način izlaz ifconfiga ćemo smestiti umesto na ekran u fajl koji će se zvati ifistorija. Međutim, ako želimo da dodajemo više različitih podataka, ili recimo da dodamo neki podatak u već kreirani ifistorija onda to možemo uraditi operatorom >> umesto >. Dakle ovo je bilo preusmeravanje outputa.
Kako možemo da preusmeravamo output, tako možemo da preusmeravamo i input. Odnosno:
%nekaskripta < odgovori.txt
Recimo da smo napravili nekuskriptu, i da ta skripta traži od nas inerakciju tipa unesi ovo, pritisni taj i taj broj... Ovo zna da bude i te kakva "smor" ako se radi svaki dan, ili recimo ako treba na više mašina istu skriptu da pokrenemo. Ovaj problem možemo rešiti tako što ćemo napraviti neki fajl odgovori.txt u kome ćemo zabeležiti naše odgovore i pokrenuti skriptu kako je gore navedeno. Skripta će sve automatski odraditi mesto vas  
Pipe-ovanje sam objasnio, tako da neću se ovde mnogo zadržavati, ali ću pomenuti još 2 načina startovanja programa iz konzole.
Prvi je startovanje programa u pozadini ili :
%nekakomanda &
Ovako se startuje neka komanda i ona radi u pozadini. Ovo je izuzetno korisno, ako ima neki dugotrajan proces koji ne zahteva interakciju sa korisnikom računara. Ako ga startujemo bez stringa & nećemo moći ništa da radimo dokle god taj proces ne završi se, ali ako koristimo &, onda ćemo odmah dobiti kursor i moćićemo da nastavimo da radimo u konzoli, dok će proces da se fino obrađuje u pozadini. Naredba fg služi za vraćanje pozadniskog procesa, dok naredba bg ga ponovo vraća u pozadnu. Ako smo neki proces već pokrenuli, a da nismo ga "bacili" u pozadinu, a iz nekog razloga nam hitno treba baš ta konzola, sa CTRL+Z, zaustavljamo proces i bacamo ga u pozadinu. Kasnije ga uvek možemo vratiti sa fg radi dalje obrade.

Nedostatak ovakvog startovanja je što sa "logoffom" prekidamo izvršavanje procesa. Međutim i tu ima leka. Recimo da želimo da startujemo download sa interneta (wget je najčešće korišćeni program za download iz konzole) koji bi išao i ako se izlogujem (recimo drugi korisnici mogu koristiti računar) dovoljno je ispred naredbe koju želim da koristim ukucam nohup npr:
%nohup wget -c http://www.neki.com/fajl.tgz


Evo malo praktična upotreba dozvola i vlasništva nad fajlovima.
Sa komandom ls -la uvek se može videti prava nad nekim fajlom ili folderom, kao i vlasništvo. Ako želimo da promenimo vlasništvo nad fajlovm to radimo preko chown komande, odnosno:
#chown noviuser:novagrupa fajl
Možemo samo da promenimo grupu sa naredbom:
#chgrp novagrupa fajl

Promena dozvola se radi na sledeći način:
npr želimo da kreiramo dozvolu tipa -RWXRWXR--
Ako koristimo binarni sistem da ovo prikažemo to bi izgledalo ovako: -111111100, gde je jedinica oznaka ima znaka, 0 nema. Izbacimo -, i grupišemo po 3 simbola, odnosno prava za usera 111, kada se prebaci u dekadni sistem dobija se 1*4+1*2+1=7, za grupu imamo prava isto 111, tako da je to u dekadni sistemu 7, dok za sve ostale imamo 100, što predstavlja 4. Ovako kada razvrstamo prava možemo direktno dodeliti pravo sa naredbom chmod:
#chmod 774 ime.fajla
Mogu se dodavati prava i na simbolički način, odnosno:
u - user
g - group
o - world
a - all
operatori + dodaj, - oduzmi, = postavi na.
r-read, w-write,x-execute, X - izvši fajl ako direktorijum ima izvršnu dozvolu, s -suid ili sgid, t sticky bit, u - postojeća prava vladnika, g - postojeća prava grupe,, o postojeća prava ostatka
E sada praktično bi to izgledalo ovako:
#chmod a+x neki.fajl
Dodeljuje svim korinicima pravo izvršavanja fajla.
# chmod u-x neki.fajl
Uklanja pravo useru izvršavanja.
#chmod g-w,o-rw neki.fajl
grupi ukida pravo pisanja, a ostalima i čitanja i pisanja.

 
Poslednje ažurirano ( ponedeljak, 06 april 2009 08:42 )
 

Dodaj komentar


Sigurnosni kod
Osveži

Glavni meni

Open škola

Forum

J!Analytics

Baner
© 2010 OpenSolutions.rs. Sva prava zadržana.
Joomla! je Slobodan softver objavljen pod GNU/GPL Licencom.