Vissza Előre Tartalom

6. Egy kis programozás

6.1 Szkriptek: .BAT fájlok Linuxon

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 .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ó alternativá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 is figyelmeztetnélek, hogy a rendszer alapértelmezett szerkesztõje, a vi elsõ látásra elég nehézkes és szinte biztosra veszem, hogy vacaknak fogod találni. Nem fogom most itt elmagyarázni a mûkõdését, mivel még magam sem tudtam átvergõdni a szövevényein: Matt Welsh "Linux Installation... " címû mûvében a 109. oldalon nézhetsz ennek utána. Jobban teszed, ha beszerzel egy másik editort mint például a joe nevût, vagy az emacs X-es változatát. 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
# Én egy megjegyzés vagyok
# Ne változtasd meg 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 "Mi a neved? " ; read nev
echo Vedd észre a különbséget: "Szia $nev!" # a " használata idézetben
echo Vedd észre a különbséget: 'Szia $nev!' # a ' használata idézetben
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}: általános fájl" ;;
    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 "Uhhh, ... írd be, hogy 'man bash', ha több információt szeretnél!"

6.2 C

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égrehjtható a.out 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 könyvtárat szerkeszteni a programodba, akkor egy sor végi -l<libnev> opcó oldja meg ezt a feladatot. Például, ha a matematikai könyvtárat szerkeszted be:

$ gcc -o mathprog mathprog.c -lm

(A -l<libname> opció arra ösztönzi a gcc-t, hogy a /usr/lib/lib<libname>.a könyvtárat szerkessze be a programunkba. Így az -lm opció a /usr/lib/libm.a) könyvtárat szerkeszti be.

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és elemzõ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:

$ make

Egy másik lehetõséget jelent, hogy calc.mak néven mented el a fenti fájlt, és

$ make -f calc.mak

sorral végzed a fordítást. És persze O.K.U.

Továbbá ne feledd, hogy bármikor leírást kaphatsz a C függgvényekrõl, a man lapok segítségével. Például:

$ man 3 printf

Rengeteg könyvtár van, amiket használhatsz. Valószínû az elsõként használandók között szerepel az ncurses és az svgalib, amik a szöveges illetve a grafikus képernyõ kezelését valósítják meg. Ha kellõen bátornak érzed magad az X programozáshoz, akkor beszerezheted az XForms ( ftp://bloch.phys.uwm.edu/pub/xforms) és/vagy az MGUI ( http://www.volftp.vol.it/IT/IT/ITALIANI/MORELLO/index.htm), könyvtárakat, amik jelentõsen megkönnyítik az X programozást. Továbbá, ha nem tudsz meglenni a Borland kinézetû integrált fejlesztõi környezet nélkül, akkor szerezd be az xwpe programot a következõ helyrõl ftp://sunsite.unc.edu:/pub/Linux/apps/editors/. Valószínû kedvelni fogod.


Vissza Előre Tartalom