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!"
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.