Za početak objasniću samu strukturu komandi. Komanda se sastoji iz tri dela i to:
ime komande
opcije komande (slova ili reči kojima prethodi -) (ove opcije se takođe nazivaju i flegovi)
argumenti (nazivi fajlova, direktorijuma, proizvoljni tekst)
Primer za početak nek bude bude komanda ls -d /home. Sada da objasnimo šta je šta. Prvo ls je ime komande kojom zadajemo da nam se izlista sadržaj direktorijum, -d je fleg, njegovo dejstvo na komandu je da prilikom izlistavanja sadržaja ditektorijuma na ekranu prikaže samo
ulazne ditektorijume. I na kraju /home je argument, ustvari on “pokazuje komandi” koji direktorijum se treba izlistati, inače ukoliko se komanda unese bez ovog argumenta izlista ce se tekući direktorijum.
I pre nego što počnem da pišem o bilo kojoj komandi daću vam objašnjenje man komande.
man – Manual (uputstvo) za komandu. Koristi se program less za ispis. Znači objašnjenje bilo koje komande možete saznati ovako!!!
(Većinu komandi sam ovako naučio, i man smatram za najboljeg prijatelja tokom rada sa SHELL-om)
man write – Uputstvo za naredbu write.
man -k – Spisak svih komandi u kojima se javlja.
--help – Znatno kraći i sažetiji help sa kratkim opisom sintakse i argumenata koji se mogu pojaviti u komandi. Radi za većinu naredbi.
Ovo je bio uvod za apsolutne početnike a sada idemo malo da proširimo znanje o komandama. Za početak ćemo se upoznati sa komandama za rad sa
datotekama.
Promena tekućeg direktorijuma
pwd apsolutna putanja do tekućeg direktorijuma
cd Change directory, tj. promena direktorijuma. Vraćanje u prethodni (parent) direktorijum.
cd ..
cd /home/mika Menjanje direktorijuma.
cd . Tekući direktorijum.
cd ̃ Vraćanje u home direktorijum (može i samo: cd).
cd ̃ Pomeranje u direktorijum unutar home direktorijuma.
Kreiranje novog direktorijuma vrši se komandom mkdir – Make directory tj.Pravljenje direktorijuma.
Uklanjanje direktorijuma vrši se komandom rmdir Remove directory Briše samo prazne direktorijume (u kojima nema drugih poddirektorijuma ili datoteka). Ukoliko direktorijum nije prazan, onda se i on i njegov sadržaj može obrisati sa rm -rf putanja_do_direktorijuma
Pregled sadržaja direktorijuma
ls List- slično sa DOS naredbom dir
ls -d * Ne listaju se direktorijumi.
ls * Lista i one fajlove koji su unutar poddirektorijuma (dir /s u DOSu).
ls a[Bb]* Lista sve fajlove čije je prvo slovo je a, drugo slovo B ili b.
ls -r * Lista fajlove i direktorijume u obrnutom poretku (reverse order).
ls [ 1-3] Lista sve fajlove čije je prvo slovo 1, 2 ili 3.
ls a?c000 ? zamenjuje bilo koje, ali tačno jedno, slovo.
ls a*0 * je zamena za bilo koju nisku (i praznu) karaktera, pa se ovako
listaju svi fajlovi koji počinju sa a, a završavaju se sa 0.
ls -l Detaljnije informacije o fajlovima, npr. atributi.
ls -a Spisak svih fajlova, tj. i onih koji počinju tačkom, a koji se inače ne prikazuju (slično hidden fajlovima u DOS-u) jer su ti fajlovi obično veoma važni.
ls -la (isto kao: ls -l -a) Detaljnije informacije o svim fajlovima.
ls -s pregledniji ispis (brojevi pored fajlova govore koliko je veliki fajl u kilobajtima).
ls -R Ispis sadržaja tekućeg direktorijuma i poddirektorijuma.
ls -p Da bi u screenu direktorijumi bili označeni kosom crtom (/).
ls -o Da bi u screenu izvesni fajlovi bili osvetljeni.
Komande za kopiranje
cp [ ] Copy Kopiranje datoteke.
cp [] Kopiranje fajlova u .
cp [] . Kopiranje u tekući direktorijum.
cp [] ̃ Kopira u home direktorijum.
cp -i Za svaki fajl preko koga treba da piše pita da li je to u redu.
Komande za promene mesta ili imena datoteke mv Move Slično kao kopiranje, samo što se originalni fajl neće sačuvati, tj. ovako se vrši preimenovanje.
mv Promena mesta boravka fajlova.
mv -i Za svaki fajl pita da li da se izvrši move.
Komande za brisanje datoteka
rm Remove Brisanje fajlova.
rm -i Pita za svaki fajl da li ga obriše.
rm -r Briše ceo bez daljih pitanja.
rm -r -i Isto kao rm -r, ali postavlja pitanje za svaki poddirektorijum unutar direktorijuma da li da ga razmatra (tj. fajlove u njemu) (descent) i da li da ga briše (remove).
rm "axb" Briše sve fajlove čiji naziv ima tri karaktera a,x,b.
rm a?b Briše sve fajlove čiji naziv ima tri karaktera i počinje sa a i
završava sa b (npr. aab, adb,…) .
rm a* Briše sve fajlove čije ime pocinje sa a.
rm a * Briše fajl koji se zove a (rm a), i sve fajlove u direktorijumu (rm *), u par reči briše sve fajlove u direktorijumu! Razlog je taj što shell interpretira *, ? i [.-.] i pravi listu fajlova za brisanje.
rm "*" – Briše fajl koji se zove *, a ne sve fajlove u direktorijumu.
rm -- -f – Briše fajl -f. Ovde je neophodno navesti opciju — koja označava da dalje ide lista fajlova, a ne neka nova opcija.
rm ./-f – Drugi način da se izbriše fajl -f u tekućem direktorijumu. Ne postoje drugi načini osim ova dva prikazana da se ovakav fajl direktno
izbriše.
Još komandi za rad sa direktorijumima
mkdir – Make directory – Pravljenje direktorijuma.
rmdir – Remove directory – Briše samo prazne direktorijume.
Opcija — postoji i za većinu drugih naredbi i služi pri radu sa fajlovima čije ime počinje minusom.
Ime datoteke, odnosno direktorijuma, ne sme da sadrži : ; < > & * ? [ ] | ukoliko nije pod navodnicima. Ovo važi pri bilo kakvom navođenju imena fajla koje sadrži ovakve karaktere.
Maksimalna dužina imena fajlova, kao i direktorijuma bi trebalo da je 255.
Još malo komandi (rad sa datotekama)
cat – Catenate – Lista fajlove (kao type u DOS-u).
cat /etc/passwd | more – Spisak svih logina na serveru.
cat > – Upis teksta sa tastature u fajl do pritiska ^C. Pri tom se prethodni sadržaj fajla gubi.
cat >> – Dopisivanje teksta koji se unosi sa tastature na kraj fajla.
joe
joe – Popularan editor. Iako jednostavan, u njemu je moguće praviti makroe, bookmarkove, čak je dozvoljeno i kompajliranje.
Evo i nekih komandi za rad sa unutar JOE-a:
^KH – Help – Piše u gornjem desnom uglu ekrana. Tu pišu sve ostale
opcije. Izlaz iz helpa je ^KH.
^[. – Next screen – Sledeća strana helpa. Umesto ^[ može se koristiti i ESC.
^[, – Previous screen – Prethodna strana helpa.
^- – Undo.
^KX – Save and Exit.
^KS – Save As.
^C – Exit without save (abort).
^R – Refresh.
^KB – Begin block.
^KK – End block.
^KC – Copy block. Blok mora biti prethodno selektovan sa ^ KB i ^KK.
^KM – Move block.
^KY – Delete block.
^KF – Find string (
za new line, za , …).
^L – Find next.
^Y – Delete line.
Sada prelazimo na preusmeravanje ulaza i izlaza i pajpvanje
Preusmeravanje ulaza i izlaza može biti vrlo korisno. Ovde je dat opis kako sve to funkcioniše i iskreno se nadam da ćete naći primenu preusmeravanju
prog < infile – čita iz fajla šta treba u programu prog (umesto da unosimo sa tastature).
prog > outfile – Umesto na ekran, piše u fajl.
prog | anotherprog – Izlaz iz prog (ne ide na ekran) je ulaz za anotherprog.
prog outfile – čita iz fajla infile i rezultat programa prog upisuje u fajl outfile.
Pajpovanje ili povezivanje više komandi je korisno isto koliko i preusmeravnje, evo opisa
| more – Lista stranu po stranu.
more – Lista stranu po stranu.
| less – Slično kao more.
Ne morate samo da pajpujete sa less i more ovo su banalni primeri – eksperimentišite!!
Pošto sam naveo less i more da vidimo i njihove opcije
U komandi more, akcije su:
h – Help – Spisak akcija.
space – Pomeranje nadole za navedeni broj redova (otkuca se neki broj i pritisne space). Ako se ništa ne navede, po defaultu je to jedna strana.
b – Backward – Pomeranje za stranu ili za navedeni broj redova unazad.
q – Quit – Izlazak.
Akcije u komandi less:
b – Vraćanje na prethodnu stranu.
u – Vraćanje za pola strane unazad.
d – Spuštanje za pola strane.
v – Prelazak na slede}u stranu.
space – Prelazak na slede}u stranu.
/ – Osvetljava sve pojave stringa . Ako se ne navede, to znači find next.
q – Izlaz.
Pored less i more postoje komande tail i head koje imaju slično dejstvo
head – Ispisuje pocetak fajla (prvih 10 redova).
tail – Ispisuje kraj fajla (poslednjih 10 redova).
tail -f – Ispisuje kraj fajla, kao i redove koji se naknadno (recimo iz drugog procesa) dopisuju u fajl.
U SHELL-u takodje možete i ta radite sa arhivama komanda je tar a evo i upotrebe
tar – Arhiver – Uobičajene ekstenzije su .tgz (pakovanje sa kompresijom – kao zip) i .tar (pakovanje bez kompresije, tj. kopiranje više fajlova u jedan).
tar -zcvf .tgz – Ovako se pakuju fajlovi iz navedenog direktorijuma.
tar -ztvf – Lista sadržaj bez raspakivanja.
tar -zxvf – Raspakuje arhivu.
Pri tome, opcije za tar znače (za ostale opcije se preporučuje
tar –help):
-c – Create – Pravljenje tar fajla.
-t – List – Ispis sadržaja tar fajla.
-x – Extract – Raspakivanje.
-f – File – Znači da će se koristiti tar arhiva. Naziv arhive mora da ide odmah iza ove opcije (sa ili bez razmaka), a nakon toga mogu ići i
još neke opcije. Preporučuje se da se ova opcija navodi kao poslednja pre imena fajlova (kao što je i u gornjim primerima).
-z – Zip – Bolje se pakuje, jer se koristi zip metoda.
-v – Verbose – Ispisuje fajlove koji su obrađeni (zapakovani/raspakovani).
-w – Pita za svaki fajl (da li da se zapakuje/raspakuje).
Pored tara još mogu biti od koristi i
zip – Kompatibilan sa pkzipom i Winzipom. Ovako se pakuje.
zip -T – Testiranje ispravnosti zip arhive.
unzip – Raspakivanje zip arhive. Ponekad je potrebno koristiti opciju -d da bi se raspakovali i direktorijumi.
unzip -a – Kad se nešto zipuje u DOS-u, tada će tekst fajlove raspakovati kako treba (CR LF ce biti LF(kome je jasno, jasno a kome ne neka navede ovu opciju ako je zipovanje izvršeno u Win-u ili DOS-u)) (slično ascii prenosu podataka). Ne koristiti za raspakivanje binarnih fajlova.
unzip -l – Lista sadržaj zipa.
unzip -t – Testiramo ispravnost zipa.
unzip -x – Raspakovaćemo samo fajlove koji su u listi.
Za kraj malo i o pretragama po datotekama i direktorujumima
grep – Ispisuje sve linije u kojima se nalazi . Ako je navedeno više od jednog fajla ispisuje se iz kog je fajla linija.
cat /etc/passwd | grep – Podaci o nekoj osobi.
grep -v – Lista sve linije osim onih koje sadrže .
grep -F – Pojedini specijalni karakteri . ^ $ i još neki se tretiraju kao regularni izrazi, i odmah se razvijaju u listu. Da se to ne bi dogodilo koristimo opciju -F.
fgrep – Isto kao grep -f.
grep -x '' – Spisak svih linija koje sadrže jedino .
grep -n – Pored svake linije ispisuje i njen redni broj (indeksira ih).
grep -E '' – Spisak svih linija koje sadrže .
Regularan izraz može da sadrži:
^ – Početak linije.
$ – Kraj linije.
. – Bilo koji karakter.
[] – Tačno jedan karakter iz skupa u zagradama:
[1-2abc9-D].
[^] – Tačno jedan karakter koji nije među navedenim.
{n} – se pojavljuje n puta.
* – Pojavljuje se 0, 1, ili više puta.
+ – Pojavljuje se bar jednom.
? – Pojavljuje se 0 ili jednom.
grep -E '.' – Lista sve neprazne linije u fajlovima.
grep -Ev '.' – Lista sve prazne linije u fajlovima.
grep -E 'i$' – Ispisuje sve linije koje se završavaju slovom i.
grep -E '^A' l – Ispisuje sve linije koje počinju slovom A.
grep -E '^[WPM]' – Ispisuje sve linije koje po?inju sa W, P ili M.
grep -E '^[^C-E]' – Ispisuje sve linije koje ne počinju slovima C, D ili E.
grep -E '[1-2] [0-2]' – Ispisuje sve linije u kojima su brojevi 10, 11, 12, 20, 21 ili 22.
sort – Ispisuje fajlove sortirane po prvom polju (koloni) na ekran (stdout).
sort +1 – Sortira po drugom polju, tj. po polju posle prvog tabulatora, uključujući i beline (blankove). Po defaultu, separator je tabulator.
sort +1b – Sortira po drugom polju. Ignoriše beline na početku drugog polja.
sort +2 -n – Sortira po tre}oj koloni. n označava da se sortira po brojevima, pa će broj 2 da stoji pre 10.
sort +2n -Isto kao malopre, jedino je zapis kraći.
sort +2nr – Slično, samo u obrnutom redosledu.
w | sort – Sortira izlaz naredbe w.
w | sort +3 – Sortira po četvrtoj koloni (bukvalno: sortira po koloni posle trećeg tabulatora).
sort -f – Pri sortiranju se ne razlikuju mala i velika slova (ignore case).
find [] – Štampaju se direktorijumi, fajlovi i poddirektorijumi.
find [] -name – Ime fajla se stavlja pod navodnike ako su u imenu neki od rezervisanih karaktera (npr. *). Ako se ne navede akcija, podrazumeva se štampanje na ekran.
find ̃ -name "*" – Lista sve fajlove u home direktorijumu i njegovim poddirektorijumima.
find / -name – Lista sve pojave fajla u svim direktorijumima hard diska.
find . -name – Lista sve pojave fajla od tekućeg direktorijuma naniže.
find [] -name -print – štampanje (ovo je default akcija).
find [] -name -exec – Izvršava komandu koju navedemo nad fajlovima koje je
pronašao kao argumentima (ako imamo pristup tim fajlovima).
find [] -perm <ovlašćenje> – Traži fajlove po ovlašćenju.
find -perm 700 – Primer.
cut -d -f -Ispisuje polja koja mu navedemo u listi polja koja su odvojena zarezom, a separator polja je i mora se navesti pod navodnicima ukoliko sadrži neke rezervisane karaktere.
who am i | cut -d" " -f1 | cut -d! -f2 – Ispisuje samo username.
cat /etc/passwd | grep | cut -d: -f5 – Ispisuje ime i prezime osobe čiji je username .
grep /etc/passwd | cut -d: -f5 – Isto kao prethodni primer.
grep /etc/passwd | cut -d: -f6 | cut -d/ -f1 – Ispisuje se prazan string jer smo stavili da je drugi separator slash
(/).
U suštini ovo je neka osnova za rad u SHELL-u komandi ima mnogo, no ovo je neka osnova koja vam je dovoljna za početak, i ne samo za početak već
i za malo napredniji rad.
Sa srećom!!!