Če ste, tako kot pisec, uporabljali datoteke .BAT za to, da ste dolge
ukazne vrstice nadomestili z bližnjicami, ste medtem verjetno že
ugotovili, da gre na 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 kot stari dobri QBasic, če ne bolj. Pozna
spremenljivke, strukture kot while
, for
, case
,
if..then..else
, in veliko drugih dobrot; lahko ga imamo za dobro
alternativo ,,pravim`` programskim jezikom.
Skript -- ekvivalent datoteki .BAT v 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.
Majhno opozorilo. S sistemskim urejevalnikom vi
ima večina novih
uporabnikov precejšnje težave. Tukaj 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 z vnašanjemx
:q!
:wq
.Dober urejevalnik za začetnike je joe
. Če ga pokličemo z imenom
jstar
, se obnaša enako kot urejevalnik v DOS. jed
v načinu
WordStar ali IDE je še boljši. O tem, kje najdete enega in drugega, se
poučite v razdelku
Kje najdemo programe.
Pisanje skript v bash
je tako obsežna tema, da bi sama
zahtevala celo knjigo. Tu se ne bomo več spuščali v globine te teme,
ampak bomo navrgli samo še en primer 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}: izvorna 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 vključuje lepot, kot jih njegovi
dvojniki v DOS: ne vsebuje 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 resda 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 takorekoč vse, kar boste potrebovali za prevajanje kratkih
programčkov. Kadar pa pišete dolg program, katerega izvorna koda je
razbita v več manjših datotek, si boste precej olajšali delo s
programom make
. Recimo, da pišete razčlenjevalnik
izrazov. Izvorna 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?
Kar morate napraviti, je napisati takoimenovani Makefile, ki vodi evidenco o odvisnostih med izvornimi ter prevedenimi datotekami. V našem primeru bi bila takšna:
# 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 izvorne 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 izvorne 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. Mnogi urejevalniki se tudi lahko obnašajo 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 precej verjetno je, da
vam bo všeč.
Če ste dovolj pogumni, da se boste lotili programiranja za X11 (ni tako zapleteno, koz se sprva zdi!), obstaja 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, 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. Več informacij 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? V času tega pisanja obstaja nekaj kolikor toliko stabilnih
naborov grafilčnih elementov, ki delujejo v več okoljih. Če kot
prioriteti postavimo stabilnost in popolnost, se izbor bolj ali manj
zoži na eni 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.