Als je gebruik maakte van .BAT bestanden om shortcuts aan te maken
van lange commandoregels (Ik deed dit veel), kun je dit doel bereiken
door hiervoor geschikte alias regels toe te voegen aan het bestand
profile
of .bash_profile
(zie het voorbeeld hierboven).
Maar als je .BAT bestanden gecompliceerder waren, dan zul
je de script taal van de shell zeker weten te waarderen: het is net zo
krachtig als die `goeie ouwe' QBasic, zo niet beter.
Het beschikt over variabelen, structuren
zoals while, for, case, if... then... else, en nog vele andere mogelijkheden:
het kan een goed alternatief zijn voor een ``echte'' programmeertaal.
Het enige wat je hoeft te doen om een script te kunnen schrijven---het
equivalent van een .BAT bestand onder DOS---, is om een standaard ASCII
bestand te schrijven waar de instructies in staan, het op te slaan en het
uitvoerbaar te maken met het commando chmod +x <scriptfile>
.
Tik de naam van het bestand in, om het op te starten.
Een waarschuwing. De systeem editor wordt vi
genoemd, en mijn
ervaring is dat nieuwe gebruikers het erg moeilijk in 't gebruik vinden.
Ik ga niet uitleggen hoe je het kunt gebruiken; raadpleeg alsjeblieft
Matt Welsh's boek of zoek naar een tutorial op het net.
Ik volsta met hier te zeggen dat:
:q!
, om vi
zonder opslaan
te verlaten;:wq
, om op te slaan en te verlaten.Een goede editor voor beginners is joe
: start het programma door
jstar
in te tikken.
je krijgt dezelfde key bindings als in de DOSWin editor.
jed
in WordStar
of IDE mode is zelfs beter. Raadpleeg paragraaf
Waar kun je applicaties vandaan halen om erachter te komen hoe je
aan deze editors kunt komen.
Het schrijven van scripts onder bash
is zo'n veelomvattend onderwerp
dat hiervoor een volledig boek nodig zou zijn, en ik zal het onderwerp
hier niet verder uitdiepen.
Ik geef je slechts een voorbeeld van een shellscript,
van waaruit je enkele basisregels kunt halen:
#!/bin/sh # sample.sh # Ik ben commentaar # wijzig de eerste regel niet, die moet er staan echo "Dit systeem is : `uname -a`" # gebruik de uitvoer van het commando echo "Mijn naam is $0" # ingebouwde variabelen echo "Je gaf me de volgende $# parameters: "$* echo "De eerste parameter is: "$1 echo -n "Wat is je naam? " ; read your_name echo let op het verschil: "hi $your_name" # omsluiten door " echo let op het verschil: 'hi $your_name' # omsluiten door ' DIRS=0 ; FILES=0 for file in `ls .` ; do if [ -d ${file} ] ; then # als het bestand een directory is DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1 elif [ -f ${file} ] ; then FILES=`expr $FILES + 1` fi case ${file} in *.gif|*jpg) echo "${file}: grafisch bestand" ;; *.txt|*.tex) echo "${file}: tekstbestand" ;; *.c|*.f|*.for) echo "${file}: bronbestand" ;; *) echo "${file}: gewoon bestand" ;; esac done echo "er zijn ${DIRS} directory's en ${FILES} bestanden" ls | grep "ZxY--!!!WKW" if [ $? != 0 ] ; then # exit code van het laatste commando echo "ZxY--!!!WKW niet gevonden" fi echo "genoeg... typ 'man bash' als je meer informatie wilt."
Onder UNIX is de systeemtaal C, je houdt ervan of niet. Andere talen zoals (Java, FORTRAN, Pascal, Lisp, Basic, Perl, awk...) zijn ook beschikbaar.
Er van uitgaand dat je de taal C kent, zijn hier een paar aanwijzingen voor
degene die zijn verwend met Turbo C++ of één van de DOS-varianten.
De C compiler van Linux wordt gcc
genoemd en mist alle toeters en
bellen die gewoonlijk bij overeenkomstige DOS programma's worden geleverd:
geen IDE, on-line help, geïntegreerde debugger, enz. Het is alleen maar
een command-line compiler, erg krachtig en efficiënt.
Je standaard hello.c
bestand kun je als volgt compileren:
$ gcc hello.c
hiermee wordt een uitvoerbaar bestand met de naam a.out
aangemaakt.
Doe het volgende om het uitvoerbare bestand een andere naam te geven:
$ gcc -o hola hello.c
Om een library aan het programma te koppelen, voeg je de switch -l<libname> toe. Bijvoorbeeld, om de math library te linken:
$ gcc -o mathprog mathprog.c -lm
(De -l<libname>
switch forceert gcc
de library
/usr/lib/lib<libname>.so
te koppelen; dus -lm
koppelt
/usr/lib/libm.so
).
Als je programma uit verschillende bronbestanden bestaat, zul je gebruik
moeten maken van de utility make
. Laten we ervan uitgaan dat je een
expression parser hebt geschreven: het bronbestand heet parser.c
en
# bestaande uit twee header bestanden, parser.h
en
xy.h
. Dan wil je gebruik maken van de routines in parser.c
in een programma, stel calc.c
, welke op zijn beurt bestaat uit
# parser.h
. Wat moet je nu doen om calc.c
te compileren?
Je zult een zogenoemde makefile
moeten schrijven, die de compiler
vertelt welke afhankelijkheden er tussen de bron- en objectbestanden
bestaan. In ons voorbeeld:
# Dit is makefile, gebruikt om calc.c te compileren # Druk daar waar aangegeven de <TAB> toets in! calc: calc.o parser.o <TAB>gcc -o calc calc.o parser.o -lm # calc is afhankelijk van twee object bestanden: calc.o en parser.o calc.o: calc.c parser.h <TAB>gcc -c calc.c # calc.o is afhankelijk van twee bronbestanden parser.o: parser.c parser.h xy.h <TAB>gcc -c parser.c # parser.o is afhankelijk van drie bronbestanden # einde van makefile.
Bewaar dit bestand als Makefile
en typ make
om je programma te compileren;
Als alternatief, kun je het opslaan als calc.mak
en typ dan
make -f calc.mak
, en natuurlijk LMP.
Je kunt wat hulp over de C functies krijgen uit de man pages
sectie 3; bijvoorbeeld,
$ man 3 printf
Om je programma's te debuggen, gebruik je gdb
.
info gdb
om te leren hoe je 't kunt gebruiken.
Er zijn veel libraries beschikbaar; de eerste die je waarschijnlijk
zult willen gebruiken zijn ncurses
(tekstmode effecten),
en svgalib
(console graphics). Als je je sterk genoeg
voelt om met X11 programmeren te beginnen (het is niet zo moeilijk)
zijn er verscheidene library's die het schrijven
van X11 programma's een stuk gemakkelijker maken.
Ga eens naar
http://www.xnet.com/~blatura/linapp6.html
,
in gedachten houdend dat Gtk een Linux standaard aan het worden is.
Veel van de editors kunnen zich gedragen als een IDE; emacs
en jed
, bijvoorbeeld, bieden ook syntax highlighting, automatisch
inspringen, enz. Als alternatief kun je het package rhide
van
ftp://sunsite.unc.edu:/pub/Linux/devel/debuggers/
proberen. Het is een Borland IDE kloon, en de kans bestaat dat je het waardeert.