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:
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!"
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
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 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 hello hello.c
(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).$ gcc -o mathprog mathprog.c -lm
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:
A programok hibakereséséhez használd a gdb-t. A használati utasításhoz írd be: info gdb.$ man 3 printf
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.