This file is indexed.

/usr/share/doc/HOWTO/de-html/DE-DOS-nach-Linux-HOWTO-2.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
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
<!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 : Dateien und Programme</TITLE>
 <LINK HREF="DE-DOS-nach-Linux-HOWTO-3.html" REL=next>
 <LINK HREF="DE-DOS-nach-Linux-HOWTO-1.html" REL=previous>
 <LINK HREF="DE-DOS-nach-Linux-HOWTO.html#toc2" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-DOS-nach-Linux-HOWTO-3.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-DOS-nach-Linux-HOWTO-1.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-DOS-nach-Linux-HOWTO.html#toc2"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="s2">2.</A> <A HREF="DE-DOS-nach-Linux-HOWTO.html#toc2">Dateien und Programme</A></H2>



<H2><A NAME="ss2.1">2.1</A> <A HREF="DE-DOS-nach-Linux-HOWTO.html#toc2.1">Dateien: Grundlegende Begriffe</A>
</H2>


<P>Die Struktur des Filesystems von Linux ist f&uuml;r den Benutzer nach au&szlig;en hin
der von DOS recht &auml;hnlich. Mit Struktur des Filesystems ist hier die
Anordnung von Verzeichnissen und der darin enthaltenen Dateien gemeint.
Die Namen f&uuml;r Verzeichnisse und Dateien gehorchen bestimmten Regeln,
Dateien werden in Verzeichnissen abgelegt, es gibt ausf&uuml;hrbare Dateien und
diese haben oft auch wie unter DOS Kommandozeilenparameter. Dar&uuml;ber hinaus
kann man auch Platzhalter, Umlenkung und Piping verwenden. Es gibt jedoch
gegen&uuml;ber DOS ein paar Unterschiede:</P>
<P>Unter DOS sind die Dateinamen in der 8.3-Form, d.h. wie etwa
<CODE>NICHGENG.TXT</CODE>. Unter Linux sind die Regeln f&uuml;r Dateinamen bei
Benutzung des UMSDOS- oder EXT2-Filesystems wesentlich liberaler,
vergleichbar etwa mit Win95. Es k&ouml;nnen bis zu 255 Zeichen verwandt
werden, und der Punkt kann beliebig oft auftreten. Ein Beispiel f&uuml;r einen
Dateinamen unter Linux ist z.B. <CODE>Das_ist.ein.SEHR_langer.dateiname</CODE>.
Man beachte, da&szlig; hier sowohl gro&szlig;e als auch kleine Buchstaben verwandt
werden, denn es wird auch hier zwischen gro&szlig;en und kleinen Buchstaben im
Gegensatz zu DOS unterschieden. Das hei&szlig;t, <CODE>FILENAME.tar.gz</CODE> und
<CODE>filename.tar.gz</CODE> sind zwei unterschiedliche Dateien. So ist <CODE>ls</CODE> ein
Kommando, <CODE>LS</CODE> dagegen wird h&ouml;chst wahrscheinlich nur eine Fehlermeldung
bringen.</P>
<P>Windows 95 Nutzer werden wahrscheinlich Leerzeichen innerhalb der
Dateinamen verwenden wollen. Wenn ein Name solche enth&auml;lt (was nicht sehr
empfehlenswert ist), mu&szlig; er immer wenn er verwendet wird in
Anf&uuml;hrungszeichen eingeschlossen werden. Beispielsweise:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ # das folgende Kommando legt ein Verzeichnis namens "Meine alten Dateien"
$ mkdir "Meine alten Dateien"
$ ls
Meine alten Dateien     bin     tmp
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Einige Zeichen k&ouml;nnen zwar verwendet werden, sollten es aber nicht, wie
zum Beispiel <CODE>!*$&amp;</CODE>. Ich will nicht erkl&auml;ren wie man das
macht, denn es ist wirklich keine gute Idee. Diese Zeichen haben alle eine
spezielle Bedeutung f&uuml;r die Shell, und wenn sie in Dateinamen auftauchen,
kann das unerwartete Ergebnisse zeitigen wenn man nicht genau aufpa&szlig;t.</P>
<P>F&uuml;r Programme gibt es keine zwangsweisen Erweiterungen wie .exe .com oder
.bat f&uuml;r Batchdateien. Ausf&uuml;hrbare Programme werden beim Auflisten mit dem
Kommando <CODE>ls -F</CODE> mit einem Sternchen '<CODE>*</CODE>' am Ende des Namens
versehen, zum Beispiel:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ ls -F
Brief_an_Joe  cindy.jpg  cjpg*  Ein_Verzeichnis/  mein_1._script* alt~
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Hier sind die Dateien <CODE>cjpg</CODE> und <CODE>mein_1._script</CODE> ausf&uuml;hrbar, d.h.
Programme. Man beachte, da&szlig; der Stern <EM>nicht</EM> Teil der Dateinamen ist,
sondern nur zur Kennzeichnung als ausf&uuml;hrbar beim Auflisten dient. Unter
DOS enden Backup-Dateien &uuml;blicherweise auf .BAK, w&auml;hrend sie unter Linux
im allgemeinen mit einer Tilde '<CODE>~</CODE>' enden. Wenn Linux
entsprechend konfiguriert ist, k&ouml;nnen Auflistungen von Verzeichnissen auch
farbig gekennzeichnet werden. Namen von Programmen k&ouml;nnten z.B. rot
ausgegeben werden, Verzeichnisse blau und Bilder lila. Dateien, deren Name
mit einem Punkt beginnt, werden als versteckte Dateien behandelt. Sie
werden bei einem normalen Auflisten mit <CODE>ls</CODE> nicht angezeigt. Die Datei
<CODE>.Ich.bin.eine.versteckte.Datei</CODE> wird also normalerweise bei einer
Auflistung ignoriert, erst ein <CODE>ls -a</CODE> bringt sie zum Vorschein.</P>
<P>Optionen und Schalter werden unter DOS als <CODE>/schalter</CODE> angegeben,
unter Linux mit <CODE>-schalter</CODE> oder <CODE>--schalter</CODE>. Beispiel: <CODE>dir /s</CODE>
wird zu <CODE>ls -R</CODE>. Man beachte, da&szlig; viele DOS-Programme Schalter nach
UNIX-Art verwenden, so z.B. <CODE>PKZIP</CODE> oder <CODE>ARJ</CODE>.</P>
<P>Wer will, kann jetzt mit dem Abschnitt 
<A HREF="#Files">&Uuml;bertragen von Kommandos von DOS nach Linux</A> weitermachen, aber es ist n&uuml;tzlich, sich
vorher noch kurz ein paar Dinge anzuschauen, die es nicht in DOS oder
Windows gibt.</P>

<H2><A NAME="ss2.2">2.2</A> <A HREF="DE-DOS-nach-Linux-HOWTO.html#toc2.2">Links</A>
</H2>


<P>UNIX hat noch einen weiteren Dateityp, der bei DOS nicht existiert. Es ist
der Link. Ein Link ist eigentlich keine richtige Datei, sondern nur eine
Art Verweis auf eine andere, bereits existierende Datei oder Verzeichnis.
Es gibt zwei Typen von Links, den Hardlink und den symbolischen Link. Es
soll hier nicht weiter auf den Unterschied zwischen beiden eingegangen
werden, da sie sich &auml;u&szlig;erlich f&uuml;r den Nutzer kaum unterscheiden.
Heutzutage werden &uuml;blicherweise vorwiegend symbolische Links eingesetzt, da
sie etwas flexibler sind. Am ehesten vergleichbar sind symbolische Links
mit den Win95 Shortcuts. Beispiele f&uuml;r symbolische Links sind z.B. das
Verzeichnis <CODE>/usr/X11</CODE> welches ein Link auf <CODE>/usr/X11R6</CODE> ist
und <CODE>/dev/modem</CODE>, welches entweder auf <CODE>/dev/cua0</CODE> oder
<CODE>/dev/cua1</CODE> zeigt.</P>
<P>Um einen symbolischen Link anzulegen gibt man ein:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ ln -s &lt;Datei_oder_Verzeichnis> &lt;Linkname>
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Beispiele:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ ln -s /usr/doc/g77/DOC g77manual.txt
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Jetzt kann man sich auf <CODE>g77manual.txt</CODE> beziehen anstelle von
<CODE>/usr/doc/g77/DOC</CODE>.
Links werden bei der Auflistung eines Verzeichnisses wie folgt angezeigt:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ ls -F
g77manual.txt@
$ ls -l
(verschiedene Angaben zur Datei ...)   g77manual.txt -> /usr/doc/g77/DOC
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H2><A NAME="Permissions"></A> <A NAME="ss2.3">2.3</A> <A HREF="DE-DOS-nach-Linux-HOWTO.html#toc2.3">Rechte und Eigent&uuml;mer </A>
</H2>


<P>Dos-Dateien haben folgende Attribute: A (archivieren), H (versteckt), R (nur
lesbar) und S (System). Nur H und R sind unter Linux sinnvoll: H sind
Dateien die mit einem Punkt anfangen, und R wird sp&auml;ter besprochen.</P>
<P>Unter UNIX besitzt jede Datei <EM>Rechte</EM> und einen Eigent&uuml;mer, der wiederum
zu einer <EM>Gruppe</EM> geh&ouml;rt. Hier ein Beispiel:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ ls -l /bin/ls
-rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Das erste Feld enth&auml;lt die Rechte der Datei <CODE>/bin/ls</CODE>, die <CODE>root</CODE>
geh&ouml;rt, sowie der Gruppe <CODE>bin</CODE>. Die Zeichenfolge <CODE>-rwxr-xr-x</CODE> bedeutet
von links nach rechts:</P>
<P><CODE>-</CODE> ist der Dateityp (- = normale Datei, d = Verzeichnis, l = Link,
usw.); <CODE>rwx</CODE> sind die Rechte f&uuml;r den Eigent&uuml;mer der Datei
(lesen,schreiben,ausf&uuml;hren); <CODE>r-x</CODE> sind die Rechte f&uuml;r die Gruppe des
Eigent&uuml;mers (lesen,ausf&uuml;hren) - auf das Prinzip von Gruppen soll hier nicht
weiter eingegangen werden, man kann als Anf&auml;nger auch sehr gut ohne das
auskommen ;-) - ; <CODE>r-x</CODE> sind die Rechte f&uuml;r den Rest der Nutzer
(lesen,ausf&uuml;hren). F&uuml;r die Leute, bei denen Englisch nicht die zweite
Muttersprache ist, hier die englische Bedeutung der K&uuml;rzel: r - Read,
w - Write, x - eXecute, sowie beim Dateityp d f&uuml;r Directory.
Der Rest der Ausgabe soll hier nicht weiter behandelt
werden, wer N&auml;heres wissen will kann in den einschl&auml;gigen B&uuml;chern
nachlesen (z.B. im Buch von Matt Welsh).</P>
<P>Im Falle unseres <CODE>/bin/ls</CODE> kann man also die Datei nicht ver&auml;ndern,
es sei denn, man ist <CODE>root</CODE>: alle anderen haben nicht die notwendigen
Schreibrechte. Das Kommando, um die Rechte einer Datei zu &auml;ndern, ist:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ chmod &lt;werXrecht> &lt;datei>
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>wobei <EM>wer</EM> f&uuml;r den steht, dessen Rechte ge&auml;ndert werden, also entweder
<CODE>u</CODE> (user, der Eigent&uuml;mer), <CODE>g</CODE> (group, die Gruppe), <CODE>o</CODE> (other,der
Rest) oder <CODE>a</CODE> (all, alle Nutzer), <EM>X</EM> ist entweder <CODE>+</CODE>, <CODE>-</CODE>
oder <CODE>=</CODE>, je nachdem, ob das Recht hinzugef&uuml;gt oder weggenommen wird,
bzw. auf den angegebenen Wert gesetzt wird, und <EM>recht</EM> ist das Recht, was
ge&auml;ndert wird, also entweder <CODE>r</CODE> (read), <CODE>w</CODE> (write), oder <CODE>x</CODE>
(execute).</P>
<P>Beispiele:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ chmod u+x file
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>setzt die Ausf&uuml;hrungsrechte f&uuml;r den Eigent&uuml;mer.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ chmod go-wx file
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>nimmt das Schreibrecht und das Ausf&uuml;hrungsrecht f&uuml;r alle au&szlig;er den
Eigent&uuml;mer weg.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ chmod ugo+rwx file
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>setzt f&uuml;r alle Schreib-, Lese- und Ausf&uuml;hrungsrechte. Man kann hier auch
die Folge <EM>ugo</EM> einfach durch <EM>a</EM> ersetzen.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ chmod u+s file
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>dieses setzt das sogenannte (oben nicht erw&auml;hnte) <EM>setuid</EM> oder <EM>suid</EM>
Recht (meistens setuid-Bit genannt). Damit wird eine Datei, wenn sie
ausf&uuml;hrbar ist, automatisch beim Aufruf mit den Rechten des
<EM>Eigent&uuml;mers</EM> ausgef&uuml;hrt und nicht wie sonst &uuml;blich mit den Rechten des
Aufrufers. Geh&ouml;rt die Datei z.B. <CODE>root</CODE>, wird sie mit <CODE>root</CODE>-Rechten
ausgef&uuml;hrt und hat somit vollen Zugriff auf das System (und kann bei einem
Fehler auch entsprechenden Schaden anrichten). Also Vorsicht mit dem
Setzen des suid-Bits. </P>

<P>Ein k&uuml;rzerer Weg zur Angabe von Rechten ist die Angabe von Zahlen:
<CODE>rwxr-xr-x</CODE> kann z.B. als 755 angegeben werden. Dabei entspricht jeder
Buchstabe einem Bit: <CODE>---</CODE> ist 0, <CODE>--x</CODE> ist 1, <CODE>-w-</CODE> ist 2,
<CODE>-wx</CODE> ist 3... . Es ist zu Beginn etwas gew&ouml;hnungsbed&uuml;rftig, aber nach
und nach bekommt man Routine mit diesen Werten.</P>
<P>Normalerweise darf nur der die Rechte einer Datei &auml;ndern, der auch ihr
Eigent&uuml;mer ist. <CODE>Root</CODE> jedoch als sogenannter Superuser kann die Rechte
aller Dateien &auml;ndern. Zum Kommando <CODE>chmod</CODE> gibt es noch weiteres zu sagen,
das aber nicht in diesen Rahmen pa&szlig;t. Also --- MSL.</P>

<H2><A NAME="Files"></A> <A NAME="ss2.4">2.4</A> <A HREF="DE-DOS-nach-Linux-HOWTO.html#toc2.4">&Uuml;bertragen von Kommandos von DOS nach Linux </A>
</H2>


<P>Auf der linken Seite ist das DOS Kommando aufgef&uuml;hrt, auf der Rechten das
Linux-Pendent</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
COPY:           cp
DEL:            rm
MOVE:           mv
REN:            mv
TYPE:           more, less, cat
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Umleitungs- und Pipingoperatoren: <CODE> &lt; > >> |</CODE></P>
<P>Platzhalter: <CODE>* ?</CODE></P>
<P><CODE>nul:   /dev/null</CODE></P>
<P><CODE>prn, lpt1:     /dev/lp0 or /dev/lp1; lpr</CODE></P>
<P>Beispiele:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
DOS                                     Linux
________________________________________________________________

C:\GUIDO>copy joe.txt joe.doc           $ cp joe.txt joe.doc
C:\GUIDO>copy *.* total                 $ cat * > total
C:\GUIDO>copy fractals.doc prn          $ lpr fractals.doc
C:\GUIDO>del temp                       $ rm temp
C:\GUIDO>del *.bak                      $ rm *~
C:\GUIDO>move paper.txt tmp\            $ mv paper.txt tmp/
C:\GUIDO>ren paper.txt paper.asc        $ mv paper.txt paper.asc
C:\GUIDO>print letter.txt               $ lpr letter.txt
C:\GUIDO>type letter.txt                $ more letter.txt
C:\GUIDO>type letter.txt                $ less letter.txt
C:\GUIDO>type letter.txt > nul          $ cat letter.txt > /dev/null
nicht vorhanden                         $ more *.txt *.asc
nicht vorhanden                         $ cat section*.txt | less
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Bemerkungen:</P>
<P>Der * ist unter Linux intelligenter: * pa&szlig;t auf alle Dateien, au&szlig;er auf
die versteckten, *.* pa&szlig;t nur auf solche Dateien, die ein '.' in der Mitte
oder am Ende haben, p*r pa&szlig;t auf `peter' und `pfeiffer' (mit 3 f ;-), *c*
pa&szlig;t auf `picken', `pack.txt', `mac' und `c' selbst.</P>
<P>Wenn man <CODE>more</CODE> benutzt, kann man mit <CODE>LEERTASTE</CODE> in der Datei
weiterbl&auml;ttern, mit 'q' oder CTRL-C beendet man es. <CODE>less</CODE> ist etwas
intuitiver und l&auml;&szlig;t einen mit den Cursortasten durch die Datei wandern.
Manchmal ist <CODE>more</CODE> einfach nur ein Link auf <CODE>less</CODE>, so da&szlig; sich
beide gleich verhalten.</P>
<P>Es gibt kein <CODE>UNDELETE</CODE>, also <EM>zweimal &uuml;berlegen</EM> bevor man
etwas l&ouml;scht.</P>
<P>Zus&auml;tzlich zu den DOS-&uuml;blichen <CODE>&lt; &gt; &gt;&gt;</CODE> hat Linux noch
<CODE>2&gt;</CODE> um Fehlermeldungen umzulenken (<CODE>stderr</CODE>). Dar&uuml;ber hinaus
lenkt <CODE>2&gt;&amp;1</CODE> <CODE>stderr</CODE> nach <CODE>stdout</CODE> um und
<CODE>1&gt;&amp;2</CODE> <CODE>stdout</CODE> nach <CODE>stderr</CODE>.</P>
<P>Linux hat noch einen anderen Platzhalter: das <CODE>[]</CODE>. Verwendung:
<CODE>[abc]*</CODE> pa&szlig;t z.B. auf alle Dateien, die auf a, b oder c beginnen;
<CODE>*[I-N,1,2,3]</CODE> pa&szlig;t auf alle Dateien, die mit I, J, K, L, M, N, 1, 2
oder 3 enden.</P>
<P>Es gibt standardm&auml;&szlig;ig kein DOS-&auml;hnliches <CODE>RENAME</CODE>; d.h. <CODE>mv</CODE> *.xxx
*.yyy funktioniert nicht. Es gibt jedoch ein Programm namens <CODE>mmv</CODE>
(Multiple MoVe), das Analoges leistet. Es ist in vielen Distributionen
bereits enthalten. Um die Shell daran zu hindern, den Platzhalter selber
zu interpretieren, mu&szlig; der erste Dateiname in Anf&uuml;hrungszeichen
eingeschlossen werden. Beispiel:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# mmv '*.xxx' #1.yyy
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>#1 wird hierbei durch den zum ersten (und in diesem Falle einzigen)
Platzhalter in <CODE>*.xxx</CODE> passenden String ersetzt. Es gibt noch ein paar
andere kleine Unterschiede zu <CODE>RENAME</CODE>, also hier wieder mal --- MSL.</P>
<P>Man benutze <CODE>cp -i</CODE> und <CODE>mv -i</CODE> , um gewarnt zu werden, wenn
eine Datei dadurch &uuml;berschrieben w&uuml;rde;</P>

<H2><A NAME="ss2.5">2.5</A> <A HREF="DE-DOS-nach-Linux-HOWTO.html#toc2.5">Programme starten: Multitasking und Sessions</A>
</H2>


<P>Um ein Programm auszuf&uuml;hren, gibt man einfach den Namen wie unter DOS ein.
Falls das Verzeichnis (Abschnitt 
<A HREF="DE-DOS-nach-Linux-HOWTO-3.html#Directories">Verzeichnisse</A>), in dem sich das Programm befindet, im Pfad
<CODE>PATH</CODE> (Abschnitt 
<A HREF="DE-DOS-nach-Linux-HOWTO-6.html#System Initialization">Der Systemstart</A>) ist, wird das Programm starten. Unterschied zu DOS: ein
Programm, das sich im aktuellen Verzeichnis befindet, wird <EM>nicht</EM>
gefunden - es sei denn, das aktuelle Verzeichnis ist als '.' explizit im
Pfad enthalten. Wenn nicht, hilft ein <CODE>./programm</CODE>. Hinweis: das
aktuelle Verzeichnis ist unter UNIX/Linux oft am Ende des Pfades
eingetragen (aus Gr&uuml;nden der Systemsicherheit), d.h. es werden erst alle
anderen Verzeichnisse nach <CODE>programm</CODE> durchsucht und zum Schlu&szlig; erst
das aktuelle Verzeichnis. Wenn man z.B. ein kleines Progr&auml;mmchen
geschrieben hat und es <CODE>test</CODE> nennt, wird, wenn man es mit <CODE>test</CODE>
aufruft und nicht mit <CODE>./test</CODE>, zuerst das UNIX-Kommando <CODE>test</CODE>
selbigen Namens gefunden (oder die Shell-interne Funktion, je nach Shell)
und ausgef&uuml;hrt und nicht das eigene Programm im aktuellen Verzeichnis. Das
f&uuml;hrt oft zu langem Gr&uuml;beln, bis man endlich merkt, da&szlig; das falsche
Programm aufgerufen wurde, denn <CODE>test</CODE> ohne Parameter gibt keinerlei
Meldungen o.&auml;. aus. Auf diesen "Trick" sind schon Generationen von
Einsteigern hereingefallen und werden wahrscheinlich auch noch weitere
Generationen hereinfallen.</P>
<P>Hier das Aussehen eines typischen Kommandos:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ kommando -s1 -s2 ... -sn par1 par2 ... parn &lt; input > output
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>wobei <CODE>-s1</CODE>, ..., <CODE>-sn</CODE> die Programmschalter sind und
<CODE>par1</CODE>, ..., <CODE>parn</CODE> die Parameter. Der Rest sind die Umlenkungen,
d.h. das Programm erh&auml;lt seine Eingaben aus der Datei <CODE>input</CODE> und
schreibt die Ausgaben in die Datei <CODE>output</CODE>. Es m&uuml;ssen nat&uuml;rlich nicht
immer alle Teile enthalten sein. Mehrere Kommandos hintereinander k&ouml;nnen so
eingegeben werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ kommando1 ; kommando2 ; ... ; kommandon
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Das ist alles, was man braucht, um ein Kommando aufzurufen. Es gibt jedoch
dar&uuml;ber hinaus M&ouml;glichkeiten, die Linux zus&auml;tzlich zu den von DOS bekannten
bietet. Einer der Gr&uuml;nde die f&uuml;r Linux sprechen ist es, da&szlig; es ein
Betriebsystem mit Multitasking ist, d.h. es kann mehrere Programme (ab
jetzt Prozesse genannt) gleichzeitig ausf&uuml;hren. Man kann einen Proze&szlig; im
Hintergrund starten und mit einem anderen weiterarbeiten. Dar&uuml;ber hinaus
bietet Linux auch mehrere Sitzungen (Sessions) gleichzeitig an. Es ist so,
als ob man an mehreren Rechnern arbeiten w&uuml;rde.</P>
<P>Um zu den Sessions 1..6 zu wechseln:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ ALT-F1 ... ALT-F6
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wenn man gerade unter X-Windows ist, benutzt man statt dessen CTRL-ALT-Fn.</P>
<P>Um eine neue Session zu starten ohne die aktuelle zu verlassen
(z.B. um als anderer Nutzer mit anderen Rechten weiterzuarbeiten):</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ su - &lt;loginname>
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Beispiel:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ su - root
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Dieses ist n&uuml;tzlich wenn man etwas erledigen mu&szlig;, was normalerweise nur
<CODE>root</CODE> darf, z.B. eine Floppy mounten
(siehe 
<A HREF="DE-DOS-nach-Linux-HOWTO-4.html#Floppies">Floppies, Harddisks, und &Auml;hnliches</A>). </P>
<P>Um eine Session zu beenden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ exit
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wenn es noch angehaltene Jobs gibt (siehe unten), wird man gewarnt.</P>
<P>Um einen Proze&szlig; im Vordergrund zu starten:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ progname [-schalter] [parameter] [&lt; input] [> output]
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Um einen Proze&szlig; im Hintergrund zu starten, f&uuml;gt man ein
Kaufmanns-Und am Ende der Zeile hinzu: '<CODE>&amp;</CODE>' </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ progname [-schalter] [parameter] [&lt; input] [> output] &amp;
[1] 123
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Die Shell gibt dem Proze&szlig; eine Jobnummer (z.B. <CODE>[1]</CODE>; siehe unten) und
eine PID (ProzessID), 123 in unserem Beispiel.</P>
<P>Um alle Prozesse auflisten zu lassen:
<BLOCKQUOTE><CODE>
<PRE>
$ ps -a
</PRE>
</CODE></BLOCKQUOTE>

Dieses gibt eine Liste aller gerade laufenden Prozesse aus. </P>
<P>Um einen Proze&szlig; zu beenden:
<BLOCKQUOTE><CODE>
<PRE>
$ kill &lt;PID>
</PRE>
</CODE></BLOCKQUOTE>

Dies ist n&uuml;tzlich, um einen Proze&szlig; zu beenden, wenn man entweder
nicht wei&szlig;, wie man das Programm "vorschriftsm&auml;&szlig;ig" beendet, oder diese
eigentlich vorgesehene Methode nicht mehr funktioniert.
Manchmal kann ein Proze&szlig; nur noch durch folgendes Kommando beendet
werden:
<BLOCKQUOTE><CODE>
<PRE>
$ kill -9 &lt;PID>
</PRE>
</CODE></BLOCKQUOTE>

kill -9 beendet jeden Proze&szlig;, da dieses Signal nicht vom
Proze&szlig; abgefangen werden kann, d.h. der Proze&szlig; wird vom Betriebssystem
zwangsweise rausgeschmissen.</P>
<P>Dar&uuml;ber hinaus erlaubt es die Shell, einen Proze&szlig; zu stoppen oder
zeitweise anzuhalten, einen laufenden Proze&szlig; in den Hintergrund zu
schicken, oder aus dem Hintergrund in den Vordergrund zu holen. In diesem
Zusammenhang werden die Prozesse <EM>Jobs</EM> genannt.</P>
<P>Um sich die laufenden Jobs der aktuellen Shell anzuschauen:
<BLOCKQUOTE><CODE>
<PRE>
$ jobs
</PRE>
</CODE></BLOCKQUOTE>

hierbei werden Jobs durch ihre Nummer und nicht durch ihre PID
gekennzeichnet.</P>
<P>Um einen im Vordergrund laufenden Proze&szlig; anzuhalten (funktioniert
nicht immer, das Programm kann das explizit verhindern):
<BLOCKQUOTE><CODE>
<PRE>
$ CTRL-C
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Um einen im Vordergrund laufenden Proze&szlig; zeitweise anzuhalten
(dito):
<BLOCKQUOTE><CODE>
<PRE>
$ CTRL-Z
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Um einen vor&uuml;bergehend angehaltenen Proze&szlig; in den Hintergrund zu
schicken (dadurch wird er zu einem Job):
<BLOCKQUOTE><CODE>
<PRE>
$ bg &lt;job>
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Um einen Job in den Vordergrund zu bringen:
<BLOCKQUOTE><CODE>
<PRE>
$ fg &lt;job>
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Um einen Job zu beenden:
<BLOCKQUOTE><CODE>
<PRE>
$ kill &lt;%job>
</PRE>
</CODE></BLOCKQUOTE>

wobei &lt;job&gt; 1, 2, 3, ... sein kann. Mit diesen Kommandos kann man
Disketten formatieren, Archive komprimieren, Programme kompilieren,
Berechnungen ausf&uuml;hren usw. und trotzdem noch einen benutzbaren Prompt
haben. Man versuche das einmal mit DOS! Windows kennt zwar auch
Multitasking, jedoch ist das System meistens mit einem Programm bereits so
ausgelastet, da&szlig; es f&uuml;r ein sinnvolles Arbeiten mit einem weiteren kaum noch
reicht.</P>

<H2><A NAME="ss2.6">2.6</A> <A HREF="DE-DOS-nach-Linux-HOWTO.html#toc2.6">Programme via Netz auf anderen Rechnern ausf&uuml;hren</A>
</H2>


<P>Um ein Programm auf einem anderen Rechner auszuf&uuml;hren, dessen Adresse z.B.
<CODE>remote.bigone.edu</CODE> ist, gibt man ein:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ telnet remote.bigone.edu
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>nachdem man eingeloggt ist, kann man sein gew&uuml;nschtes Programm starten.
Nat&uuml;rlich mu&szlig; man einen Account (Zugangsberechtigung) auf dieser Maschine
haben. Wenn man X-Windows benutzt, kann man sogar ein X-Programm auf dem
anderen Rechner starten und sich die Ausgabe auf den eigenen Rechner
umlenken. Wenn <CODE>remote.bigone.edu</CODE> der entfernte Rechner ist und
<CODE>local.linux.box.de</CODE> der eigene Linuxrechner, mu&szlig; man folgendes
machen, um ein Programm auf <CODE>remote.bigone.edu</CODE> zu starten und es von
<CODE>local.linux.box.de</CODE> aus zu bedienen:</P>

<P>
<UL>
<LI> X11 auf <CODE>local.linux.box.de</CODE> starten, ebenso ein xterm oder
&Auml;quivalentes. Dort gibt man ein:

<BLOCKQUOTE><CODE>
<PRE>
$ xhost +remote.bigone.edu
$ telnet remote.bigone.edu
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI> nach dem einloggen auf dem entfernten Rechner:

<BLOCKQUOTE><CODE>
<PRE>
remote:$ DISPLAY=local.linux.box.de:0.0
remote:$ progname &amp;
</PRE>
</CODE></BLOCKQUOTE>


(anstelle von <CODE>DISPLAY...</CODE>, mu&szlig; man evtl. <CODE>setenv DISPLAY local.linux.box.de:0.0</CODE> eingeben. Das h&auml;ngt von der Shell auf dem
entfernten Rechner ab.)
</LI>
</UL>
</P>
<P>Und siehe da! <CODE>progname</CODE> startet jetzt auf <CODE>remote.bigone.edu</CODE> und
wird auf dem eigenen lokalen Rechner angezeigt. Man sollte jedoch
vorsichtig sein beim Versuch, dies &uuml;ber eine langsame Modemleitung o.&auml;. zu
machen. Bei so geringer Transferrate d&uuml;rfte ein sinnvolles Arbeiten kaum
m&ouml;glich sein. Daf&uuml;r gibt es eine spezielle Abart des X Windows, das
Low-Bandwidth X, das hier jedoch nicht n&auml;her besprochen werden soll.</P>

<HR>
<A HREF="DE-DOS-nach-Linux-HOWTO-3.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-DOS-nach-Linux-HOWTO-1.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-DOS-nach-Linux-HOWTO.html#toc2"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>