Če ste, tako kakor pisec, uporabljali datoteke .BAT za to, da ste dolge
ukazne vrstice nadomestili z bližnjicami, ste medtem verjetno že
ugotovili, da gre v Linuxu to z vzdevki v datoteki
.profile. Če pa so bile vaše datoteke .BAT bolj
zapletene, boste gotovo navdušeni nad skriptnim jezikom, ki ga ponuja
ukazna lupina. Vsaj tako močan je kakor dobri stari QBasic, če ne bolj. Pozna
spremenljivke, strukture kot while
, for
, case
,
if..then..else
, in veliko drugih priboljškov; lahko ga imamo za dober
nadomestek ,,pravih`` programskih jezikov.
Skript -- ustreznik datoteke .BAT v okolju DOS -- je enostavna tekstovna
datoteka z ukazi, ki jo lahko napišemo s katerimkoli urejevalnikom,
shranimo in napravimo izvedljivo z ukazom chmod +x
<moja_skript>
. Poženemo ga enostavno tako, da vtipkamo njegovo
ime.
Drobno opozorilo. S sistemskim urejevalnikom vi
ima večina novih
uporabnikov precejšnje težave. Tu ne bomo razlagali, kako se ga
uporablja, bralec naj poišče razlago v knjigi ,,Namestitev in začetek
dela z Linuxom`` ali pa v priročnikih, ki so dostopni v
internetu. Zadovoljiti se boste morali z najnujnejšim:
i
in
začnemo vnašatix
:q!
:wq
.Dober urejevalnik za začetnike je joe
. Če ga pokličemo z imenom
jstar
, se vede enako kakor urejevalnik v DOS. jed
v načinu
WordStar ali IDE je še boljši. O tem, kje najdete prvega in drugega, se
poučite v razdelku
Kje najdemo programe.
Pisanje skript v bash
je tako obsežna tema, da bi sama
zahtevala celotno knjigo. Tu se ne bomo več spuščali v globine te teme,
ampak bomo navrgli samo še en zgled skripte, iz katerega se lahko
naučite nekaj osnovnih pravil:
#!/bin/sh # zgled.sh # To je komentar # Ne spreminjajte prve vrstice! echo "Sistem: `uname -a`" # uporabimo izpis zunanjega ukaza uname echo "Tej skripti je ime $0" # vgrajene spremenljivke echo "Podali ste $# parametrov; ti so: "$* echo "Prvi parameter je: "$1 echo -n "Vaše ime? " ; read ime echo Opazite razliko: "hi $ime" # dvojni narekovaji echo Opazite razliko: 'hi $ime' # enojni narekovaji DIRS=0 ; FILES=0 for file in `ls .` ; do if [ -d ${file} ] ; then # imenik? DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1 elif [ -f ${file} ] ; then FILES=`expr $FILES + 1` fi case ${file} in *.gif|*jpg) echo "${file}: slika" ;; *.txt|*.tex) echo "${file}: besedilo" ;; *.c|*.f|*.for) echo "${file}: izvirna koda programa" ;; *) echo "${file}: druga datoteka" ;; esac done echo "Imenikov je ${DIRS}, datotek pa ${FILES}" ls | grep "ZxY--!!!WKW" if [ $? != 0 ] ; then # izhodna koda zadnjega ukaza echo "ZxY--!!!WKW not found" fi echo "dovolj... 'man bash' vam bo postregel z dodatnimi informacijami."
V Unixu je sistemski jezik C, najsi vam je všeč ali ne. Na voljo pa je tudi kopica drugih jezikov: java, fortran, pascal, lisp, perl, awk...
Ker verjamemo, da C že znate, bomo tu le navedli nekaj napotkov za
tiste, ki vas je razvadil turbo C++ ali kaj sorodnega. Prevajalnik za
C na Linuxu se imenuje gcc
in ne obsega takih lepot kakor njegovi
dvojniki v DOS: nima integriranega okolja za delo, interaktivne
pomoči, integriranega razhroščevalnika in podobnega. Je res samo
surovi prevajalnik, ki ga poženemo iz ukazne vrstice (kot prevajalnik
pa je res zelo močan in učinkovit). Običajni programček
hello.c prevedemo z ukazom:
$ gcc hello.c
To bo proizvedlo izvedljiv program z imenom a.out. Če želimo izvedljiv program poimenovati kako drugače, lahko to navedemo v ukazni vrstici, npr.:
$ gcc -o hola hello.c
Če bi radi v izvedljiv program povezali še knjižnico, dodamo izbiro -l<ime_knjižnice>. Takole na primer povežemo program s standardno matematično knjižnico:
$ gcc -o matemprog matemprog.c -lm
(Izbira -l<nekaj>
pove prevajalniku gcc
, naj v
izvedljiv program poveže še knjižnico
/usr/lib/lib<nekaj>.a; tako -lm
iz prejšnjega
zgleda poveže knjižnico /usr/lib/libm.a).
To je tako rekoč vse, kar boste potrebovali za prevajanje kratkih
programčkov. Kadar pa pišete dolg program, katerega izvirna koda je
razbita na več manjših datotek, si boste precej olajšali delo s
programom make
. Recimo, da pišete razčlenjevalnik
izrazov. Izvirna koda se imenuje parser.c in kliče
deklaracije iz glav parser.h in
xy.h. Funkcije, definirane v parser.c pa
želite uporabiti v drugem programu, recimo calc.c, ki
prav tako prebere glavo parser.h. Kakšna zmešnjava! Kaj
morate torej napraviti, da prevedete calc.c?
Napisati morate tako imenovani Makefile, ki vodi evidenco o odvisnostih med izvirnimi in prevedenimi datotekami. V našem primeru bi bila taka:
# makefile za prevajanje calc.c # Vnesite <TAB>, kjer je označeno calc: calc.o parser.o <TAB>gcc -o calc calc.o parser.o -lm # Program calc je odvisen od dveh prevedenih datotek: calc.o in parser.o calc.o: calc.c parser.h <TAB>gcc -c calc.c # calc.o je odvisen od izvirne datoteke calc.c in glave parser.h parser.o: parser.c parser.h xy.h <TAB>gcc -c parser.c # parser.o je odvisen od izvirne datoteke parser.c in dveh glav # To je vse.
Shranite to datoteko pod imenom Makefile. Zdaj preprosto
napišete make
, ki bo prevedel cel paket. Alternativno jo lahko
shranite tudi pod drugačnim imenom, denimo calc.mak, le
da boste to ime zdaj morali navesti kot parameter: make -f
calc.mak
. Več o tem se boste naučili ob branju priročnika. Tudi
funkcije iz standardne knjižnice imajo svoje strani v priročniku, in
sicer v tretjem poglavju. Zgled kaže, kako do navodil za funkcijo
printf
:
$ man 3 printf
Napake v programih lahko odpravljate z razhroščevalnikom
gdb
. Ukaz info gdb
vas bo poučil o podrobnostih.
Programerju je na voljo zelo veliko število različnih knjižnic. Med
prvimi, ki se jih boste morda ogledali, sta ncurses
, ki podpira
delo z znakovnim zaslonom, ter svgalib
za delo v grafičnem
načinu. Številni urejevalniki se tudi lahko vedejo kot integrirano
okolje.emacs
in jed
, na primer, podpirata barvanje
sintakse, zamikanje programske kode in podobno. Alternativa pa je
paket rhide
, ki ga lahko snamete z
ftp://metalab.unc.edu:/pub/Linux/devel/debuggers/
. Je
kopija Borlandovega integriranega okolja in vam bo skoraj zagotovo
všeč.
Če ste dovolj pogumni, da se boste lotili programiranja za X11 (ni tako zapleteno, kakor se zdi sprva!), je na voljo več knjižnic, ki pisanje programov za X11 znatno olajšajo. Glavni mesti, ki ju boste želeli obiskati, sta domača stran knjižnice GTK+, http://www.gtk.org, in domača stranj knjižnice Qt, http://www.troll.no. Knjižnica GTK+, zasnovana za jezik C, obsega nabor grafičnih elementov, ki je bil prvotno uporabljen za grafični paket GIMP http://www.gimp.org, zdaj pa ga uporablja tudi namizje GNOME. Kdeveloper pa, na drugi strani, temelji na knjižnici Qt, prirejeni za delo s C++, in uporabljeni v namizju KDE. Najverjetneje boste uporabili eno od teh dveh knjižnic.
Nekatera najboljša orodja za slikovno programiranje so Kdevelop za Qt, http://www.kdevelop.org in Glade za GTK+, http://glade.pn.org. Podrobnejše podatke najdete tudi na strani http://www.free-soft.org/guitool/.
Kaj ne bi bilo sijajno, če bi lahko pisali programe, ki bi se s
prevajalnikom gcc
brez sprememb prevedli tako v Linuxu kot v
Windows? Medtem ko nastaja to pisanje, je na voljo kar nekaj kolikor toliko stabilnih
naborov grafilčnih elementov, ki delujejo v več okoljih. Če damo prednost
stabilnosti in popolnosti, se izbor bolj ali manj
zoži na eno samo ime: FLTK, Fast Light Tool Kit
http://www.fltk.org.
Presenetljivo majhen, hiter in stabilen je. Ima tudi delno vizualni
sestavljalnik programov, imenovan Fluid.