/usr/share/doc/HOWTO/de-html/DE-DOS-nach-Linux-HOWTO-7.html is in doc-linux-de 2003.10-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
<TITLE>Von DOS nach Linux HOWTO : Ein wenig Programmierung</TITLE>
<LINK HREF="DE-DOS-nach-Linux-HOWTO-8.html" REL=next>
<LINK HREF="DE-DOS-nach-Linux-HOWTO-6.html" REL=previous>
<LINK HREF="DE-DOS-nach-Linux-HOWTO.html#toc7" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-DOS-nach-Linux-HOWTO-8.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-DOS-nach-Linux-HOWTO-6.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-DOS-nach-Linux-HOWTO.html#toc7"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="s7">7.</A> <A HREF="DE-DOS-nach-Linux-HOWTO.html#toc7">Ein wenig Programmierung</A></H2>
<H2><A NAME="Shell Scripts"></A> <A NAME="ss7.1">7.1</A> <A HREF="DE-DOS-nach-Linux-HOWTO.html#toc7.1">Shell-Skripte: viel mehr als .BAT Dateien </A>
</H2>
<P>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
<CODE>profile</CODE> oder <CODE>.profile</CODE> 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.</P>
<P>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
<CODE>chmod +x <skripdatei></CODE> ausführbar machen. Man kann es dann wie jedes
andere Programm aufrufen.</P>
<P>Ein Hinweis: Der Systemeditor ist der <CODE>vi</CODE>, 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 <EM>Linux installation...</EM> (englisch) oder jedem anderen Buch über
Linux/UNIX. Es ist vielleicht sinnvoll, sich einen anderen Editor zu
besorgen bzw. zu installieren, z.B. <CODE>joe</CODE> oder <CODE>emacs</CODE> für X. Zum
<CODE>vi</CODE> nur soviel:</P>
<P>
<UL>
<LI> zum Text einfügen nach dem Start: 'i' eingeben, dann den Text;</LI>
<LI> verlassen des <CODE>vi</CODE> ohne sichern, <ESC> eingeben, dann ':q!'</LI>
<LI> verlassen und sichern, <ESC> eingeben, dann ':wq'</LI>
<LI> zum weitereditieren nach einem <ESC> wieder 'i'</LI>
<LI> zwischenspeichern, <ESC> eingeben, dann ':w'</LI>
</UL>
</P>
<P>Skripte für die <CODE>bash</CODE> 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:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
#!/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."
</PRE>
</CODE></BLOCKQUOTE>
</P>
<H2><A NAME="ss7.2">7.2</A> <A HREF="DE-DOS-nach-Linux-HOWTO.html#toc7.2">Kurzer Blick auf C</A>
</H2>
<P>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. .</P>
<P>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 <CODE>gcc</CODE> 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 <CODE>hello.c</CODE> zu kompilieren, gibt man ein:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ gcc hello.c
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Das ergibt eine ausführbare Datei namens <CODE>a.out</CODE>. Um dieser Datei gleich
einen anderen Namen geben zu lassen (z.B. hallo) gibt man ein
<BLOCKQUOTE><CODE>
<PRE>
$ gcc -o hallo hello.c
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Um eine Bibliothek an ein Programm zu linken, fügt man den Parameter
-l<libname> hinzu. Zum Linken der Mathebibliothek zum Beispiel:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ gcc -o mattteprog matteprog.c -lm
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>(Der <CODE>-l<libname></CODE> Parameter veranlaßt <CODE>gcc</CODE> die Bibliothek
<CODE>/usr/lib/lib<libname>.a</CODE> zu linken; also linkt <CODE>-lm</CODE>
<CODE>/usr/lib/libm.a</CODE>).</P>
<P>So weit so gut. Wenn das Programm jedoch aus mehreren Quelldateien besteht,
wird der Einsatz des Hilfsprogrammes <CODE>make</CODE> sinnvoll. Angenommen man hat
einen Parser für Ausdrücke geschrieben: die Quelldatei ist <CODE>parser.c</CODE>
und beinhaltet per #include zwei Headerdateien, <CODE>parser.h</CODE> und
<CODE>xy.h</CODE>. Jetzt will man die Routinen aus <CODE>parser.c</CODE> in einem Programm,
sagen wir <CODE>calc.c</CODE>, verwenden, welches seinerseits per #include
<CODE>parser.h</CODE> enthält. Ein ziemliches Durcheinander! Was muß man machen, um
<CODE>calc.c</CODE> zu kompilieren?</P>
<P>In diesem Falle schreibt man ein sogenanntes <CODE>makefile</CODE>, welches dem
Kompiler Auskunft über die Abhängigkeiten zwischen den Quell- und
Objektdateien gibt. In unserem Falle:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# 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.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Abspeichern als Datei <CODE>makefile</CODE> und eingeben</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ make
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>um das Programm zu kompilieren, oder als <CODE>calc.mak</CODE> speichern und
eingeben</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ make -f calc.mak
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P><CODE>make</CODE> sucht automatisch (wenn kein anderer Name per Option <CODE>-f</CODE>
angegeben wird) nach einer Datei namens <CODE>Makefile</CODE> oder <CODE>makefile</CODE> im
aktuellen Verzeichnis als Datei mit den Abhängigkeiten. Auch hier wieder
MSL.</P>
<P>Man kann sich bezüglich der C-Funktionen Hilfe anzeigen lassen. Sie sind im
Manual, Abschnitt 3 beschrieben. Beispiel:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ man 3 printf
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Darüber hinaus gibt es noch viele weitere Bibliotheken, die das
Programmieren erleichtern. Darunter sind z.B. <CODE>ncurses</CODE>, mit der man
Textmodus-Programme erstellen kann, <CODE>svgalib</CODE> 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.: </P>
<P>
<DL>
<DT><B>XForms</B><DD>
<P>
<BLOCKQUOTE><CODE>
<A HREF="ftp://einstein.phys.uwm.edu/pub/xforms">einstein.phys.uwm.edu/pub/xforms</A></CODE></BLOCKQUOTE>
</P>
<DT><B>MGUI</B><DD>
<P>
<BLOCKQUOTE><CODE>
<A HREF="http://www.volftp.vol.it/IT/IT/ITALIANI/MORELLO/index.htm">www.volftp.vol.it/IT/IT/ITALIANI/MORELLO/index.htm</A></CODE></BLOCKQUOTE>
</P>
<DT><B>LessTif</B><DD>
<P><CODE>
<A HREF="http://www.hungry.com/">www.hungry.com</A></CODE>: 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. </P>
<DT><B>Qt</B><DD>
<P><CODE>
<A HREF="http://www.troll.no/">www.troll.no</A></CODE>: Auf dieser Bibliothek basiert der
<A HREF="http://www.kde.org">KDE</A>, oben erwähnter Desktop, der alle
Chancen hat, der Standard unter Linux zu werden.</P>
</DL>
</P>
<P>Mehr Informationen über Bibliotheken und Programmiertools im allgemeinen
gibt es unter:
<BLOCKQUOTE><CODE>
<A HREF="http://www.xnet.com/~blatura/linapp6.html">http://www.xnet.com/~blatura/linapp6.html</A></CODE></BLOCKQUOTE>
</P>
<P>Es gibt viele Editoren, die wie eine IDE arbeiten können: <CODE>emacs</CODE> und
<CODE>jed</CODE> zum Beispiel haben auch Syntax Highlighting, automatische
Einrückung und so weiter.</P>
<P>Wenn man unbedingt eine IDE wie unter den Borlandprodukten haben will, kann
man sich z.B. die Pakete <CODE>rhide</CODE> von
<BLOCKQUOTE><CODE>
<A HREF="ftp://sunsite.unc.edu:/pub/Linux/devel/debuggers/">sunsite.unc.edu:/pub/Linux/devel/debuggers/</A></CODE></BLOCKQUOTE>
oder <CODE>xwpe</CODE>
von
<BLOCKQUOTE><CODE>
<A HREF="ftp://sunsite.unc.edu:/pub/Linux/apps/editors/">sunsite.unc.edu:/pub/Linux/apps/editors/</A></CODE></BLOCKQUOTE>
anschauen. Es wird
Ihnen wahrscheinlich gefallen.</P>
<HR>
<A HREF="DE-DOS-nach-Linux-HOWTO-8.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-DOS-nach-Linux-HOWTO-6.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-DOS-nach-Linux-HOWTO.html#toc7"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>
|