This file is indexed.

/usr/share/doc/HOWTO/hr-html/DOS-Win-na-Linux-KAKO-11.html is in doc-linux-hr 20000416.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.11">
 <TITLE>S DOS/Windowsa na Linux KAKO: Malo programiranja</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-2">
 <LINK HREF="DOS-Win-na-Linux-KAKO-12.html" REL=next>
 <LINK HREF="DOS-Win-na-Linux-KAKO-10.html" REL=previous>
 <LINK HREF="DOS-Win-na-Linux-KAKO.html#toc11" REL=contents>
</HEAD>
<BODY>
<A HREF="DOS-Win-na-Linux-KAKO-12.html">Sljedeæi dio</A>
<A HREF="DOS-Win-na-Linux-KAKO-10.html">Prethodni dio</A>
<A HREF="DOS-Win-na-Linux-KAKO.html#toc11">Sadr¾aj</A>
<HR>
<H1><A NAME="s11">11. Malo programiranja</A></H1>

<P>
<H2><A NAME="Skripte"></A> <A NAME="ss11.1">11.1 Skripte u ljusci: .BAT datoteke na steroidima</A>
</H2>

<P>Ako ste koristili <CODE>.BAT</CODE> datoteke kao preèice do dugih naredbi (ja jesam,
puno), to mo¾ete odgovarajuæim alias redovima (pogledajte gornji primjer) u
profile ili .bash_profile. Ali ako su vam .BAT-ovi bili
slo¾eniji, onda æete obo¾avati jezik ljuske: moæan je kao dobri stari
QBasic, ako ne i vi¹e. Ima varijable, konstrukte kao while, for, case, if...
then... else i puno drugih moguænosti: dobra je alternativa ``pravom''
programskom jeziku.
<P>Za pisanje skripte -- ekvivalenta <CODE>.BAT</CODE> datoteci pod DOS-om -- samo
trebate napisati standardnu ASCII datoteku koja sadr¾i instrukcije, snimiti
ju, a onda uèiniti izvr¹nom naredbom <CODE>chmod +x &lt;skripta&gt;</CODE>. Ako ju
hoæete izvr¹iti, samo napi¹ite njeno ime.
<P>Malo upozorenje. Editor sustava se zove <CODE>vi</CODE> i po mom iskustvu vrlo je
te¾ak za veæinu novih korisnika. Neæu vam obja¹njavati kako ga
upotrebljavati; pogledajte knjigu Matta Welsha ili potra¾ite upute na mre¾i.
Ovdje æu reæi samo ovo:
<UL>
<LI>za ubacivanje teksta pritisnite &lt;i&gt;, a onda upi¹ite tekst;</LI>
<LI>za brisanje znakova pritisnite &lt;ESC&gt;, pa &lt;x&gt;;</LI>
<LI>za izlaz bez snimanja pritisnite &lt;ESC&gt;, pa <CODE>:q!</CODE>;</LI>
<LI>za snimanje i izlaz pritisnite &lt;ESC&gt;, pa <CODE>:wq</CODE>.</LI>
</UL>
<P>Dobar editor za poèetnika je <CODE>joe</CODE>: ako ga pokrenete kao <CODE>jstar</CODE>,
dobit æete iste tipke kao u DOSWin editoru. <CODE>jed</CODE> u WordStar ili IDE modu
je jo¹ bolji. Pogledajte dio
<A HREF="DOS-Win-na-Linux-KAKO-12.html#Gdje"> Gdje naæi aplikacije</A> za informacije gdje ih nabaviti.
<P>Pisanje skripti u <CODE>bash</CODE>u tako je golema tema da zahtijeva knjigu samo za
sebe i neæu dublje u nju ulaziti. Samo vam dajem primjer skripte iz koje
mo¾ete vidjeti neka osnovna pravila:
<PRE>
#!/bin/sh
# primjer.sh
# ja sam komentar
# ne mijenjajte prvi red, on mora biti tamo
echo "Ovaj sustav je: `uname -a`" # kori¹tenje izlaza naredbe
echo "Moje ime je $0" # ugraðene varijable
echo "Dali ste mi ovih $# parametara: "$*
echo "Prvi parametar je: "$1
echo -n "Kako se zovete? " ; read vase_ime
echo pogledajte razliku: "zdravo, $vase_ime" # citiranje s "
echo pogledajte razliku: 'zdravo, $vase_ime' # citiranje s '
DIROVI=0 ; DATOTEKE=0
for datoteka in `ls .` ; do
  if [ -d ${datoteka} ] ; then # ako je datoteka direktorij
    DIROVI=`expr $DIROVI + 1`  # DIROVI = DIROVI + 1
  elif [ -f ${datoteka} ] ; then
    DATOTEKE=`expr $DATOTEKE + 1`
  fi
  case ${datoteka} in
    *.gif|*jpg) echo "${datoteka}: grafièka datoteka" ;;
    *.txt|*.tex) echo "${datoteka}: tekstualna datoteka" ;;
    *.c|*.f|*.for) echo "${datoteka}: datoteka s izvornim kodom" ;;
    *) echo "${datoteka}: opæenita datoteka" ;;
  esac
done
echo "ima ${DIROVI} direktorija i ${DATOTEKE} datoteka"
ls | grep "ZxY--!!!WKW"
if [ $? != 0 ] ; then # izlazni kod zadnje naredbe
  echo "ZxY--!!!WKW nije naðen"
fi
echo "dosta... napi¹ite 'man bash' ako hoæete jo¹ informacija"
</PRE>
<P>
<H2><A NAME="ss11.2">11.2 C za vas</A>
</H2>

<P>Pod Unixom jezik sustava je C, svidjelo se to vama ili ne. Tu je i hrpa
drugih jezika (Java, FORTRAN, Pascal, LISP, BASIC, Perl, AWK...).
<P>Ako znate C, evo nekoliko uputa za one razma¾ene Turbo C++-om ili nekim
njegovim DOS roðakom. Linuxov C kompajler se zove <CODE>gcc</CODE> i nedostaju mu
svi ukrasi uobièajenih IDE pandana: nema IDE-a, izravnih uputa,
integriranog debuggera, itd. To je samo grubi kompajler komandne linije,
vrlo moæan i djelotvoran. Za kompajliranje standardnog hello.c
napi¹ite:
<PRE>
$ gcc hello.c
</PRE>

¹to æe dati izvr¹nu datoteku a.out. Ako hoæete drugo ime, napi¹ite
<PRE>
$ gcc -o hello hello.c
</PRE>
<P>Za vezanje librarya na program, dodajte prekidaè -l&lt;imelibrarya&gt;. Na
primjer, za vezanje s matematièkim libraryem:
<PRE>
$ gcc -o matematika matematika.c -lm
</PRE>
<P><CODE>-l&lt;imelibrarya&gt;</CODE> ka¾e <CODE>gcc</CODE>u da ve¾e library
/usr/lib/&lt;imelibrarya&gt;.so, pa <CODE>-lm</CODE> ve¾e
/usr/lib/libm.so.
<P>Zasad je sve u redu. Ali kad se va¹ program sastoji od vi¹e datoteka,
koristit æete alat <CODE>make</CODE>. Prepostavimo da ste napisali parser izraza:
njegova se datoteka zove parser.c i ukljuèuje dva headera,
parser.h i xy.h. A onda ¾elite koristiti funkcije iz
parser.c u drugom programu, recimo kalk.c, koji takoðer
ukljuèuje parser.h. Kakva zbrka! Kako æete kompajlirati
kalk.c?
<P>Napisat æete takozvani Makefile, koji kompajleru pokazuje
meðuovisnosti izvornih i objektnih kodova. U na¹em primjeru:
<PRE>
# Ovo je Makefile za kompajliranje kalk.c
# Pritisnite &lt;TAB&gt; gdje je oznaèeno!

kalk: kalk.o parser.o
&lt;TAB&gt;gcc -o kalk kalk.o parser.o -lm
# kalk ovisi o dvije objektne datoteke: kalk.o i parser.o

kalk.o: kalk.c parser.h
&lt;TAB&gt;gcc -c kalk.c
# kalk.o ovisi o dvije izvorne datoteke

parser.o: parser.c parser.h xy.h
&lt;TAB&gt;gcc -c parser.c
# parser.o ovisi o tri izvorne datoteke

# kraj Makefilea
</PRE>
<P>Ovu datoteku snimite kao Makefile i napi¹ite <CODE>make</CODE> za
kompajliranje programa; mo¾ete ju snimiti i kao kalk.mak i napisati
<CODE>make -f kalk.mak</CODE>. Naravno, RMP. Ne¹to uputa o C funkcijama pokrivaju
man stranice 3. dijela; na primjer,
<PRE>
$ man 3 printf
</PRE>
<P>Za otklanjanje gre¹aka koristite <CODE>gdb</CODE>. <CODE>info gdb</CODE> za njegovo
kori¹tenje.
<P>Librarya ima puno; meðu prvima koje æete ¾eljeti koristiti su <CODE>ncurses</CODE>
(efekti u tekstualnom modu) i <CODE>svgalib</CODE> (grafika na konzoli). Ako ste
dovoljno hrabri za programiranje u X11 (nije to tako te¹ko), postoje
nekoliko librarya koje pisanje X11 programa èine vrlo lakim. Pogledajte
<A HREF="http://www.xnet.com/~blatura/linapp6.html">http://www.xnet.com/~blatura/linapp6.html</A>, imajuæi pritom na umu
da Gtk postaje Linux standard.
<P>Mnogi editori mogu imitirati IDE; na primjer, <CODE>emacs</CODE> i <CODE>jed</CODE> imaju
sintaktièko osvjetljavanje, automatsko uvlaèenje, itd. Mo¾ete nabaviti i
paket RHIDE s 
<A HREF="ftp://sunsite.unc.edu/pub/Linux/devel/debuggers/">ftp://sunsite.unc.edu/pub/Linux/devel/debuggers/</A>.
To je klon Borlandovog IDE-a i vjerojatno æe vam se svidjeti.
<P>
<HR>
<A HREF="DOS-Win-na-Linux-KAKO-12.html">Sljedeæi dio</A>
<A HREF="DOS-Win-na-Linux-KAKO-10.html">Prethodni dio</A>
<A HREF="DOS-Win-na-Linux-KAKO.html#toc11">Sadr¾aj</A>
</BODY>
</HTML>