Om du använde .BAT-filer för att skapa genvägar till långa kommando-
rader (jag gjorde det en massa), så kan du göra detta genom att ange
lämpliga alias-rader (se exempel ovan) i profile
eller .profile
. Men
om dina .BAT-filer var mera komplicerade så kommer du älska skal-
programmerings-språken som finns i varje skal: de är kraftfulla som
QBasic, om inte kraftfullare. De har variabler, konstruktioner som
while, for, case, if... then... else och en massa andra egenskaper:
de kan vara bra alternativ till "riktiga" programmerings-språk.
För att skriva ett skal-program, motsvarigheten till .BAT-filer under
DOS, så är allt du behöver göra att skriva en vanlig ASCII-fil, som
innehåller instruktioner, spara den och göra den körbar, med kommandot
chmod +x <skal-program-fil>
. För att köra den, skriv dess namn.
Ett varningens ord är här på sin plats. System-editorn heter vi
, och
enligt mina erfarenheter så finner de flesta nybörjare den väldigt svår
att använda. Jag tänker inte förklara hur du ska använda den, för jag
gillar den inte och använder den inte, så nu vet du det. Det räcker med
att jag säger följande här:
vi
utan att spara, skriva <ESC>; sen :q!
:wq
.En bra editor för nybörjare är joe
: anropar du den genom att
skriva jstar
, så får du samma tangent-kombinationer som DOS-editorn.
jed
i WordStar- eller IDE-läge är annu bättre. Se avsnittet
Var du får tag på program för att få reda på
var du kan få tag på dessa editorer.
Att skriva skal-program under bash
är ett så stort ämne att det tar
en bok själv, och jag tänker inte gå djupare in på ämnet. Jag ger bara
ett exempel på ett skal-program, från vilket du kan lära dig vissa
grundläggande regler:
#!/bin/sh # sample.sh # jag är en kommentar # ändra inte första raden; den måste vara där echo "Systemet är: `uname -a`" # använd utdatan från kommandot echo "Mitt namn är $0" # inbyggda variabler echo "Du gav mig följande $# parametrar: "$* echo "Den första parametern är: "$1 echo -n "Vad heter du? " ; read ditt_namn echo observera skillnaden: "hej $ditt_namn" # citerar med " echo observera skillnaden: 'hej $ditt_namn' # citerar med ' DIRS=0 ; FILES=0 for file in `ls .` ; do if [ -d ${file} ] ; then # om filen är en katalog DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1 elif [ -f ${file} ] ; then FILES=`expr $FILES + 1` fi case ${file} in *.gif|*jpg) echo "${file}: grafik-fil" ;; *.txt|*.tex) echo "${file}: text-fil" ;; *.c|*.f|*.for) echo "${file}: källkods-fil" ;; *) echo "${file}: vanlig fil" ;; esac done echo "det finns ${DIRS} kataloger och ${FILES} filer" ls | grep "ZxY--!!!WKW" if [ $? != 0 ] ; then # sista kommandots exit-kod echo "ZxY--!!!WKW inte funnen" fi echo "det räcker... skriv 'man bash' för mer info."
Under UNIX är C system-språket, vare sig du gillar det eller ej. Massor av andra språk (FORTRAN, Pascal, Lisp, Basic, Perl, awk...) finns också tillgängliga.
Om vi förutsätter att du kan lite om C, så kommer här några regler för
de av er som har blivit bortskämda med Turbo C++ eller någon av dess
släktingar under DOS. Linux C-kompilator heter gcc
och saknar alla de
"flashiga" egenskaper som vanligtvis finns med i DOS motsvarigheter:
ingen IDE, on-line hjälp, integrerad avlusare osv. Det är bara en rå
kommando-rads-kompilator, som är väldigt kraftfull och effektiv. För
att kompilera det gamla goda hello.c
, skriver du:
$ gcc hello.c
vilket skapar en körbar fil som heter a.out
. För att ge det körbara
programmet ett annat namn skriver vi
$ gcc -o hola hello.c
För att länka in ett bibliotek i programmet, lägg till switchen -l<biblioteksnamn>. T.ex., för att länk in matematik-biblioteket, skriv:
$ gcc -o mathprog mathprog.c -lm
(--l<biblioteksnamn>
-switchen tvingar gcc
att länka
in biblioteket /usr/lib/lib<bibltioteksnamn>.a
, så -lm
änkar in /usr/lib/libm.a
).
Så långt är allt gott. Men när du har ett program som består av flera
källkods-filer, så kommer du att behöva använda make
-verktyget. Låt
oss förutsätta att du har skrivit en uttrycks-tolkare: dess källkods-
fil heter tolkare.c
och #inkluderar två "header"-filer, tolkare.h
och xy.h
. Sen vill du använda rutinen tolkare.c
i ett program,
säg kalk.c
,
vilket i sin tur #inkluderar tolkare.h
. Vilken röra! Vad måste du nu
göra för att kompilera kalk.c
?
Du blir tvungen att skriva en så kallad makefile
, vilken talar om för
kompilatorn vilka "beroenden" som finns mellan källkod och objekt-filer.
I vårt exempel:
# Det här är en makefile, vilken används för att kompilera kalk.c # Använd TAB-tangenten där det är lämpligt! kalk: kalk.o tolkare.o <TAB>gcc -o kalk kalk.o tolkare.o -lm # kalk beror av två objekt-filer: kalk.o och tolkare.o kalk.o: kalk.c tolkare.h <TAB>gcc -c kalk.c # kalk.o beror av två källkods-filer tolkare.o: tolkare.c tolkare.h xy.h <TAB>gcc -c tolkare.c # tolkare.o beror av tre källkods-filer # slut på makefile.
Spara denna fil som Makefile
och skriv make
för att kompilera ditt
program; som alternativ kan du spara den som kalk.mak
och skriva
make -f kalk.mak
, och naturligtvis ska du LMS. Du kan anropa hjälp om
C-funktionerna, som avhandlas av man-sidorna, sektion 3, t.ex.:
$ man 3 printf
För att avlusa dina program, använd gdb
. info gdb
lär dig
hur du ska använda det.
Det finns en massa bibliotek tillgängliga där ute; bland de första du
kommer vilja använda finns ncurses
, som tar hand om olika effekter i
text-läge, och svgalib
, som kan fixa grafik. Om du känner dig till-
räckligt tuff för att tackla X-programmering, finns det bibliotek som
de ovan nämnda XForms, Qt, Gtk och många andra, med vilka du lätt kan skriva
X11-program. Ta en titt på
http://www.xnet.com/~blatura/linapp6.html
.
Många editorer kan fungera som ett IDE; emacs
och jed
, t.ex., och
även
ge sådana funktioner som syntax-markering, automatisk indentering osv.
Alternativet är att skaffa rhide
-paketet från
ftp://sunsite.unc.edu:/pub/Linux/devel/debuggers/
.
Det är en kopia av Borlands IDE, och det finns vissa möjligheter att du
kommer att gilla det.