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
.bash_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, welche 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 mit seinem Dateinamen 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; Informationen findet man
dazu in Matt Welsh's englischem Buch oder einem anderen Buch über Linux/UNIX.
Zum vi
daher nur soviel:
i
eingeben, dann den Text.x
.vi
ohne sichern, <ESC> eingeben, dann
:q!
.:wq
.i
.:w
.Ein guter Editor für Anfänger ist joe
: Wenn man ihn mit jstar
aufruft, kennt er dieselben Tastenkombinationen wie der DOS/Windows Editor.
jed
im WordStar oder IDE Modus ist noch besser. Im Abschnitt
Wo es weitere Programme gibt wird beschrieben wo man die
Editoren herbekommt (falls sie nicht ohnehin Bestandteil der Distribution sind).
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`" # Verwendet Ausgabe des Kommandos
echo "Mein Name ist $0" # vordefinierte Variablen
echo "Dem Script 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 '
VERZE=0 ; DATEIEN=0
for datei in `ls .` ; do
if [ -d ${datei} ] ; then # wenn datei ein Verzeichnis ist
VERZE=`expr $VERZE + 1` # VERZE = VERZE + 1
elif [ -f ${datei} ] ; then
DATEIEN =`expr $DATEIEN + 1`
fi
case ${datei} in
*.gif|*jpg) echo "${datei}: Bilddatei" ;;
*.txt|*.tex) echo "${datei}: Textdatei" ;;
*.c|*.f|*.for) echo "${datei}: Quelldatei" ;;
*) echo "${datei}: allgemeine Datei" ;;
esac
done
echo "es gibt ${VERZE} Verzeichnisse und ${DATEIEN} 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. Es gibt jedoch zur Programmierung von Programmen auch eine große Anzahl anderer Sprachen, z.B. Java, FORTRAN, Pascal, Lisp, Basic, Perl, awk u.v.a.
Hier sind ein paar Hilfestellungen für die, die C bereits beherrschen und von
Programmen wie Turbo oder Visual C++ verwöhnt wurden. Der C-Compiler unter Linux
heißt gcc
und hat keines 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 Kommandozeilencompiler der jedoch sehr leistungsfähig
und effizient ist. Um das Standard-Programm 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 zu geben (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 matheprog matheprog.c -lm
(Der -l<libname>
Parameter veranlaßt gcc
die Bibliothek
/usr/lib/lib<libname>.so
hinzuzulinken; also linkt -lm
/usr/lib/libm.so
).
So weit so gut. Wenn das Programm jedoch aus mehreren Quelldateien besteht, wird
der Einsatz des Hilfsprogramms 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
Compiler Auskunft über die Abhängigkeiten zwischen den Quell- und Objektdateien
gibt. In unserem Falle:
# Dies ist ein Makefile zum Kompilieren von calc.c
# <TAB> muß 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 make
eingeben um das
Programm zu kompilieren. Alternativ kann man es auch z.B. unter
calc.mak
und dann make -f calc.mak
eingeben. Auch hier wieder
MSL.
Man kann sich bezüglich der C-Funktionen Hilfe anzeigen lassen. Sie werden in den oben erwähnten »man pages«, Abschnitt 3, beschrieben. Beispiel:
$ man 3 printf
Zum debuggen der Programme gibt's den gdb
. info gdb
gibt mehr
Informationen dazu aus.
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 Window zu
verwenden, sowie viele andere.
Viele Editoren arbeiten gleichzeitig als IDE: emacs
und jed
z.B. bieten Syntax-Highlighting, automatische Einrückungen usw. Man kann sich
auch das Packet rhide
via ftp von
metalab.unc.edu:/pub/Linux/devel/debuggers/
besorgen. Es ist der Borland IDE nachempfunden, und Sie werden es wahrscheinlich
mögen.
Wer noch einen Schritt weitergehen möchte, kann sich an die Programmierung von X Window heranwagen (es ist nicht so schwer). Auch hier gibt es viele Bibliotheken, welche die Programmierung unter X11 vereinfachen. Die wichtigsten Plätze denen man einen Besuch abstatten sollte sind die des GTK+, www.gtk.org, und Qt, www.troll.no.
Gtk+ ist eine auf C basierende Widgetbibliothek, die ursprünglich für das Grafikpaket »The GIMP« ( www.gimp.org) geschrieben wurde und auf der die grafische Umgebung GNOME basiert. Qt dagegen basiert auf C++ und ist die Grundlage für KDE. Wahrscheinlich wird man eine der beiden Bibliotheken verwenden.
Einige der besten Werkzeuge für eine visuelle Programmierung sind z.B. Kdevelop für Qt, www.kdevelop.org, und Glade für Gtk+, glade.pn.org. Mehr Informationen dazu gibt es unter
www.free-soft.org/guitool
Wäre es nicht gut Programme zu schreiben, die sich mit dem gcc
problemlos unter Linux und Windows kompilieren ließen? Zum Zeitpunkt
des Schreibens dieses Artikels gibt es einige Widgetbibliotheken, die eine mehr
oder weniger stabile Multiplattform-Programmierung bieten. Was Stabilität und
Vollständigkeit angeht dürfte wohl FLTK, das »Fast Light Tool Kit«, unter
www.fltk.org
die erste Wahl sein. Es ist erstaunlich klein, schnell und stabil. Es hat auch
einen halb-visuellen Builder mit Namen »Fluid«. Es gibt auch eine Multiplatform-
Version der Qt-Bibliothek, aber dafür wollen die Autoren Bares sehen.