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!!!