Ha a .BAT fájlokat hosszú programsorok rövidítésére használtad (én sokszor),
akkor ezt megvalósíthatod a megfelelő ``alias'' sorok alkalmazásával a
.profile
, és a .bash_profile
fájlokban. De ha a .BAT fájljaid bonyolultabbak
voltak, akkor lefogadom, hogy egyszerűen imádni fogod a burok
programnyelvét: ez legalább olyan hatékony mint a Qbasic, ha nem
hatékonyabb. Változókat definiálhatsz, léteznek a while, for, case, if...
then... else struktúrák, és még számos lehetőséget nyújt. Jó alternatívája
lehet egy ``igazi'' programnyelvnek.
Ha egy szkriptet -- a DOS alatti .BAT fájl megfelelője -- akarsz írni,
egyszerűen egy olyan szabványos ASCII fájlt kell írnod, amely a parancsokat
tartalmazza, el kell mentened, és a következő paranccsal végrehajthatóvá
kell tenned: chmod +x <szkriptfájl>
. A végrehajtáshoz egyszerűen csak a nevét
kell begépelned.
Előre figyelmeztetlek, hogy a rendszer alapértelmezett szövegszerkesztőjét, a vi
-t,
tapasztalatom szerint a kezdők nagyon nehéznek találják. Nem fogom most itt
elmagyarázni a műkődését, olvasd el Matt Welsh könyvében a megfelelő
fejezetet, vagy keress egy leírást a hálózaton. A vi
-ról álljon itt annyi, hogy:
i
-t aztán vidd be a szöveget;x
-et;:q!
-t;:wq
-t.A joe
kezdőknek ideális szövegszerkesztő, ha a jstar
parancs begépelésével indítod, akkor ugyanazok lesznek a billentyűparancsok,
mint egy DOSWin szövegszerkesztőben. A jed
WordStar vagy IDE üzemmódja
még jobb. Nézd meg a
Hol vannak az alkalmazások? fejezetet,
ha nem tudod, honnan szerezheted meg ezeket a szövegszerkesztőket.
A linuxos szkriptek írásáról egy egész könyvet lehetne írni, így most nem fogok a témában igazán elmélyedni, csak mutatok néhány remélhetőleg hasznos példát, amiből aztán leszűrheted az alapvető szabályok egy részét.
#!/bin/sh # sample.sh # Ez egy megjegyzés # Ne változtasd emg az első sort! Annak ott kell lennie! echo "Ez a rendszer egy: `uname -a`" # a parancs kimenetét írja ki echo "a program neve $0" # beépített változó echo "A következő $# paramétert kaptam: "$* echo "Az első paraméter: "$1 echo -n "Hogy hívnak? " ; read nev echo Vedd észre a különbséget: "Szia $nev" # az " használata idézőjelként echo Vedd észre a különbséget: 'Szia $nev' # az ' használata idézőjelként DIRS=0 ; FILES=0 for file in `ls .` ; do if [ -d ${file} ] ; then # ha a fájl könyvtár DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1 elif [ -f ${file} ] ; then FILES=`expr $FILES + 1` fi case ${file} in *.gif|*.jpg) echo "${file}: grafikus fájl" ;; *.txt|*.tex) echo "${file}: szöveges fájl" ;; *.c|*.f|*.for) echo "${file}: forráskód" ;; *) echo "${file}: generic file" ;; esac done echo "Összesen ${DIRS} könyvtárat és ${FILES} fájlt találtam." ls | grep "ZxY--!!!WKW" if [ $? != 0 ] ; then az utolsó parancs kilépési kódja echo "Nem találtam a következő fájlt: ZxY--!!!WKW" fi echo "Na ebből elég... Írd be, hogy 'man bash', ha több információt szeretnél!"
A Unixok alatt a rendszer nyelve a C, akár szereted akár nem. Persze egy csomó másik nyelv is elérhető (FORTRAN, Pascal, Lisp, Basic, Perl, awk, ...).
Feltételezve, hogy ismered a C-t, álljon itt néhány segítő tanács
azoknak, akiket eddig a Turbo C++ vagy valamelyik DOS-os testvére
kényeztetett. A Linux C fordítóját gcc
-nek hívják, és alapértelmezésben
híján van minden villogó, fütyülő kütyünek, ami általában velejárója a
DOS-os hasonmásának: nincs Integrált Fejlesztői Környezet (IDE), on-line
help, beépített debugger, stb. A gcc egy parancssorból hívható fordító,
nagyon hatékony és erőteljes. Ha le szeretnéd fordítani a szokásos hello.c
programodat, akkor a
$ gcc hello.c
sor a fordítás végeredményeképpen egy végrehajtható a.out
nevű fájlt fog
készíteni. Ha ettől az elnevezéstől el akarsz térni, akkor a
$ gcc -o hello hello.c
sor a hello névre fogja elkeresztelni a futtatható fájlt. (Világos, hogy nem célszerű az a.out fájlban hagyni a kész műved, mert a következő fordítás alkalmával felülíródik). Ha szeretnél egy programkönyvtárat linkelni a programodhoz, akkor egy sor végi -l<libnev> kapcsoló oldja meg ezt a feladatot. Például, ha a matematikai könyvtárral linkeled össze:
$ gcc -o mathprog mathprog.c -lm
(A -l<libnev>
kapcsoló arra utasítja a gcc
-t, hogy az
/usr/lib/lib<libnev>.so
; könyvtárral linkelje a programot,
tehát az -lm
az /usr/lib/libm.so
-t használja).
Ezek a parancsok elegendőek egy kis program esetén, de ha a programod számos
forrásból áll össze, akkor szükséged lesz a make
segédprogramra. Tegyük fel,
hogy írtál egy kifejezéselemzőt: a forrásfájl parser.c
és két #include
fájlja van, parser.h
és xy.h
. Ezután szeretnéd egy calc.c
nevű programban
használni a parser.c
függvényeit, amely viszont includolja a parser.h
fájlt.
Nos, mit kell ekkor tenned, ha a calc.c
fájlt akarod fordítani?
Egy úgynevezett Makefile
-t kell írnod, amely leírja a fordító számára a
forrásfájlok közötti összefüggéseket. A példánkban ez a következőképpen néz
ki:
# Ez a Makefile a calc.c fordítását végzi # Üss <TAB>-ot a megfelelő pozíciókban! calc: calc.o parser.o <TAB>gcc -o calc calc.o parser.o -lm # calc két object fájltól függ: calc.o és parser.o calc.o: calc.c parser.h <TAB>gcc -c calc.c # calc.o két forrásfájltól függ parser.o: parser.c parser.h xy.h <TAB>gcc -c parser.c # parser.o három forrásfájltól függ # A Makefile vége
Ezt a fájlt Makefile
néven mentsd ki, és futtatsd a make
parancsot,
esetleg mentsd el calc.mak
néven, és írd be azt, hogy make -f calc.mak
.
Természetesen OEK. Továbbá ne feledd, hogy bármikor leírást kaphatsz a C függgvényekről, a
kézikönyvoldalak segítségével. Például:
$ man 3 printf
A programok hibakereséséhez használd a gdb
-t. A használati utasításhoz
írd be: info gdb
.
Rengeteg programkönyvtár van, amit használhatsz. Valószínűleg az először
használandók között lesz az ncurses
és az svgalib
, amik a szöveges
illetve a grafikus képernyő kezelését valósítják meg. Ha elég bátorságot érzel
az X alatti programozáshoz (nem olyan nehéz), akkor számos programkönyvtár
áll rendelkezésedre, amelyekkel egy szempillantás alatt működő
alkalmazásokat lehet létrehozni. Nézd meg a
http://www.xnet.com/~blatura/linapp6.html weblapot, és tartsd
észben, hogy a Gtk kezd a Linux szabvánnyá válni.
Sok szövegszerkesztő képes integrált fejlesztőkörnyezetként viselkedni,
például az emacs
és a jed
képes a nyelv szintaktikai elemeinek kiemelésére,
automatikus bekezdésekre, stb. Ezen kívül beszerezheted az rhide
csomagot az
ftp://sunsite.unc.edu:/pub/Linux/devel/debuggers/
FTP-helyről. Ez a Borland integrált fejlesztőkörnyezetét koppintja,
valószínűleg elnyeri majd a tetszésedet.