Osnovne komande UNIX operativnog sistema

Komande predstavljaju skup instrukcija cije se izvrsenje zahteva od racunara. Programi koji se izvrsavaju odmah, bez kompajliranja, nazivaju se izvrsnim programima ili komandama. Veci broj programa sa srodnim funkcijama cine alate (tools). Tako se u UNIX-u srecu alati za editovanje teksta, razvojne alati i slicno.

Sve komande UNIX-a se, prema svojim funkcijama, mogu svrstati u neku od sledecih klasa:

Sintaksa komandi:

command option(s) argument(s) < Enter >

command ime komande odnosno programa cije se izvrsavanje zahteva,
option(s) opcije koje odredjuju nacin izvrsenja komandi
argument(s) podaci nad kojima se izvrsava komanda

U komandama se mogu koristiti univerzalni znaci *,[] , ?.

UNIX je CASE SENSITIVE operativni sistem, odnosno string otkucan VELIKIM i malim slovima nema isto znacenje.

Na slici 6. prikazano je kako se komande izvrsavaju.

Slika 6.

Komande vrse kontrolu i definisu akcije na UNIX-u. Svaku komandu jedinstveno odredjuje njeno ime i argumenti. Konvencija koja je, pri objasnjenju sintakse komandi, koriscena u narednom tekstu je sledeca:

text -tekst koji treba otkucati na isti nacin kao sto pise.
[option] -opcioni argumenti.
italic text -tekst koji treba zameniti odgovarajucom vrednoscu.
[ option1 | option2 ] - option1 ili option2.
Password:
-poruke koje se dobijaju od racunara. Svi primeri su takodje prikazani u ovom fontu.
< Ctrl > -taster koji treba pritisnuti.
% -promt kojim se sistem javlja kada je spreman da prihvati komandu obicnog korisnika.
# -promt kojim se sistem javlja kada je spreman da prihvati komandu super korisnika.

Neki znaci koji se sa tastature dobijaju kombinovanjem kontrolnih i standardnih tastera imaju specijalna znacenja. Najznacajniji su:

< Ctrl > S -izlaz na ekranu se privremeno zaustavlja.
< Ctrl > Q -izlaz na ekranu se nastavlja.
< Ctrl > D -najjednostavniji nacin odjavljivanja sa sistema.
< Ctrl > C -prekid procesa.
< Ctrl > Z -privremeno zaustavljanje procesa.


Login procedura

Login procedura je procedura kojom se korisnik prijavljuje sistemu. Svaki korisnik ima svoj racun na sistemu. Racun sadrzi dve informacije koje ga jedinstveno odredjuju:

Password treba da bude duzine najmanje 6 znakova (8 su vazeci) i moze da sadrzi VELIKA slova, mala slova, brojeve, znake interpunkcije, pa cak i kontrolne znake.

primer:

Login: user_name
Password: password
IRIX System V Release 5.3 IRIX
Copyright (c) 1988, 1989, 1990 Silicon Graphics, Inc
All Rights Reserved
%

Pri unosenju passworda se na ekranu nece nista prikazivati cime se sprecava mogucnost da neovlascena lica vide tudje passworde. Ukoliko je password nekorektno unet desava se sledece:

Login:tanja 
Password: nekorektan 
Login incorect
Login:

Proces odjavljivanja sa sistema je jednostavan i obavlja se komandom:

% logout
ili pritiskom na tastere < Ctrl > D.

Komande opste namene

PASSWD(1)

passwd

passwd je komanda kojom se menja ili postavlja prvi password novoprijavljenog korisnika.

primer:

% passwd
Old password: old_password
New password: new_password
Re-enter new password: new_password

CAL(1)

cal [[mesec] godina]

Ispisuje kalendar zahtevane godine, i/ili meseca. Ako komanda nema argumenata ispisuje se kalendar tekuceg meseca.

mesec - vrednosti su od 1 - 12
godina - moze imati vrednosti od 1 do 9999

primer:

% cal 2 1962 
	February
S  M  Tu W  Tn F  S
	.
	.

CLEAR(1)

clear

Brise sadrzaj koji se trenutno nalazi na displeju monitora i postavlja prompt i kursor u prvu liniju.

DATE(1)

date [mmddhhmm[yy]]

Ukoliko argumenti nisu dati, na ekranu se ispisuje tekuci datum i vreme. U suprotnom, definise se novi datum i novo vreme sistemskog sata. Ovo zadnje moze da uradi samo super korisnik.

mm - mesec
dd - dan
hh - sat (24 sata)
mm - minuti
yy - poslednje dve cifre godine

primeri:

 
% date 
Thu Mar 30 21:12:05 MET DST 1996 
% date 10080045 

U zadnjem primeru je postavljen datum: 8 oktobar tekuce godine, 12:45 a.m.

MAN(1)

man [-k] [section] title

Komanda man predstavlja najbrzi nacin da se dodje do odredjenih objasnjenja vezana za UNIX operativni sistem. Skoro cela UNIX dokumentacija je smestena na disk. Ovom komandom se uputsvo za specificirani naslov izdvaja iz man baze i stampa na displej monitora. Argument title moze biti ime komande, ime specijalnog fajla, ili sistemskog poziva. UNIX dokumentacija je podeljena u vise sekcija, kako je prikazano u sledecoj tabeli. Moze se desiti da jedan entitet postoji u vise sekcija. Na primer, postoji komanda write ali i sistemski poziv pod istim imenom. U ovakvim slucajevimo, do zeljenog objasnjenja se dolazi eksplicitnim zadavanjem rednog broja sekcije u pozivu man komande. man sa opcijom -k vrsi pretrazivanje kompletne baze (ili sekcije, ako je zadata) po kljucnoj reci title.

Sekcija opis
1 Commands
6 Demos and Games
2 System Calls
3 Subroutines
4 File Formats
5 Miscellaneous
7 Special Files
1M Maintenance

primeri:

% man ls
Reformatting entry. Wait ...
% man 2 write
Reformatting entry. Wait ...
% man -k slip

FIND(1)

find starting_dir [matching_criteria_&_actions]

Komanda find se rekurzivno krece kroz hijerarhiju fajl sistema pocev od direktorijuma starting_dir trazeci fajlove koji zadovoljavaju logicki izraz matching_criteria i nad takvim fajlovima izvrsava akcije actions. U opisu kreiranja matching_criteria, argument n predstavlja decimalnu vrednost gde +n znaci vise od n, -n manje od n dok n znaci tacno n. Logicki izraz se formira od sledecih primitiva:

-atime n istinito ako je fajlu pristupano u n dana
-mtime n istinito ako je fajl modifikovan u n dana
-size n[c] istinito ako velicina fajla iznosi n blokova gde je blok, kod vecine verzija UNIX-a velicine 512 bajtova. Ako iza n sledi c, velicina fajla je u broju znakova.
-type c istinito ako je fajl tipa c (f-obican fajl, d-direktorijum, ...)
-name name istinito ako je ime fajla name (dozvoljeno koriscenje * i ?)
-user usr istinito ako je vlasnik fajla usr
-group grp istinito ako je grupa fajla grp
-perm p istinito ako je pristupna dozvola fajlu p. Pristupna dozvola se zadaje oktalno (videti chmod).
-print uvek istinito. Ispisivanje puta trazenog fajla
-exec cmd istinito ako cmd vrati nulu. Ako iza cmd sledi '{}', onda se komanda izvrsava nad fajlom koji zadovoljava matching_criteria.
-ok cmd slicno kao -exec samo pre izvrsavanja komande cmd nad pronadjenim fajlom, od korisnika se trazi da verifikuje akciju sa y.
-prune iskljucivanje fajla iz akcije.

Vise komandi se odvajaju separatorom ;.

primeri:
% find / -name proba -print
/users/tanja/tmp/proba

Trazi se od root direktorijuma fajl sa imenom proba i pronadjen je na direktorijumu /users/tanja/tmp.

% find /usr/people -size +1000 \(-mtime +30 \
-o -atime +120 \) -exec ls -l '{}' ';'

Od direktorijuma /usr/people traze se fajlovi cija je velicina veca od 1000 blokova, nisu menjani vise od 30 dana ili kojima nije pristupano vise od 120 dana. Pronadjeni fajlovi se listaju.

% find /usr/people/tanja \(-name a.out -o -name core \
-o -name ".BAK.*"\) -atime +14 -exec rm -f '{}' ';'

Ispod direktorijuma /usr/people/tanja, pronadji sve fajlove a.out, core i one cije ime pocinje sa .BAK., kojima nije pristupano vise od 14 dana i izbrisi ih.

GREP(1)

grep [opcije] [expression] [files ...]

Komanda grep pretrazuje navedene fajlove (ili standardni ulaz). Svaka linija koja zadovoljava expression stampa se na standardni izlaz. U slucaju da se istovremeno pretrazuje vise fajlova, ispred svake linije stampa se i ime fajla iz koje potice. Dozvoljene su sledece opcije:

-v Prikazuju se sve linije koje ne zadovoljavaju expression
-c prikazuje se samo broj linija sa poklapanjima
-l prikazuju se samo imena fajlova u kojima je ustanovljeno poklapanje
-h ne prikazuju se imena fajlova
-n pored imena fajla stampaju se i brojevi linija
-s ne prikazuju se poruke o greskama
-i velika i mala slova se tretiraju isto

primeri:

% grep automation srle.txt
and automation placement

Prikazi sve linije iz fajla srle.txt koje sadrze rec automation.

% grep automation srle.txt tanja.txt
srle.txt: and automation placement
% grep '???' poruka
He really wondered why? Why???
% grep -li serial *.h

Rad sa direktorijumima

CD(1)

cd [direktorijum]

Promena tekuceg (radnog) direktorijuma. Komanda kojom se omogucava kretanje po stablu fajl sistema.

primeri:

% cd dir4
-tekuci direktorijum je dir4
% cd .. 	
-vracanje na prethodni, parent direktorijum
% cd
-vracanje na HOME direktorijum
% cd ../dir2/dir3
-relativno kretanje po stablu
% cd /
-root direktorijum postaje tekuci
% cd /users/tanja/dir2/dir3
-primer sa apsolutnim putem
% cd -
-vracanje na direktorijum koji je bio tekuci pre zadnje cd komande

LS(1), LL(1)

ls [-alpFC] [name]

Lista sadrzaj direktorijuma name. Ukoliko direktorijum nije zadat, lista se tekuci direktorijum.

-a -lista se celokupan sadrzaj direktorijuma ukljucujuci i skrivene fajlove (cija imena pocinju sa .)
-l -lista se sadrzaj direktorijuma u dugackom formatu
-p -direktorijumi u listi su oznaceni kosom crtom (/)
-F -u listi, direktorijumi su oznaceni sa (/), a izvrsni fajlovi sa (*),
-C -lista sadrzaja se stampa u vise kolona.

Obicno je ll alias za ls -al.

primeri:
% ls
proba.c   novi.c   Makefile
% ls -aF
.login   .profile  proba.c   novi.c   a.out*    tmp/
% ls -l
-r--r--r-- 1 root  sys  1145  Oct 23  18:41   READ.ME
-rw-rw-rw- 1 tanja user 85    Nov 7   14:47   boja.c
-rwxrwxrwx 1 tanja user 1046  Nov 15  13:01   create

Pored imena, dugacki listing za svaki fajl ili direktorijum daje i sledece informacije: tip fajla, pristupne dozvole, broj hard linkova, vlasnika fajla, grupu kojoj fajl pripada, velicinu u bajtovima, datum i vreme kreiranja, i na kraju, ime fajla.

MKDIR(1)

mkdir dirname

Kreira direktorijum sa imenom dirname gde ime moze da bude zadato kao apsolutni ili relativni put.

primer:
% mkdir /usr/people/tanja/newdir

RMDIR(1)

rmdir dirname

Brise prazan direktorijum sa imenom dirname.

primer:
% cd /usr/people/tanja
% rmdir newdir

PWD(1)

pwd

Komanda pwd ispisuje apsolutni put radnog, to jest tekuceg direktorijuma.

primer:
% pwd 
/home/srle

Rad sa fajlovima

CAT(1)

cat file1 file2 ...

cat cita sadrzaj fajlova file1, file2, ... i ispisuje ih na standardni izlaz.

primeri:
% cat proba
Ovo je probni fajl za demonstraciju komande CAT
I linija
II
III
Kraj
% cat file1 file2 > file3

Stampa se sadrzaj fajlova file1 i file2, umesto na standardni izlaz (zbog redirekcije) u treci fajl file3.

CHMOD(1)

chmod mode name

Komanda chmod vrsi promenu pristupnih dozvola jednom ili vecem broju fajlova koji su zadati sa name. Nova pristupna dozvola je definisana sa mode.

UNIX operativni sistem omogucava selektivno definisanje korisnika koji imaju pristup odredjenom fajlu ili direktorijumu. Za svaki fajl ili direktorijum postoje tri klase korisnika:

Takodje, svaki fajl ili direktorijum ima tri nacina pristupa:

U odnosu na prethodno opisane klase i pristupe za svaki fajl ili direktorijum definisan je mod:

rwx rwx rwx
vlasnik grupa ostali

Ukoliko stoji "-" pristup je zabranjen. Postoje i druge dozvole pristupa:

Komandom chmod moguce je menjati pristup fajlu. Argument mode definise se na sledeci nacin:

I oktalno

II simbolicki

primeri:
% chmod 444 dat1
% ls -l dat1
-r--r--r-- 1 tanja user 1046  Nov 15  13:01   dat1
% chmod 644 dat1
% ls -l dat1
-rw-r--r-- 1 tanja user 1046  Nov 15  13:01   dat1
% chmod a=r,u+w dat1
% ls -l dat1
-rw-r--r-- 1 tanja user 1046  Nov 15  13:01   dat1
% chmod a-rwx *
% ll
---------- 1 tanja user 1046  Nov 15  13:01   dat1
% chmod u+rw,g+r,o+r *
% chmod u+rw,go+r *
% ll
-rw-r--r-- 1 tanja user 1046  Nov 15  13:01   dat1

UMASK(1)

umask access_mod

Definisanje default pristupnih dozvola. To znaci, nakon izvrsavanja ove komande, svi novokreirani fajlovi ce imati definisani mod. Pristupna dozvola se generise kao oktalni komplement zeljenog pristupa.

primer:

Ako se zeli da novi fajlovi imaju pristupne dozvole 750 (rwxr-x---) argument komande umask se generise kao 777-750=027.

% umask 027
% echo "ghjgjghj" > proba
% ll proba
-rw-r-----   1 srle     users           9 Mar 31 11:15 proba

Bez obzira sto je x pristupna dozvola za vlasnika i grupu dozvoljena definisanom maskom, fajl proba je nema jer nije izvrsni.

CHOWN(1)

chown owner file ...

Promena vlasnika fajlova file, ... u owner

primer:
# ls -l *.c
-rw-rw-rw- dejan user 751  Nov 18  12:16   prvi.c
-rw-rw-rw- dejan user 102  Nov 20  20:48   drugi.c
# chown tanja *.c
# ls -l *.c
-rw-rw-rw- tanja user 751  Nov 18  12:16   prvi.c
-rw-rw-rw- tanja user 102  Nov 20  20:48   drugi.c

CHGRP(1)

chgrp group file

Komanda kojom se menja grupa specificiranom fajlu.
group - ime nove grupe,
file - ime fajla kome se menja grupa.

primer:

% ls -l *.c
-rw-rw-rw- tanja user 751  Nov 18  12:16   prvi.c
-rw-rw-rw- tanja user 102  Nov 20  20:48   drugi.c
% chgrp cad *.c
% ls -l *.c
% ls -l *.c
-rw-rw-rw- tanja cad  751  Nov 18  12:16   prvi.c
-rw-rw-rw- tanja cad  102  Nov 20  20:48   drugi.c

CMP(1)

cmp -ls file1 file2

Komanda za poredjenje sadrzaja dva fajla. Ukoliko su fajlovi identicni, nema komentara, ali ukoliko ima razlika ispisuje se broj bajtova i broj linija u kojima se nalaze razlike.

-l ispisuje razlike izmedju dva fajla,

-s vraca samo kod (0-iste, 1-razlicite, 2-ne moze da pristupi argumentu).

primer:
% cmp proba.c proba1.c

DIFF(1)

diff dir1 dir2
diff file1 file2

Slicno kao cmp, uporedjuje sadrzaj dva fajla. Za razliku od cmp, diff je u stanju da uporedjuje i direktorijume. Osim ovoga, daje siri i precizniji izvestaj o eventualnim razlikama.

CP(1)

cp file new_file
cp file1 [file2 ...] dest_directory
cp dir1 [dir2 ...] dest_directory

Komandom cp mogu se obaviti sledece akcije:

prinmeri:

% ls
proba.c
% cp proba.c novi.c
% ls
proba.c   novi.c
% ls -p
proba.c   tmp/
% cp proba.c tmp
% ls -p
proba.c   tmp/
% cd tmp
% ls
novi.c

MORE(1)

more file

Lista se sadrzaj fajla strana po strana gde je velicina stranice jednaka broju linija koje monitor moze da prikaze. Ukoliko program nije stigao do kraja fajla, na dnu ekrana ce biti ispisano --More--. Pritiskom na taster < Enter > ispisuje se jos jedna linija, a pritiskom na taster < Space >, jos jedan ekran. Ova komanda takodje moze da posluzi u slucajevima kada prikazaivanje rezultata neke druge komande zahteva vise prostora nego sto to monitor moze da pruzi. Stranicenje rezultata ovakve komande vrsi se njenim pajpovanjem sa komandom more.

primeri:
% more program.c
% ls -l | more

MV(1)

mv file1 file2
mv file1 dest_directory

Promena imena fajla ili premestanje fajla na drugi direktorijum.

primeri:
% ls
proba.c  tmp
% mv proba.c novi.c
% ls
novi.c  tmp
% ls -p
novi.c  tmp/
% mv novi.c tmp
% ls -p
tmp/
% cd tmp
% ls
novi.c

RM(1)

rm [-irf] name

Komanda za brisanje fajla name.

-i - brisanje fajla uz verifikaciju,
-r - rekurzivno brisanje,
-f - brise bez provere dozvola.

primeri:
 
% rm /users/tanja/tmp/novi.c 
% rm -r tanja 

Upozorenje!!! Sa zadnjom varijantom komande treba biti oprezan jer brise sve fajlove na direktorijumu, poddirektorijumima ispod njega i sam direktorijum.

LN(1)

ln [-s] name new_name

Komanda ln kreira fajl new_name koji je link ka vec postojecem fajlu name. Parametar name moze biti i direktorijum ili specijalni fajl. Ako je parametar -s zadat, kreira se simbolicki, a ako nije, nastaje hard link. Kako je vec objasnjeno, ovo je mehanizam koji omogucava da se jednom fizickom fajlu dodele fise imena. To znaci da imena name i new_name nakon izvrsavanje ove komande postaju ekvivalentna.

COMPRESS(1)

compress file_name
uncompress file_name

compress kompresuje fajl file_name i daje mu novo ime sa ekstenzijom .Z. uncompress je suprotno od compress.

U novije vreme se pojavljuju i drugi programi za ove namene. Na primer, DOS-like zip i unzip, ili gzip i gunzip ali njihovo postojanje na konkretnom sistemu zavisi od administratora.

SPLIT(1)

split [-l lines] [-b bytes[bkm]] in_file [prefix]

Komanda split deli jedan veliki fajl in_file na vise malih. Velicina manjih fajlova se definise u broju linija -l opcijom ili u bajtovima -b opcijom. Imena novih fajlova pocinju sa prefix a split dodaje sufikse aa, ab, ac, i tako dalje. Ako se prefix ne zada podrazumeva se 'x' tako da nastali fajlovi imaju imena xaa, xab,...

primeri:

% ll
-rw-r--r--   1 srle     users       51889 Mar 26 23:23 arhiva.zip
% split -b 10k arhiva.zip
% ll
-rw-r--r--   1 srle     users       51889 Mar 26 23:23 arhiva.zip
-rw-r--r--   1 srle     users       10240 Mar 26 23:25 xaa
-rw-r--r--   1 srle     users       10240 Mar 26 23:25 xab
-rw-r--r--   1 srle     users       10240 Mar 26 23:25 xac
-rw-r--r--   1 srle     users       10240 Mar 26 23:25 xad
-rw-r--r--   1 srle     users       10240 Mar 26 23:25 xae
-rw-r--r--   1 srle     users         689 Mar 26 23:25 xaf
% rm xa*
% split -b 15k arhiva.zip sp
% ll
-rw-r--r--   1 srle     users       51889 Mar 26 23:23 arhiva.zip
-rw-r--r--   1 srle     users       15360 Mar 26 23:27 spaa
-rw-r--r--   1 srle     users       15360 Mar 26 23:27 spab
-rw-r--r--   1 srle     users       15360 Mar 26 23:27 spac
-rw-r--r--   1 srle     users        5809 Mar 26 23:27 spad
% cat sp* > novo.zip
% rm sp*
% ll
-rw-r--r--   1 srle     users       51889 Mar 26 23:23 arhiva.zip
-rw-r--r--   1 srle     users       51889 Mar 26 23:32 novo.zip

UUENCODE(1) i UUDECODE(1)

uuencode file name
uudecode file

Uuencode i uudecode se koriste za prenos binarnih fajlova kroz medijume koji podrzavaju samo tekstualne podatke. Takav medijum je, na primer, elektronska posta. Komanda uuencode cita podatke is fajla file i koduje ih samo vidljivim ascii znacima. Kodovani podaci se stampaju na standardni izlaz tako da, ako se zeli formiranje fajla, treba koristiti redirekciju. uudecode cita podatke iz file koji je kreiran programom uuencode, dekoduje ih a rezultat ove operacije smesta u fajl pod imenom name koji je zadat jos pri kodovanju.

primeri:

% ll
-rw-r--r--   1 srle     users       51889 Mar 26 23:44 arhiva.zip
% uuencode arhiva.zip novo.zip > arhiva.uu
% ll
-rw-r--r--   1 srle     users       71521 Mar 26 23:52 arhiva.uu
-rw-r--r--   1 srle     users       51889 Mar 26 23:44 arhiva.zip
% uudecode arhiva.uu
% ll
-rw-r--r--   1 srle     users       71521 Mar 26 23:52 arhiva.uu
-rw-r--r--   1 srle     users       51889 Mar 26 23:44 arhiva.zip
-rw-r--r--   1 srle     users       51889 Mar 26 23:53 novo.zip

Radna okolina i odgovarajuce komande

UNAME(1)

uname

Ispisuje verziju instaliranog UNIX operativnog sistema.

primer:
% uname -a
IRIX     IRIX     5.3      06011629     IP6

WHOAMI(1)

whoami

Ispisuje ime tekuceg korisnika.

primer:
% whoami
srle

WHO(1)

who

Daje spisak korisnika koji trenutno rade na sistemu. Izlaz ima oblik:

name line time

gde je:
name - korisnicko login ime,
line - ime komunikacione linije,
time - vreme kada je korisnik prijavljen sistemu.

primer:
% who
srle		console		Nov   24  13:45
tanja		ttyp1		Nov   24  14:21
dejan		ttyp2		Nov   24  15:05

Slicnu funkciju uma i komanda w s tom razlikom sto daje detaljnije informacije o logovanim korisnicima i njihovim trenutnim aktivnostima.

primer:

% w
 11:31am  up  1:11,  2 users,  load average: 0.00, 0.00, 0.00
User     tty      from             login@  idle   JCPU   PCPU  what
srle     tty2                     10:29am            1         w
srle     tty1                     10:24am           30     29  joe komande.html

DU(1)

du [-sabr] names

Daje zauzece diska u broju blokova (1 blok obicno iznosi 512 byte).

-s daje samo totalnu duzinu fajla ili direktorijuma definisanih sa names
-a ispisuje duzinu svih fajlova na direktorijumu,
-b velicina se ispisuje u bajtovima,
-k velicina se ispisuje u KB,
names - ime fajla ili direktorijuma. Ako je izostavljen podrazumeva se tekuci direktorijum.

primeri:
% du
8	./WorkSpace
1	./dumpster
22

Ovako pozvana komanda daje informacije o tekucem direktorijumu i direktorijumima ispod.

% du file
4 filename

Daje duzinu fajla file.

ENV(1)

env

U toku registrovanja novog korisnika na njegov HOME direktorijum kopiraju se odredjeni start-up fajlovi koji definisu njegovu radnu okolinu. Komandom env mogu se videti parametri radne okoline a medju njima najznacajniji su sledeci:

HOME HOME direktorijum tekuceg korisnika,
PATH spisak direktorijuma gde se nalaze komande,
SHELL shell koji se koristi,
TERM tip terminala,
MAIL fajl gde se smesta prispela posta,
LOGNAME login ime,
PWD tekuci direktorijum,
USER ime tekuceg korisnika,
HOST ime racunara,
DISPLAY display za X11 Windows System, islicno.

primer:

% env
HOME=/home/srle
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:.:/usr/TeX/bin:/home/srle/bin:
SHELL=/bin/tcsh
TERM=vt100
MAIL=/var/spool/mail/srle
LOGNAME=srle
PWD=/home/srle/kurs
USER=srle
HOST=light

Naknadno, promenljive radne okoline se mogu promeniti komandom setenv ili izbrisati komandom unsetenv.

primer:

% setenv TERM vt100
% unsetenv DISPLAY

Arhiviranje (tar)

TAR(1)

tar [arguments] [name]

Komanda za zapis, citanje i listanje sadrzaja arhive. Argumenti:

-c - zapis od pocetka arhive.
-r - zapis na kraju arhive (dodavanje fajlova starom sadrzaju, za System V pogledati komandu mt).
-t - listanje sadrzaja arhive.
-x - citanje sadrzaja arhive i zapis na disk.
-f - definisanje arhive (naredni argument je specijalni fajl trake ili ime obicnog fajla arhive).
-v - za vreme snimanja ili citanja arhive ispisuju se imena fajlova koji se trenutno obradjuju (verbose mod).
name - ime fajla ili direktorijuma koji se arhivira ili restaurira (ukljucuju se i podirektorijumi).

primeri:
% tar -tvf /dev/tape

Lista sadrzaj arhive koja je smestena na traci.

% tar -cvf /dev/tape *.c

Snimanje od pocetka trake svih fajlova sa ekstenzijom c.

% tar -rvf /dev/tape proba

Snimanje fajla proba na kraju arhive.

% tar -cvf /dev/tape srledir

Snimanje na traku direktorijuma srledir, ukljucujuci celo podstablo.

% tar -xvf /dev/tape proba

Rekonstrukcija sadrzaja fajla proba tj. kopiranje fajla proba sa trake na disk.


Komande za stampanje

Kako je UNIX multi-user operativni sistem stampaci se povezuju preko spooler-a (Simultaneous Pheripheral Outpu On-Line). Ovakav mehanizam omogucava koriscenje izlaznih uredjaja od strane vise korisnika bez konflikta.

LP(1)

lp [-d printer_name] file ...

Komanda kojom se zahteva izlaz na stampac. Opcija -d (destination) odredjuje zahtev za drugim stampacem. Ukoliko se ona ne navede smatra se da se zahteva default stampac.

CANCEL(1)

cancel [ids] [printers]

Komanda kojom se zahteva prekid stampanja tj. zahtev se izbacuje iz reda cekanja. Postoji veliki broj opcija: moze se zahtevati prekid odredjenog zahteva, prekid svih zahteva nekog korisnika, prekid svih zahteva za odredjenim stampacem itd.

LPSTAT(1)

lpstat -t

Komanda kojom se dobijaju sve informacije vezane za status spooler-a i red cekanja zahteva.

Na BSD sistemima pogledati komande lpr, lpq i lprm.


Kontrola procesa

SHUTDOWN(1M)

Za BSD UNIX:

/etc/shutdown [-h | -r] [sec]

Prekida sve procese, zaustavlja ili restartuje sistem. Moze je izvrsiti samo sistem administrator (prijavljen na sistemu kao root).

primeri:
# /etc/shutdown - h 0
. . . 
System halted ...

Zaustavljanje sistema.

# /etc/shutdown -r 0
Login:

Restartovanje sistema.

Za System V:

/etc/shutdown [-y] [-ggrance_period] [-iinit_state] primeri:
# shutdown -g0 -y

Zaustavljanje sistema.

# shutdown -g0 -i6 -y

Restartovanje sistema.

SU(1)

su [-] [name]

Omogucava privremeni login na root ili neki drugi korisnicki racun bez odjavljivanja sa svog racuna. Naravno, da bi ovo bilo moguce, neophodno je poznavanje passworda drugog racuna. Pri promeni korisnika, radna okolina se ne menja sve dok se su ne izvrsi sa -. Odjavljivanje sa novog racuna se obavlja standardnom (sa < Ctrl >D ili logout komandom).

primeri:
% su
password: xxxxxx

Privremeno prijavljivanje kao super korisnik.

% su - zeljko
password: xxxxxx

Privremeno prijavljivanje kao korisnik zeljko.

KILL(1)

kill [-signo | -signame] PID ...

Komanda koja ubija aktivirane procese.

signo - broj signala koji se salje procesu
signame - ime signala koji se salje procesu (videti signal(5))
PID - identifikator procesa

primeri:
% kill 6135
% kill -INT 6135

Signalizira se procesu broj 6135 da prekine izvrsavanje dajuci mu sansu da se regularno zavrsi (da izbrise privremene fajlove i slicno)

% kill -9 6135
% kill -KILL 6135

Odmah prekidaju proces broj 6135.

PS(1)
ps [opcije]

Stampa na ekranu informacije o trenutno aktivnim procesima.

Opcije:
-e - stampa informacije o svim procesima;
-f - generise potpuni listing;

primer:
% ps -ef
PID		TTY		TIME		COMMAND
0		?		0:00		sched
1		?		0:02		init
2		?		0:00		vhand
3		?		0:00		bdflush
561		console		0:01		grcond
594		console		0:00		Xsgi
180		ttyd2		0:00		getty

Daje detaljnu listu trenutno aktivnih procesa. Pojedine kolone imaju sledeca znacenja:

UID - user ID;
PID - ID procesa;
TTY - ime komunikacione linije (? ukoliko nije terminal);
TIME - vreme startovanja procesa;
COMMAND - ime komande koja se izvrsava.
% ps

Daje listu procesa koji su startovani sa tekuceg terminala.

% ps -u user_name

Daje listu aktivnih procesa korisnika user_name.

Na BSD sistemima, opcije ps komande se razlikuju ali je najcesce u upotrebi ps -ax koja daje detaljnu listu aktivnih procesa i ekvivalentna je komandi ps -ef na System V UNIX-u.


Komunikacija sa drugim korisnicima sistema

Sa ostalim korisnicima UNIX sistema moze se komunicirati na vise nacina. Najcesce korisceni su preko usluga koje nude mail, write i talk programi.

Pomocu mail programa korisnik moze poslati poruku drugom korisniku u njegovo postansko sanduce (mailbox), bez obzira da li je korisnik trenutno prijavljen sistemu ili ne.

Program write omogucava interaktivnu razmenu poruka dva korisnika koji istovremeno rade na sistemu.

Program talk nudi slicne mogucnosti kao i write s tom razlikom sto talk efikasnije kontrolise displej monitora pa je i interaktivna komunikacija dva korisnika UNIX sistema preglednija.

MAIL(1)

Omogucava razmenu poste sa drugim korisnicima. Sistem je slican uobicajenoj posti. Poruke u obliku pisama salju se korisnicima. Nakon prijavljivanja sistemu svaki korisnik biva obavesten da li za njega ima prispelih poruka.

Za svakog korisnika je na direktorijumu /usr/spool/mail kreiran po jeda fajl za pristigle poruke. Poruke koje su procitane cuvaju se u korisnickom mailbox-u na HOME direktorijumu.

Slanje pisama obavlja se komandom:

% mail user
...
Uneti sadrzaj poruke
...
< Ctrl> D

Unapred pripremljeno pismo se salje korisniku komandom:

% mail user < pismo

ili vecem broju korisnika:

% mail user1 user2 ... usern < pismo

Slanje poste korisnicima kroz mrezu obavlja se upotrebom e-mail adrese koja ima sledeci oblik:

ime_korisnika@ime_drugog_sistema
primer:
% mail srle@ban.junis.ni.ac.rs

Nakon prijavljivanja sistemu korisnik dobija poruku:

You have mail

a pristiglu postu cita takodje mail komandom:

% mail

U ovom slucaju, mail ulazi u interaktivni rad kada su na raspolaganju sledece komande:

? < Enter > citanje sledeceg pisma
? d < Enter > brisanje tekuceg pisma
? d n m < Enter > brisanje poruka od n do m
? s n file < Enter > zapisivanje poruke u fajl file
? q < Enter > napustanje programa i povratak u shell.

primer:

% mail phyllis
My meeting with Smith's group tomorrow hes been moved
up to 3:00 so I won't be able to see you then.
Could we meet in the morning instead.
< Ctrl > D
% 
WRITE(1)

Omogucava direktno slanje poruka na terminal drugog korisnika koji trenutno radi na sistemu. Komandom:

write user

se zahteva uspostavljanje veze izmedju terminala koji se koristi i terminala na kome radi korisnik user. Za pocetak sesije oba korisnika moraju da pozovu write program. Dozvola ili zabrana primanja poruka od starne drugih korisnika vrsi se komandama: mesg yes odnosno mesg no

Prekid sesije obavlja se sa < Ctrl > D.

primer:

TALK(1)

Startovanje talk sesije obavlja jedan od korisnika sledecom komandom:

talk user_name2[@host_name2]

gde je user_name2 ime korisnika sa kojim se zeli razgovor, a host_name2 je ime racunara na kome taj korisnik trenutno radi. host_name2 je opcioni parametar i neophodan je samo u slucaju kada se zeli talk sesija izmedju dva korisnika koji ne rade na istom racunaru.

Nakon iniciranja sesije, drugi korisnik biva obavesten da korisnik user_name1 zeli da komuniciraju i sugerise mu se da, ukoliko zeli razgovor, odgovori slicnim pozivom talk programa:

Answer with: talk user_name1@host_name1

Kada drugi korisnik odgovori, oba bivaju obavestena da je veza uspostavljena. Ekran se deli na dva dela, za svakog korisnika po jedan, i komunikacija moze poceti. Komuniciranje se zavrsava kada bilo koji korisnik prekine sesiju sa < Ctrl > C.


Editor teksta VI

UNIX operativni sistem standardno prate nekoliko editora teksta. To su pre svega, editori linijskog tipa ed i ex, i ekranski editor vi. Editor vi poseduje sve mogucnosti koje imaju ed i ex i u sustini predstavlja ekranski orijentisan korisnicki interfejs ka njima. Po potrebi, vi ih poziva u pozadini a rezultate koje oni daju, prikazuje na displeju monitora. No bez obzira na to, korisnika ne treba da interesuje veza editora vi sa drugim editorima ili usluznim programima i moze ga posmatrati kao nezavisna celina.

Na samom pocetku treba napomenuti da vi ume da stvori averziju korisnika prema njemu. Relativno je komplikovan za upotrebu jer ima tri moda rada u kojima se funkcije znakova generisanih sa tastature drasticno razlikuju. Obicno ne koristi kontrolne tastere tipa PageUp, PageDown kao ni funkcijske tastere tako da se komande zadaju sa standardnih tastera i njihovom kombinacijom sa Ctrl. Ne poseduje menije na koje smo navikli kod, uslovno receno user friendly editora (DOS-ov edit, na primer). Medjutim, treba imati u vidu da je osnova editora vi definisana pocetkom sedamdesetih, istovremeno sa pocetkom razvoja UNIX-a. Jos onda je postavljen cilj da vi funkcionise na raznim tipovima terminala od kojih vecina nije imala ni preveliki ni premocan skup kontrolnih sekvenci, kao ni standardizovan izgled tastature. Naravno, u ovome se uspelo ali je cena placena upravo cinjenicama koje su pobrojane kao mane ovog editora.

Kao i obicno, sve je stvar navike. Nakon boljeg upoznavanja sa vi editorom, svakom korisniku ce biti jasno da komande za globalnu zamenu i pretrazivanje i rad sa baferima koje on nudi, predstavljaju glavni nedostatak pomenutih user friendly editora.

U daljem tekstu sledi kratak opis odredjenog skupa komandi vi editora pri cemu je izbor prilagodjen potrebama osrednjih korisnika. Ako, nakon citanja ovog teksta, neko i dalje smatra da vi nije editor po njegovoj meri, preporucuju mu se sledeci editori: emacs, joe i jed s tim sto treba imati u vidu da oni nisu standardni deo UNIX distribucije.


Modovi rada editora

Ekranski editor VI se moze naci u jednom od tri moda rada:

Nakon startovanja, editor ulazi u komandni mod. Prelazak u insert ili mod zadnje linije je jedino moguc iz komandnog moda. Prelazak iz komandnog u insert mod se ostvaruje vecim brojem komandi za dodavanje teksta ali se napustanje insert moda i povratak u komandni obavlja uvek pritiskom na < Esc > taster. U mod zadnje linije je moguce preci jedino komandom ':'. Iz ovog moda se izlazi unosenjem zeljene komande i njenim izvrsavanjem aktiviranjem tastera < Enter > ili < Esc > tasterom kada se mod zadnje linije napusta odmah.


Poziv editora:

vi file - postavlja kursor u prvu liniju fajla file.
vi + file - postavlja kurzor u zadnju liniju fajla file.
vi file1 file2 ... filen - sukcesivno editovanje vise fajlova. Po zavrsetku editovanja jednog, sledeci se poziva sa :next ili skraceno :n.

Izlaz iz editora:

:wq - zapisi i izadji
:q! - izadji bez zapisivanja bez obzira na ucinjene izmene.
:w! - prepisi fajl iako je 'Read only'
:x - Isto kao :wq

Poziv drugih fajlova:

:e file - u editor poziva drugi fajl na editovanje. Novi fajl brise iz bafera prethodni tekst.
:r file - ucitava fajl file i umece ga u tekst ispod tekuce linije.

Pomeranje kurzora:

^ - pomeranje kurzora na prvi neblanko znak tekuce linije
$ - pomeranje kurzora na kraj tekuce linije
< Enter > - pomeranje kurzora na pocetak naredne linije
h - pomera kurzor u levo za jednu poziciju
j - pomera kurzor na dole za jednu poziciju
k - pomera kurzor na gore za jednu poziciju
l - pomera kurzor u desno za jednu poziciju

NAPOMENA: Obicno rade i strelice.


Kretanje kroz prozor:

< Ctrl > f - PgUp u Komandnom modu
< Ctrl > b - PgDn u Komandnom modu
< Ctrl > u - PgUp u Insert modu
< Ctrl > d - PgDn u Insert modu

Brojevi linija i pretrazivanje:

:n - postavlja kurzor na pocetak n-te linije
/string - pretrazivanje fajla po nizu znakova string unapred
?string - pretrazivanje fajla po nizu znakova string unazad
/ - ponavlja prethodno pretrazivanje unapred
? - ponavlja prethodno pretrazivanje unazad
< Ctrl > g - daje informaciju o tekucoj liniji i fajlu koji se edituje

UNDO i REPEAT

u - vraca fajl na stanje pre izvrsavanja zadnje komande
. - ponavlja zadnju komandu

Brisanje teksta:

x - brise znak ispred kurzora
X - brise znak iza kurzora
:i,jd - brise tekst od i-te do j-te linije
dd - brise tekucu liniju
dw - brise tekucu rec

Izmene teksta:

s - zamenjuje znak ispod kurzora novootkucanim tekstom. Zavrsava se sa < Esc >.
r - zamenjuje samo znak ispod kurzora
cw - zamenjuje tekst od kurzora do kraja reci novim tekstom
:i,js/tekst1/tekst2/option - od i-te do j-te linije, zameni tekst1 sa tekst2.
:i,jg/tekst/s/tekst1/tekst2/option - od i-te do j-te linije, u linijama koje sadrze tekst, zameni tekst1 sa tekst2.

Komande za globalnu zamenu mogu da imaju i dodatni parametar option. Bez argumenta option, u svakoj liniji ce se izvrsi maksimalno jedna zamena teksta tekst1 i to na mestu njegovog prvog pojavljivanja. Ako se isti tekst pojavljuje vise puta u istoj liniji, na ostalim mestima ostaje nepromenjen. Ako je option jednak g onda se zamena obavlja globalno. Trazeni tekst koji se pojavljuje vise puta u istoj liniji, bice zamenjen na svim mestima. Takodje je korisna i opcija c koja omogucava globalnu zamenu ali uz verifikaciju. Kada se trazeni tekst pronadje, od korisnika se ocekuje da sa y ili n kaze da li pronadjeni tekst treba zameniti ili ne.

primeri:

:1,$s/srdan/srdjan/g

od prve do zadnje linije menja 'srdan' sa 'srdjan'

:1,$s/^/tekst/

svakoj liniji dodaje 'tekst' na pocetku

:1,$s/$/tekst/

svakoj liniji dodaje 'tekst' na kraju


Unos teksta

a unosenje teksta pocev od pozicije prve udesno od pozicije kurzora. Zavrsava se sa < Esc >.
i unosenje teksta pocev od tekuce pozicije kurzora. Zavrsava se sa < Esc >.
o kreira novu liniju ispod tekuce i ulazak u 'insert' mod. Zavrsava se sa < Esc >.
O kreira novu liniju iznad tekuce i ulazak u 'insert' mod. Zavrsava se sa < Esc >.

Rad sa baferima

VI poseduje dve vrste bafera: neimenovane i imenovane. Neimenovanih ima 9 a referenciranje na njih se obavlja navodjenjem njihovog rednog broja. Komande dd i yy menjaju sadrzaj ovih bafera tako sto se novi sadrzaj uvek upisuje u prvi a pri tome se stari sadrzaj bafera pomera iz prethodnog u naredni (rade kao pomeracki registri) pri cemu se sadrzaj poslednjeg (devetog) gubi. Imenovanih bafera ima 26 a imena im se sastoje od slova engleske abecede. Mala i velika slova predstavljaju fizicki iste bafere ali se u radu razlikuju. Na primer, zapis u bafer a brise njegov prethodni sadrzaj dok je zapis u bafer A zapis u isti bafer ali se novi sadrzaj dodaje prethodnom.

dd brise tekucu liniju i smesta njen sadrzaj u neimenovani bafer.
p stampa sadrzaj prvog neimenovanog bafera ispod tekuce linije
P stampa sadrzaj prvog neimenovanog bafera iznad tekuce linije
yy smesta tekucu liniju u neimenovani bafer (ne brise je)
"anyy pamti u bafer 'a' n linija
"ap stampa sadrzaj bafera a ispod tekuce linije.
"np stampa sadrzaj n-tog neimenovanog bafera ispod tekuce linije

Sastavljanje i rastavljanje linija:

< Shift > j - sastavlja tekucu i narednu liniju;


Multipliciranje komandi

Instrukcije komandnog moda je moguce multiplicirati, jednostavno navodjenjem zeljenog broja pre unosenja komande. Ovo moze biti izuzetno korisno. U nekim primerima prikazanim do sada, ovo je vec korisceno. Na primer, komanda 10x brise deset znakova desno od kurzora, 10dd brise 10 linija, i slicno.


Promenljive VI-a

Slicno kao komandni interpreter, i VI poseduje neke ugradjene promenljive, koje ako su postavljene, menjaju ponasanje editora. Na sve promenljive ovog tipa se moze uticati :set komandom. Na primer:

:set nu prebacuje VI u displej mod gde je, osim sadrzaja fajla, na pocetku prikazan i redni broj linija. Ovo moze biti od koristi jer masa komandi koristi redne brojeve linija kao argumente.
:set nonu je suprotno od :set nu
:set showmode na kraju zadnje linije ce se prikazivati trenutni mod rada editora (komandni ili insert).
:set noshowmode je suprotno od :set showmode
:set showmatch editor ce pokazivati uparenost zagrada '(){}[]' sto je vrlo korisno u razvoju programa.
:set noshowmatch je suprotno od :set showmatch


Komande za zapisivanje

:i,jw file2 zapisuje tekst od i-te do j-te linije u file2
:w file2 zapisuje ceo fajl pod drugim imenom file2
:w>> file2 ceo sadrzaj zapisuje na kraj fajla file2

Prilagodjenje VI editora svojim potrebama

Prilagodjenje VI-a se obavlja vrlo jednostavno. Na HOME direktorijumu treba kreirati fajl .exrc i u njega uneti sve komande koje ce se izvrsiti inicijalno, nakon poziva editora. Na primer, ako .exrc ima sledeci sadrzaj:

:set showmode
:set nu
:set showmatch

nakon poziva, VI automatski ulazi u showmode, nu i showmatch mod.