Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Vorwort
23
Vorwort des Gutachters – die Shell: Fluch oder Segen?
27
1 Einführung
29
1.1 Was sollten Sie als Leser wissen?
29
1.1.1 Zielgruppe
30
1.1.2 Notation
31
1.2 Was ist eine Shell?
32
1.3 Hauptanwendungsgebiet
35
1.3.1 Was ist ein Shellscript?
35
1.3.2 Vergleich mit anderen Sprachen
36
1.4 Kommando, Programm oder Shellscript?
38
1.4.1 Shell-eigene Kommandos (Builtin-Kommandos)
38
1.4.2 Aliase in der Shell
38
1.4.3 Funktionen in der Shell
39
1.4.4 Shellscripts (Shell-Prozeduren)
39
1.4.5 Programme (binär)
39
1.5 Die Shell-Vielfalt
40
1.5.1 ksh (Korn-Shell)
40
1.5.2 Bash (Bourne-Again-Shell)
41
1.5.3 zsh (Z-Shell)
41
1.5.4 ash (A-Shell)
41
1.5.5 rbash, rzsh (Restricted Shell)
41
1.5.6 tcsh (TC-Shell)
42
1.5.7 Welche Shell-Variante wird in diesem Buch verwendet?
42
1.5.8 rsh und ssh
44
1.6 Betriebssysteme
44
1.7 Crashkurs: einfacher Umgang mit der Kommandozeile
45
1.7.1 Grundlegende Befehle
45
1.7.2 Der Umgang mit Dateien
47
1.7.3 Der Umgang mit Verzeichnissen
51
1.7.4 Datei- und Verzeichnisnamen
55
1.7.5 Gerätenamen
56
1.7.6 Dateiattribute
56
1.8 Shellscripts schreiben und ausführen
59
1.8.1 Der Editor
59
1.8.2 Der Name des Shellscripts
60
1.8.3 Ausführen
61
1.8.4 Hintergrundprozess starten
64
1.8.5 Ausführende Shell festlegen
64
1.8.6 Kommentare
67
1.8.7 Stil
68
1.8.8 Ein Shellscript beenden
69
1.8.9 Testen und Debuggen von Shellscripts
71
1.8.10 Ein Shellscript, das ein Shellscript erstellt und ausführt
72
1.9 Vom Shellscript zum Prozess
74
1.9.1 Ist das Shellscript ein Prozess?
75
1.9.2 Echte Login-Shell?
76
1.10 Datenstrom
77
1.10.1 Ausgabe umleiten
78
1.10.2 Standardfehlerausgabe umleiten
79
1.10.3 Eingabe umleiten
82
1.10.4 Pipes
85
1.10.5 Ein T-Stück mit tee
87
1.10.6 Ersatzmuster (Wildcards)
89
1.10.7 Brace Extension (Bash und Korn-Shell only)
94
1.10.8 Muster-Alternativen (Bash und Korn-Shell only)
95
1.10.9 Tilde-Expansion (Bash und Korn-Shell only)
95
1.11 Empfehlung
97
1.12 Übungen
97
2 Variablen
99
2.1 Grundlagen
99
2.1.1 Zugriff auf den Wert einer Variablen
99
2.1.2 Variablen-Interpolation
100
2.2 Zahlen
105
2.2.1 Integer-Arithmetik (Bourne-Shell, Bash und Korn-Shell)
105
2.2.2 Integer-Arithmetik (Bash und Korn-Shell only)
107
2.2.3 bc – Rechnen mit Fließkommazahlen und mathematischen Funktionen
111
2.3 Zeichenketten
115
2.3.1 Stringverarbeitung
115
2.3.2 Erweiterte Funktionen für Bash und Korn-Shell
122
2.4 Quotings und Kommando-Substitution
127
2.4.1 Single und Double Quotings
127
2.4.2 Kommando-Substitution – Back Quotes
130
2.5 Arrays (Bash und Korn-Shell only)
132
2.5.1 Werte an Arrays zuweisen
133
2.5.2 Eine Liste von Werten an ein Array zuweisen (Bash)
134
2.5.3 Eine Liste von Werten an ein Array zuweisen (Korn-Shell)
134
2.5.4 Zugreifen auf die einzelnen Elemente eines Arrays
134
2.5.5 Assoziative Arrays
139
2.6 Variablen exportieren
140
2.7 Umgebungsvariablen eines Prozesses
145
2.8 Shell-Variablen
146
2.9 Automatische Variablen der Shell
153
2.9.1 Der Name des Shellscripts – $0
153
2.9.2 Die Prozessnummer des Shellscripts – $$
154
2.9.3 Der Beendigungsstatus eines Shellscripts – $?
155
2.9.4 Die Prozessnummer des zuletzt gestarteten Hintergrundprozesses – $!
155
2.9.5 Weitere vordefinierte Variablen der Shell
155
2.9.6 Weitere automatische Variablen für Bash und Korn-Shell
156
2.10 Übungen
159
3 Parameter und Argumente
161
3.1 Einführung
161
3.2 Kommandozeilenparameter $1 bis $9
161
3.3 Besondere Parameter
162
3.3.1 Die Variable $*
163
3.3.2 Die Variable $@
164
3.3.3 Die Variable $#
165
3.4 Der Befehl shift
166
3.5 Argumente und Leerzeichen
168
3.6 Argumente jenseits von $9
168
3.7 Argumente setzen mit set und Kommando-Substitution
170
3.8 getopts – Kommandozeilenoptionen auswerten
174
3.9 Vorgabewerte für Variablen
176
3.10 Aufgaben
180
4 Kontrollstrukturen
181
4.1 Bedingte Anweisung mit if
181
4.1.1 Kommandos testen mit if
183
4.1.2 Kommandoverkettung über Pipes mit if
185
4.2 Die else-Alternative für eine if-Verzweigung
189
4.3 Mehrfache Alternative mit elif
191
4.4 Das Kommando test
193
4.4.1 Ganze Zahlen vergleichen
194
4.4.2 Ganze Zahlen vergleichen mit let (Bash und Korn-Shell only)
197
4.4.3 Zeichenketten vergleichen
198
4.4.4 Zeichenketten vergleichen (Bash und Korn-Shell only)
203
4.5 Status von Dateien erfragen
205
4.6 Logische Verknüpfung von Ausdrücken
209
4.6.1 Der Negationsoperator !
210
4.6.2 Die UND-Verknüpfung (-a und &&)
211
4.6.3 Die ODER-Verknüpfung (-o und ||)
212
4.6.4 Klammerung und mehrere logische Verknüpfungen
213
4.7 Short Circuit-Tests – ergebnisabhängige Befehlsausführung
215
4.8 Die Anweisung case
218
4.8.1 Alternative Vergleichsmuster
220
4.8.2 case und Wildcards
222
4.8.3 case und Optionen
224
4.8.4 Neuerungen in der Bash 4.x
225
4.9 Schleifen
226
4.9.1 Die for-Schleife
227
4.9.2 Die while-Schleife
237
4.9.3 Die until-Schleife
241
4.10 Kontrollierte Sprünge
243
4.10.1 Der Befehl continue
244
4.10.2 Der Befehl break
246
4.11 Endlosschleifen
247
4.12 Aufgaben
249
5 Terminal-Ein- und -Ausgabe
251
5.1 Von Terminals zu Pseudo-Terminals
251
5.2 Ausgabe
253
5.2.1 Der echo-Befehl
254
5.2.2 print (Korn-Shell only)
259
5.2.3 Der Befehl printf
259
5.2.4 Der Befehl tput – Terminalsteuerung
263
5.3 Eingabe
268
5.3.1 Der Befehl read
268
5.3.2 (Zeilenweises) Lesen einer Datei mit read
270
5.3.3 Zeilenweise mit einer Pipe aus einem Kommando lesen (read)
272
5.3.4 Here-Dokumente (Inline-Eingabeumleitung)
273
5.3.5 Here-Dokumente mit read verwenden
277
5.3.6 Die Variable IFS
278
5.3.7 Arrays einlesen mit read (Bash und Korn-Shell only)
283
5.3.8 Shell-abhängige Anmerkungen zu read
285
5.3.9 Ein einzelnes Zeichen abfragen
285
5.3.10 Einzelne Zeichen mit Escape-Sequenzen abfragen
287
5.3.11 Passworteingabe
293
5.4 Umlenken mit dem Befehl exec
294
5.5 Filedeskriptoren
297
5.5.1 Einen neuen Filedeskriptor verwenden
298
5.5.2 Die Umlenkung <>
303
5.6 Named Pipes
304
5.7 Menüs mit select (Bash und Korn-Shell only)
307
5.8 Aufgaben
312
6 Funktionen
313
6.1 Definition
313
6.1.1 Definition (Bash und Korn-Shell only)
314
6.1.2 Funktionsaufruf
314
6.1.3 Funktionen exportieren
316
6.1.4 Aufrufreihenfolge
318
6.1.5 Who is who
318
6.1.6 Aufruf selbst bestimmen
319
6.1.7 Funktionen auflisten
320
6.2 Funktionen, die Funktionen aufrufen
320
6.3 Parameterübergabe
322
6.3.1 FUNCNAME (Bash only)
324
6.4 Rückgabewert aus einer Funktion
325
6.4.1 Rückgabewert mit return
326
6.4.2 Rückgabewert mit echo und einer Kommando-Substitution
327
6.4.3 Rückgabewert ohne eine echte Rückgabe (lokale Variable)
329
6.4.4 Funktionen und exit
330
6.5 Lokale contra globale Variablen
330
6.5.1 Lokale Variablen (Bash und Korn-Shell only)
333
6.6 alias und unalias
334
6.7 Autoload (Korn-Shell only)
337
6.8 Aufgaben
338
7 Signale
339
7.1 Grundlagen zu den Signalen
339
7.2 Signale senden – kill
344
7.3 Eine Fallgrube für Signale – trap
344
7.3.1 Einen Signalhandler (Funktion) einrichten
347
7.3.2 Mit Signalen Schleifendurchläufe abbrechen
350
7.3.3 Mit Signalen das Script beenden
351
7.3.4 Das Beenden der Shell (oder eines Scripts) abfangen
351
7.3.5 Signale ignorieren
353
7.3.6 Signale zurücksetzen
354
7.4 Aufgabe
355
8 Rund um die Ausführung von Scripts und Prozessen
357
8.1 Prozessprioritäten
357
8.2 Warten auf andere Prozesse
358
8.3 Hintergrundprozess wieder hervorholen
359
8.4 Hintergrundprozess schützen
360
8.5 Subshells
361
8.6 Mehrere Scripts verbinden und ausführen (Kommunikation zwischen Scripts)
363
8.6.1 Datenübergabe zwischen Scripts
363
8.6.2 Rückgabe von Daten an andere Scripts
365
8.6.3 Scripts synchronisieren
368
8.7 Jobverwaltung
370
8.8 Shellscripts zeitgesteuert ausführen
373
8.9 Startprozess- und Profildaten der Shell
378
8.9.1 Arten von Initialisierungsdateien
379
8.9.2 Ausführen von Profildateien beim Start einer Login-Shell
379
8.9.3 Ausführen von Profildateien beim Start einer Nicht-Login-Shell (Bash und Korn-Shell)
382
8.9.4 Zusammenfassung alle Profil- und Startup-Dateien
384
8.10 Ein Shellscript bei der Ausführung
385
8.10.1 Syntaxüberprüfung
386
8.10.2 Expansionen
386
8.10.3 Kommandos
386
8.11 Shellscripts optimieren
387
8.12 Aufgaben
390
9 Nützliche Funktionen
391
9.1 Der Befehl eval
391
9.2 xargs
394
9.3 dirname und basename
396
9.4 umask
397
9.5 ulimit (Builtin)
398
9.6 time
400
9.7 typeset
401
9.8 Aufgabe
402
10 Fehlersuche und Debugging
403
10.1 Strategien zum Vermeiden von Fehlern
403
10.1.1 Planen Sie Ihr Script
403
10.1.2 Testsystem bereitstellen
404
10.1.3 Ordnung ist das halbe Leben
404
10.2 Fehlerarten
407
10.3 Fehlersuche
408
10.3.1 Tracen mit set -x
409
10.3.2 Das DEBUG- und das ERR-Signal
411
10.3.3 Variablen und Syntax überprüfen
415
10.3.4 Eine Debug-Ausgabe hinzufügen
416
10.3.5 Debugging-Tools
417
11 Reguläre Ausdrücke und grep
419
11.1 Reguläre Ausdrücke – die Theorie
419
11.1.1 Elemente für reguläre Ausdrücke (POSIX-RE)
420
11.1.2 Zusammenfassung
423
11.2 grep
423
11.2.1 Wie arbeitet grep?
424
11.2.2 grep mit regulären Ausdrücken
425
11.2.3 grep mit Pipes
431
11.2.4 grep mit Optionen
432
11.2.5 egrep (extended grep)
435
11.2.6 fgrep (fixed oder fast grep)
436
11.2.7 rgrep
436
11.3 Aufgaben
436
12 Der Stream-Editor sed
437
12.1 Funktions- und Anwendungsweise von sed
437
12.1.1 Grundlegende Funktionsweise
437
12.1.2 Wohin mit der Ausgabe?
439
12.2 Der sed-Befehl
441
12.3 Adressen
441
12.4 Kommandos, Substitutionsflags und Optionen von sed
443
12.4.1 Das a-Kommando – Zeile(n) anfügen
447
12.4.2 Das c-Kommando – Zeilen ersetzen
448
12.4.3 Das d-Kommando – Zeilen löschen
449
12.4.4 Die Kommandos h, H, g, G und x – Arbeiten mit den Puffern
449
12.4.5 Das Kommando i – Einfügen von Zeilen
451
12.4.6 Das p-Kommando – Patternspace ausgeben
451
12.4.7 Das Kommando q – Beenden
453
12.4.8 Die Kommandos r und w
453
12.4.9 Das Kommando s – substitute
454
12.4.10 Das Kommando y
459
12.5 sed-Scripts
460
12.6 Aufgaben
463
13 awk-Programmierung
465
13.1 Einführung und Grundlagen von awk
465
13.1.1 History und Versionen von awk
466
13.1.2 Die Funktionsweise von awk
467
13.2 Aufruf von awk-Programmen
468
13.2.1 Grundlegender Aufbau eines awk-Kommandos
468
13.2.2 Die Kommandozeilen-Optionen von awk
470
13.2.3 awk aus der Kommandozeile aufrufen
471
13.2.4 awk in Shellscripts aufrufen
471
13.2.5 awk als eigenes Script ausführen
472
13.3 Grundlegende awk-Programme und -Elemente
473
13.3.1 Ausgabe von Zeilen und Zeilennummern
473
13.3.2 Felder
475
13.4 Muster (bzw. Adressen) von awk-Scripts
479
13.4.1 Zeichenkettenvergleiche
480
13.4.2 Vergleichsausdrücke
480
13.4.3 Reguläre Ausdrücke
483
13.4.4 Zusammengesetzte Ausdrücke
485
13.4.5 BEGIN und END
486
13.5 Die Komponenten von awk-Scripts
487
13.5.1 Variablen
488
13.5.2 Arrays
493
13.5.3 Operatoren
496
13.5.4 Kontrollstrukturen
503
13.6 Funktionen
508
13.6.1 Mathematische Funktionen
509
13.6.2 Funktionen für Zeichenketten
510
13.6.3 Funktionen für die Zeit
514
13.6.4 Systemfunktionen
517
13.6.5 Ausgabefunktionen
517
13.6.6 Eingabefunktion
518
13.6.7 Benutzerdefinierte Funktionen
521
13.7 Empfehlung
523
13.8 Aufgaben
524
14 Linux/UNIX-Kommandoreferenz
525
14.1 Kurzübersicht
526
14.2 Dateiorientierte Kommandos
535
14.2.1 bzcat – Ausgabe von bzip2-komprimierten Dateien
535
14.2.2 cat – Datei(en) nacheinander ausgeben
536
14.2.3 chgrp – Gruppe von Dateien oder Verzeichnissen ändern
536
14.2.4 cksum/md5sum/sum – eine Prüfsumme für eine Datei ermitteln
536
14.2.5 chmod – Zugriffsrechte von Dateien oder Verzeichnissen ändern
538
14.2.6 chown – Eigentümer von Dateien oder Verzeichnissen ändern
539
14.2.7 cmp – Dateien miteinander vergleichen
539
14.2.8 comm – zwei sortierte Textdateien miteinander vergleichen
539
14.2.9 cp – Dateien kopieren
540
14.2.10 csplit – Zerteilen von Dateien (kontextabhängig)
541
14.2.11 cut – Zeichen oder Felder aus Dateien herausschneiden
542
14.2.12 diff – Vergleichen zweier Dateien
542
14.2.13 diff3 – Vergleich von drei Dateien
543
14.2.14 dos2unix – Dateien vom DOS- ins UNIX-Format umwandeln
543
14.2.15 expand – Tabulatoren in Leerzeichen umwandeln
543
14.2.16 file – den Inhalt von Dateien analysieren
544
14.2.17 find – Suchen nach Dateien
545
14.2.18 fold – einfaches Formatieren von Dateien
545
14.2.19 head – Anfang einer Datei ausgeben
546
14.2.20 less – Datei(en) seitenweise ausgeben
547
14.2.21 ln – Links auf eine Datei erzeugen
547
14.2.22 ls – Verzeichnisinhalt auflisten
548
14.2.23 more – Datei(en) seitenweise ausgeben
548
14.2.24 mv – Datei(en) und Verzeichnisse verschieben oder umbenennen
548
14.2.25 nl – Datei mit Zeilennummer ausgeben
548
14.2.26 od – Datei(en) hexadezimal bzw. oktal ausgeben
549
14.2.27 paste – Dateien spaltenweise verknüpfen
549
14.2.28 pcat – Ausgabe von pack-komprimierten Dateien
550
14.2.29 rm – Dateien und Verzeichnisse löschen
550
14.2.30 sort – Dateien sortieren
550
14.2.31 split – Dateien in mehrere Teile zerlegen
551
14.2.32 tac – Dateien rückwärts ausgeben
552
14.2.33 tail – Das Ende einer Datei ausgeben
552
14.2.34 tee – Ausgabe duplizieren
553
14.2.35 touch – Dateien anlegen oder Zeitstempel verändern
553
14.2.36 tr – Zeichen ersetzen bzw. Dateien umformen
553
14.2.37 type – Kommandos klassifizieren
554
14.2.38 umask – Dateierstellungsmaske ändern bzw. ausgeben
554
14.2.39 uniq – doppelte Zeilen nur einmal ausgeben
554
14.2.40 uuencode/uudecode – Text- bzw. Binärdateien codieren
555
14.2.41 unix2dos – Dateien vom UNIX- ins DOS-Format umwandeln
555
14.2.42 wc – Zeilen, Wörter und Zeichen einer Datei zählen
555
14.2.43 whereis – Suche nach Dateien
556
14.2.44 zcat, zless, zmore – (seitenweise) Ausgabe von gunzip-komprimierten Dateien
556
14.3 Verzeichnisorientierte Kommandos
556
14.3.1 basename – gibt den Dateianteil eines Pfadnamens zurück
556
14.3.2 cd – Verzeichnis wechseln
557
14.3.3 dircmp – Verzeichnisse rekursiv vergleichen
557
14.3.4 dirname – Verzeichnisanteil eines Pfadnamens zurückgeben
557
14.3.5 mkdir – ein Verzeichnis anlegen
557
14.3.6 pwd – Ausgeben des aktuellen Arbeitsverzeichnisses
558
14.3.7 rmdir – ein leeres Verzeichnis löschen
558
14.4 Verwaltung von Benutzern und Gruppen
558
14.4.1 exit, logout – eine Session (Sitzung) beenden
558
14.4.2 finger – Informationen zu anderen Benutzern abfragen
558
14.4.3 groupadd, groupmod, groupdel – Gruppenverwaltung (distributionsabhängig)
559
14.4.4 groups – Gruppenzugehörigkeit ausgeben
559
14.4.5 id – eigene Benutzer- und Gruppen-ID ermitteln
559
14.4.6 last – An- und Abmeldezeit eines Benutzers ermitteln
560
14.4.7 logname – Name des aktuellen Benutzers anzeigen
560
14.4.8 newgrp – Gruppenzugehörigkeit kurzzeitig wechseln (betriebssystemspezifisch)
560
14.4.9 passwd – Passwort ändern bzw. vergeben
560
14.4.10 useradd/adduser, userdel, usermod – Benutzerverwaltung (distributionsabhängig)
561
14.4.11 who – eingeloggte Benutzer anzeigen
562
14.4.12 whoami – Name des aktuellen Benutzers anzeigen
562
14.5 Programm- und Prozessverwaltung
563
14.5.1 at – Kommando zu einem bestimmten Zeitpunkt ausführen lassen
563
14.5.2 batch – Kommando irgendwann später ausführen lassen
563
14.5.3 bg – einen angehaltenen Prozess im Hintergrund fortsetzen
564
14.5.4 cron/crontab – Programme in bestimmten Zeitintervallen ausführen lassen
564
14.5.5 fg – einen angehaltenen Prozess im Vordergrund fortsetzen
564
14.5.6 jobs – Anzeigen angehaltener bzw. im Hintergrund laufender Prozesse
564
14.5.7 kill – Signale an Prozesse mit einer Prozessnummer senden
564
14.5.8 killall – Signale an Prozesse mit einem Prozessnamen senden
565
14.5.9 nice – Prozesse mit anderer Priorität ausführen lassen
565
14.5.10 nohup – Prozesse beim Beenden einer Sitzung weiterlaufen lassen
565
14.5.11 ps – Prozessinformationen anzeigen
566
14.5.12 pgrep – Prozesse über ihren Namen finden
567
14.5.13 pstree – Prozesshierarchie in Baumform ausgeben
567
14.5.14 renice – Priorität laufender Prozesse verändern
567
14.5.15 sleep – Prozesse suspendieren (schlafen legen)
567
14.5.16 su – Ändern der Benutzerkennung (ohne Neuanmeldung)
568
14.5.17 sudo – ein Programm als anderer Benutzer ausführen
568
14.5.18 time – Zeitmessung für Prozesse
569
14.5.19 top – Prozesse nach CPU-Auslastung anzeigen (betriebssystemspezifisch)
569
14.6 Speicherplatzinformationen
570
14.6.1 df – Abfrage des benötigten Speicherplatzes für die Dateisysteme
570
14.6.2 du – Größe eines Verzeichnisbaums ermitteln
570
14.6.3 free – verfügbaren Speicherplatz (RAM und Swap) anzeigen (betriebssystemabhängig)
571
14.6.4 swap – Swap-Space anzeigen (nicht Linux)
571
14.7 Dateisystem-Kommandos
571
14.7.1 badblocks – überprüft, ob ein Datenträger defekte Sektoren hat
572
14.7.2 cfdisk – Partitionieren von Festplatten
572
14.7.3 dd – Datenblöcke zwischen Devices (Low Level) kopieren (und konvertieren)
573
14.7.4 dd_rescue – fehlertolerantes Kopieren von Dateiblöcken
575
14.7.5 dumpe2fs – zeigt Informationen über ein ext2/ext3-Dateisystem an
575
14.7.6 e2fsck – repariert ein ext2/ext3-Dateisystem
576
14.7.7 fdformat – formatiert eine Diskette
577
14.7.8 fdisk – Partitionieren von Speichermedien
577
14.7.9 fsck – Reparieren und Überprüfen von Dateisystemen
579
14.7.10 mkfs – Dateisystem einrichten
580
14.7.11 mkswap – eine Swap-Partition einrichten
580
14.7.12 mount, umount – An- bzw. Abhängen eines Dateisystems
581
14.7.13 parted – Partitionen anlegen, verschieben, vergrößern oder verkleinern
582
14.7.14 prtvtoc – Partitionstabellen ausgeben
582
14.7.15 swapon, swapoff – Swap-Datei oder Partition (de)aktivieren
582
14.7.16 sync – alle gepufferten Schreiboperationen ausführen
583
14.8 Archivierung und Backup
583
14.8.1 bzip2/bunzip2 – (De-)Komprimieren von Dateien
583
14.8.2 compress/uncompress – (De-)Komprimieren von Dateien
584
14.8.3 cpio, afio – Dateien und Verzeichnisse archivieren
584
14.8.4 crypt – Dateien verschlüsseln
587
14.8.5 dump/restore bzw. ufsdump/ufsrestore – Vollsicherung bzw. Wiederherstellen eines Dateisystems
588
14.8.6 gzip/gunzip – (De-)Komprimieren von Dateien
590
14.8.7 mt – Streamer steuern
591
14.8.8 pack/unpack – (De-)Komprimieren von Dateien
592
14.8.9 tar – Dateien und Verzeichnisse archivieren
592
14.8.10 zip/unzip – (De-)Komprimieren von Dateien
596
14.8.11 Übersicht über Dateiendungen und über die Pack-Programme
597
14.9 Systeminformationen
598
14.9.1 cal – zeigt einen Kalender an
598
14.9.2 date – Datum und Uhrzeit
599
14.9.3 uname – Rechnername, Architektur und OS ausgeben
599
14.9.4 uptime – Laufzeit des Rechners
599
14.10 System-Kommandos
600
14.10.1 dmesg – letzte Boot-Meldung des Kernels anzeigen
600
14.10.2 halt – alle laufenden Prozesse beenden
600
14.10.3 reboot – alle laufenden Prozesse beenden und System neu starten
600
14.10.4 shutdown – System herunterfahren
600
14.11 Druckeradministration
602
14.12 Netzwerkbefehle
602
14.12.1 arp – Ausgeben von MAC-Adressen
603
14.12.2 ftp – Dateien zu einem anderen Rechner übertragen
603
14.12.3 hostname – Rechnername ermitteln
608
14.12.4 ifconfig – Netzwerkzugang konfigurieren
608
14.12.5 mail/mailx – E-Mails schreiben und empfangen (und auswerten)
610
14.12.6 netstat – Statusinformationen über das Netzwerk
611
14.12.7 nslookup (host/dig) – DNS-Server abfragen
612
14.12.8 ping – die Verbindung zu einem anderen Rechner testen
612
14.12.9 Die r-Kommandos von Berkeley (rcp, rlogin, rsh, rwho)
613
14.12.10 ssh – sichere Shell auf anderem Rechner starten
614
14.12.11 scp – Dateien zwischen unterschiedlichen Rechnern kopieren
615
14.12.12 rsync – Replizieren von Dateien und Verzeichnissen
616
14.12.13 traceroute – Route zu einem Rechner verfolgen
618
14.13 Benutzerkommunikation
619
14.13.1 wall – Nachrichten an alle Benutzer verschicken
619
14.13.2 write – Nachrichten an andere Benutzer verschicken
619
14.13.3 mesg – Nachrichten auf die Dialogstation zulassen oder unterbinden
619
14.14 Bildschirm- und Terminalkommandos
620
14.14.1 clear – Löschen des Bildschirms
620
14.14.2 reset – Zeichensatz für ein Terminal wiederherstellen
620
14.14.3 setterm – Terminal-Einstellung verändern
620
14.14.4 stty – Terminal-Einstellung abfragen oder setzen
621
14.14.5 tty – Terminal-Name erfragen
622
14.14.6 tput – Terminal- und Cursorsteuerung
622
14.15 Online-Hilfen
623
14.15.1 apropos – nach Schlüsselwörtern in Manpages suchen
623
14.15.2 info – GNU-Online-Manual
623
14.15.3 man – die traditionelle Online-Hilfe
623
14.15.4 whatis – Kurzbeschreibung zu einem Kommando
624
14.16 Alles rund um PostScript-Kommandos
625
14.17 Gemischte Kommandos
625
14.17.1 alias/unalias – Kurznamen für Kommandos vergeben bzw. löschen
625
14.17.2 bc – Taschenrechner
625
14.17.3 printenv bzw. env – Umgebungsvariablen anzeigen
626
15 Die Praxis
627
15.1 Alltägliche Lösungen
628
15.1.1 Auf alphabetische und numerische Zeichen prüfen
628
15.1.2 Auf Integer überprüfen
629
15.1.3 echo mit oder ohne -n
631
15.2 Datei-Utilitys
632
15.2.1 Leerzeichen im Dateinamen ersetzen
632
15.2.2 Dateiendungen verändern
633
15.2.3 Veränderte Dateien in zwei Verzeichnissen vergleichen
634
15.2.4 Dateien in mehreren Verzeichnissen ändern
636
15.3 Systemadministration
645
15.3.1 Benutzerverwaltung
646
15.3.2 Systemüberwachung
664
15.4 Backup-Strategien
670
15.4.1 Warum ein Backup?
670
15.4.2 Sicherungsmedien
671
15.4.3 Varianten der Sicherungen
672
15.4.4 Bestimmte Bereiche sichern
672
15.4.5 Backup über ssh mit tar
673
15.4.6 Daten mit rsync synchronisieren
680
15.4.7 Dateien und Verzeichnisse per E-Mail versenden
683
15.4.8 Startup-Scripts
686
15.5 Das World Wide Web und HTML
693
15.5.1 Analysieren von access_log (Apache)
694
15.5.2 Analysieren von error_log (Apache)
697
15.6 CGI (Common Gateway Interface)
700
15.6.1 CGI-Scripts ausführen
701
15.6.2 CGI-Environment ausgeben
702
15.6.3 Einfache Ausgabe als Text
703
15.6.4 Ausgabe als HTML formatieren
706
15.6.5 Systeminformationen ausgeben
709
15.6.6 Kontaktformular
711
15.6.7 Noch ein Tipp
714
16 GUIs und Grafiken
715
16.1 dialog und Xdialog
715
16.1.1 –yesno – Entscheidungsfrage
716
16.1.2 –msgbox – Nachrichtenbox mit Bestätigung
718
16.1.3 –infobox – Hinweisfenster ohne Bestätigung
719
16.1.4 –inputbox – Text-Eingabezeile
720
16.1.5 –textbox – ein einfacher Dateibetrachter
721
16.1.6 –menu – ein Menü erstellen
722
16.1.7 –checklist – Auswahlliste zum Ankreuzen
723
16.1.8 –radiolist – Radiobuttons zum Auswählen
724
16.1.9 –gauge – Fortschrittszustand anzeigen
724
16.1.10 Verändern von Aussehen und Ausgabe
726
16.1.11 Ein kleines Beispiel
727
16.1.12 Zusammenfassung
728
16.2 gnuplot – Visualisierung von Messdaten
729
16.2.1 Wozu wird gnuplot eingesetzt?
729
16.2.2 gnuplot starten
730
16.2.3 Das Kommando zum Plotten
731
16.2.4 Variablen und Parameter für gnuplot
732
16.2.5 Ausgabe von gnuplot umleiten
734
16.2.6 Variablen und eigene Funktionen definieren
735
16.2.7 Interpretation von Daten aus einer Datei
736
16.2.8 Alles bitte nochmals zeichnen (oder besser speichern und laden)
739
16.2.9 gnuplot aus einem Shellscript heraus starten (der Batch-Betrieb)
740
16.2.10 Plot-Styles und andere Ausgaben festlegen
742
16.2.11 Tricks für die Achsen
748
16.2.12 Die dritte Dimension
752
16.2.13 Zusammenfassung
754
16.3 Aufgaben
755
Anhang
757
A Befehle (Übersichtstabellen)
759
A.1 Shell-Builtin-Befehle
759
A.2 Externe Kommandos
762
A.3 Shell-Optionen
763
A.4 Shell-Variablen
765
A.5 Kommandozeile editieren
773
A.6 Wichtige Tastenkürzel (Kontrolltasten)
775
A.7 Initialisierungsdateien der Shells
776
A.8 Signale
778
A.9 Sonderzeichen und Zeichenklassen
780
B Lösungen der Übungsaufgaben
783
B.1 Kapitel 1
783
B.2 Kapitel 2
783
B.3 Kapitel 3
784
B.4 Kapitel 4
785
B.5 Kapitel 5
787
B.6 Kapitel 6
792
B.7 Kapitel 7
796
B.8 Kapitel 8
798
B.9 Kapitel 9
798
B.10 Kapitel 11
799
B.11 Kapitel 12
799
B.12 Kapitel 13
800
B.13 Kapitel 16
801
C Trivia
803
C.1 Tastenunterschiede zwischen Mac- und PC-Tastaturen
803
C.2 Zusatzmaterial
804
Index
805