Falls Sie .BAT Dateien bisher benutzt haben, um lange Kommandoeingaben
abzukürzen (wie ich zum Beispiel), kann dies jetzt besser durch das
Einfügen von Alias-Anweisungen (siehe obiges Beispiel) in die Dateien
profile
oder .profile
geschehen. Wenn Ihre .BAT Dateien jedoch
komplizierter sind, werden Sie die Skriptsprache, die von der Shell
bereitgestellt wird, mögen: Sie ist so mächtig wie QBasic - wenn nicht noch
mächtiger. Sie hat Variablen, Strukturen wie while, for, case, if...
then... else, und vieles anderes. Sie ist eine gute Alternative zu einer
"echten" Programmiersprache.
Um ein Skript, das Gegenstück zu einer .BAT Datei unter DOS, zu schreiben,
muß man lediglich eine ganz gewöhnliche ASCII-Datei erstellen, die die
gewünschten Befehle enthält, diese speichern und mit dem Kommando
chmod +x <skripdatei>
ausführbar machen. Man kann es dann wie jedes
andere Programm aufrufen.
Ein Hinweis: Der Systemeditor ist der vi
, und nach meiner Erfahrung
sind neue Nutzer selten davon erbaut, da sie ihn als schwer zu bedienen
empfinden. Ich werde ihn hier nicht weiter erläutern, da ich ihn nicht mag
und auch nicht benutze. Weitere Erläuterungen findet man dazu in Matt
Welsh's Linux installation... (englisch) oder jedem anderen Buch über
Linux/UNIX. Es ist vielleicht sinnvoll, sich einen anderen Editor zu
besorgen bzw. zu installieren, z.B. joe
oder emacs
für X. Zum
vi
nur soviel:
vi
ohne sichern, <ESC> eingeben, dann ':q!'Skripte für die bash
zu schreiben ist ein weites Feld, und ich will
hier nicht weiter darauf eingehen. Hier nur ein Beispiel eines
Shell-Skriptes, aus dem man einige grundlegende Dinge erkennen kann:
#!/bin/sh
# beispiel.sh
# Ich bin ein Kommentar
# die erste Zeile nicht ändern, sie muß genau so dastehen
echo "Dieses System ist: `uname -a`" # Nutzung der Ausgabe des Kommandos
echo "Mein Name ist $0" # vordefinierte Variablen
echo "Es wurden die folgenden $# Parameter übergeben: "$*
echo "Erster Parameter ist: "$1
echo -n "Ihr Name? " ; read ihr_name
echo Unterschied beachten: "hi $ihr_name" # einklammern mit "
echo Unterschied beachten: 'hi $ihr_name' # einklammern mit '
DIRS=0 ; FILES=0
for file in `ls .` ; do
if [ -d ${file} ] ; then # falls file ein Verzeichnis
DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1
elif [ -f ${file} ] ; then
FILES=`expr $FILES + 1`
fi
case ${file} in
*.gif|*jpg) echo "${file}: Bildateien" ;;
*.txt|*.tex) echo "${file}: Textdateien" ;;
*.c|*.f|*.for) echo "${file}: Quelldateien" ;;
*) echo "${file}: allgemeine Dateien" ;;
esac
done
echo "es gibt ${DIRS} Verzeichnisse und ${FILES} Dateien"
ls | grep "ZxY--!!!WKW"
if [ $? != 0 ] ; then # Rückgabewert des letzten Kommandos
echo "ZxY--!!!WKW nicht gefunden"
fi
echo "genug... 'man bash' eingeben für weitere Informationen."
Unter UNIX ist die Programmiersprache des Systems C, ob es einem gefällt oder nicht. Zur Programmierung von Programmen gibt es jedoch auch eine große Anzahl anderer Sprachen, z.B. FORTRAN, Pascal, Lisp, Basic, Perl, awk uva. .
Hier sind ein paar Hilfestellungen für die, die C bereits beherrschen und
von Programmen wie Turbo C++ o.ä. verwöhnt wurden. Der C-Kompiler unter
Linux heißt gcc
und hat keinerlei der netten Features, wie sie unter
DOS und Windows üblich sind: keine IDE, keine Online-Hilfe, kein
integrierter Debugger usw. Es ist nur ein reiner Kommandozeilenkompiler
der jedoch sehr leistungsfähig und effizient ist. Da er auch auf vielen
anderen Unixsystemen verfügbar ist, arbeiten viele Leute lieber mit ihm,
als mit dem zu ihrem System standardmäßig ausgelieferten Kompiler.
Um sein Standardprogramm hello.c
zu kompilieren, gibt man ein:
$ gcc hello.c
Das ergibt eine ausführbare Datei namens a.out
. Um dieser Datei gleich
einen anderen Namen geben zu lassen (z.B. hallo) gibt man ein
$ gcc -o hallo hello.c
Um eine Bibliothek an ein Programm zu linken, fügt man den Parameter -l<libname> hinzu. Zum Linken der Mathebibliothek zum Beispiel:
$ gcc -o mattteprog matteprog.c -lm
(Der -l<libname>
Parameter veranlaßt gcc
die Bibliothek
/usr/lib/lib<libname>.a
zu linken; also linkt -lm
/usr/lib/libm.a
).
So weit so gut. Wenn das Programm jedoch aus mehreren Quelldateien besteht,
wird der Einsatz des Hilfsprogrammes make
sinnvoll. Angenommen man hat
einen Parser für Ausdrücke geschrieben: die Quelldatei ist parser.c
und beinhaltet per #include zwei Headerdateien, parser.h
und
xy.h
. Jetzt will man die Routinen aus parser.c
in einem Programm,
sagen wir calc.c
, verwenden, welches seinerseits per #include
parser.h
enthält. Ein ziemliches Durcheinander! Was muß man machen, um
calc.c
zu kompilieren?
In diesem Falle schreibt man ein sogenanntes makefile
, welches dem
Kompiler Auskunft über die Abhängigkeiten zwischen den Quell- und
Objektdateien gibt. In unserem Falle:
# Dies ist ein makefile zum kompilieren von calc.c
# <TAB> muss durch das Tabulator-Zeichen ersetzt werden!
calc: calc.o parser.o
<TAB>gcc -o calc calc.o parser.o -lm
# calc basiert auf zwei Objektdateien: calc.o und parser.o
calc.o: calc.c parser.h
<TAB>gcc -c calc.c
# calc.o basiert auf zwei Quelldateien
parser.o: parser.c parser.h xy.h
<TAB>gcc -c parser.c
# parser.o basiert auf drei Quelldateien
# ende des makefile.
Abspeichern als Datei makefile
und eingeben
$ make
um das Programm zu kompilieren, oder als calc.mak
speichern und
eingeben
$ make -f calc.mak
make
sucht automatisch (wenn kein anderer Name per Option -f
angegeben wird) nach einer Datei namens Makefile
oder makefile
im
aktuellen Verzeichnis als Datei mit den Abhängigkeiten. Auch hier wieder
MSL.
Man kann sich bezüglich der C-Funktionen Hilfe anzeigen lassen. Sie sind im Manual, Abschnitt 3 beschrieben. Beispiel:
$ man 3 printf
Darüber hinaus gibt es noch viele weitere Bibliotheken, die das
Programmieren erleichtern. Darunter sind z.B. ncurses
, mit der man
Textmodus-Programme erstellen kann, svgalib
um Grafik auch ohne
X-Windows zu verwenden, sowie viele andere. Wer noch einen Schritt
weitergehen möchte, kann sich an die Programmierung von X-Windows
heranwagen. Auch dafür gibt es viele Bibliotheken, die die Programmierung
unter X vereinfachen, wie z.B.:
einstein.phys.uwm.edu/pub/xforms
www.volftp.vol.it/IT/IT/ITALIANI/MORELLO/index.htm
www.hungry.com
: Eine Bibliothek, die als freier Ersatz des
kommerziellen Motif gedacht ist, welches die Standardbibliothek für
grafische Programmierung unter UNIX ist. LessTif ist zum jetzigen
Zeitpunkt (Oktober 1997) noch nicht ganz fertig, aber trotzdem schon
weitgehend benutzbar.
www.troll.no
: Auf dieser Bibliothek basiert der
KDE, oben erwähnter Desktop, der alle
Chancen hat, der Standard unter Linux zu werden.
Mehr Informationen über Bibliotheken und Programmiertools im allgemeinen gibt es unter:
http://www.xnet.com/~blatura/linapp6.html
Es gibt viele Editoren, die wie eine IDE arbeiten können: emacs
und
jed
zum Beispiel haben auch Syntax Highlighting, automatische
Einrückung und so weiter.
Wenn man unbedingt eine IDE wie unter den Borlandprodukten haben will, kann
man sich z.B. die Pakete rhide
von
sunsite.unc.edu:/pub/Linux/devel/debuggers/
oder xwpe
von
sunsite.unc.edu:/pub/Linux/apps/editors/
anschauen. Es wird
Ihnen wahrscheinlich gefallen.