Cover |
1 |
Titel |
3 |
Impressum |
4 |
Inhaltsverzeichnis | 5 |
Über den Autor | 11 |
Einführung | 13 |
1.1 Die Shell als User-Interface | 13 |
1.2 Die Shell als Programmiersprache | 13 |
1.3 Einsatzgebiete von Shell-Skripten | 14 |
1.4 Shell-Skripte, Perl und C-Programme | 15 |
1.5 Die Shell und ihre vielen Varianten | 16 |
1.6 LINUX, SOLARIS, HP-UX, AIX, IRIX ... | 17 |
1.7 Aufbau des Buchs | 18 |
1.8 Buch-CD und Web-Server | 19 |
Shell-Skript-Programmierung in sh, ksh und bash | 21 |
2.1 Einführung | 21 |
2.2 Ein erster Streifzug | 22 |
2.3 Shell-Skripte schreiben | 29 |
2.4 Shell-Skripte ausführen und testen | 33 |
2.5 Befehle | 38 |
2.6 Umlenkungen und Pipes | 39 |
2.7 Dateinamenexpansion | 46 |
2.8 Variablen | 50 |
2.9 Zahlen | 57 |
2.10 Zeichenketten | 63 |
2.11 Arrays | 71 |
2.12 Kommandosubstitution | 75 |
2.13 Variablen exportieren | 78 |
2.14 Die if-Verzweigung | 85 |
2.15 Zahlen- und String-Tests | 89 |
2.16 Dateitests | 98 |
2.17 Kommandotests | 101 |
2.18 Short-Circuit-Tests | 105 |
2.19 Die case-Verzweigung | 107 |
2.20 Die for-Schleife | 112 |
2.21 Die while- und die until-Schleife | 118 |
2.22 break und continue | 127 |
2.23 Ausgabeoperationen | 133 |
2.24 Eingabeoperationen | 139 |
2.25 File-Deskriptoren | 148 |
2.26 Spezielle Umlenkungen | 154 |
2.27 Argumente und Optionen | 157 |
2.28 Menüs bilden mit select | 169 |
2.29 Passworteingabe und Tastatur | 176 |
2.30 Funktionen und Aliase | 180 |
2.31 Signalverarbeitung mit kill und trap | 199 |
2.32 Mehrere Skripte koordinieren | 209 |
2.33 Die Laufzeit von Shell-Skripten | 216 |
2.34 Startprozedur und Profildateien | 219 |
2.35 Wie die Shell Skripte verarbeitet | 223 |
2.36 Weitere Befehle und Techniken | 227 |
2.37 Debugging-Methoden | 233 |
2.38 Shell-Builtin-Befehle | 240 |
2.39 Shell-Optionen | 244 |
2.40 Shell-Variablen | 250 |
2.41 Kommandozeilen-Editor und History | 258 |
Shell-Skript-Programmierung in csh und tcsh | 263 |
3.1 Einführung | 263 |
3.2 Ein erster Streifzug | 266 |
3.3 Shell-Skripte schreiben | 273 |
3.4 Shell-Skripte ausführen und testen | 276 |
3.5 Befehle | 280 |
3.6 Umlenkungen und Pipes | 282 |
3.7 Dateinamenexpansion | 290 |
3.8 Variablen | 295 |
3.9 Zahlen | 303 |
3.10 Zeichenketten | 307 |
3.11 Arrays | 315 |
3.12 Kommandosubstitution | 321 |
3.13 Variablen exportieren | 323 |
3.14 Die if-Verzweigung | 328 |
3.15 Zahlen- und String-Tests | 331 |
3.16 Dateitests | 338 |
3.17 Kommandotests | 343 |
3.18 Short-Circuit-Tests | 346 |
3.19 Die switch-Verzweigung | 348 |
3.20 Die foreach-Schleife | 351 |
3.21 Die while-Schleife | 357 |
3.22 Die repeat-Schleife | 363 |
3.23 break und continue | 365 |
3.24 Ausgabeoperationen | 370 |
3.25 Eingabeoperationen | 375 |
3.26 Argumente und Optionen | 382 |
3.27 Menüs in der C-Shell | 392 |
3.28 Passworteingabe und Tastatur | 394 |
3.29 Subroutinen, Aliase, Labels | 397 |
3.30 Signalverarbeitung | 407 |
3.31 Startprozedur und Profildateien | 411 |
3.32 Wie die Shell Skripte verarbeitet | 414 |
3.33 Weitere Befehle und Techniken | 414 |
3.34 Debugging-Methoden | 420 |
3.35 Tabellen und Listen | 425 |
3.36 History und Kommandozeilen-Editor | 437 |
awk | 445 |
4.1 Einführung | 445 |
4.2 awk, nawk und gawk | 445 |
4.3 Funktionsweise und Aufruf | 446 |
4.4 Aufteilen einer Zeile in Felder | 448 |
4.5 Field Separator und Record Separator | 451 |
4.6 Ausgaben mit print und printf | 452 |
4.7 BEGIN- und END-Block | 453 |
4.8 Selektionskriterien | 453 |
4.9 Der Umgang mit Variablen | 456 |
4.10 Zahlen und Zeichenketten | 459 |
4.11 Arrays | 462 |
4.12 Assoziative Arrays | 464 |
4.13 Abrechnungen und Statistiken | 465 |
4.14 Mehrdimensionale Arrays | 469 |
4.15 Verzweigungen | 470 |
4.16 Schleifen | 472 |
4.17 Benutzerdefinierte Funktionen | 474 |
4.18 Argumente an awk übergeben | 476 |
4.19 Umgebung und Ländereinstellungen | 478 |
4.20 Ein- und Ausgabetechniken | 479 |
4.21 Mehrzeiler und unregelmäßige Zeilen | 482 |
Die wichtigsten UNIX-Tools | 485 |
5.1 Einführung | 485 |
5.2 Übersicht über alle Kommandos | 486 |
5.3 grep und Regular Expressions | 490 |
5.4 sed | 494 |
5.5 awk | 497 |
5.6 Dateiinhalte: head, tail, sort, tr, cut ... | 497 |
5.7 Dateioperationen: cp, ln, ls, find, diff ... | 503 |
5.8 Verzeichnisoperationen: mkdir, dirname, dircmp ... | 508 |
5.9 Archivierung und Backup: tar, cpio, gzip ... | 509 |
5.10 Filesystem-Informationen: df, du, fdisk ... | 516 |
5.11 Prozessoperationen: ps, kill, prstat, top ... | 520 |
5.12 Systeminformationen: uname, date, vmstat ... | 522 |
5.13 Benutzerverwaltung: who, finger, last ... | 524 |
5.14 Druck- und Druckeradministration: lp, lpstat ... | 528 |
5.15 Software-Installation | 529 |
5.16 Netzwerkbefehle: rsh, ftp, mail, ping ... | 530 |
5.17 Grafiken erstellen: gnuplot | 535 |
5.18 Vermischtes: logger, tput, man ... | 543 |
5.19 Einplanung von Befehlen: crontab, at | 546 |
Shell-Skripte und Logdateien | 547 |
6.1 Shell-Skripte in der Praxis | 547 |
6.2 Logdateien: Eine Übersicht | 548 |
6.3 Ereignisse in Logdateien zählen | 549 |
6.4 Felder in Logdateien aufsummieren | 555 |
6.5 Abrechnungen und Statistiken | 557 |
6.6 Statistiken über vorgegebene Gruppen | 563 |
6.7 Zeit- und andere Klassen | 567 |
6.8 Mehrzeiler im Logfile: Verteilte Informationen | 571 |
6.9 Mehrzeiler im Logfile: Zeilenumbrüche | 575 |
6.10 Zugriff auf eine laufende Logdatei | 577 |
6.11 Logdateien komprimieren und archivieren | 580 |
6.12 Logfiles blockweise abarbeiten | 582 |
6.13 Große Logfiles und Named Pipes | 585 |
6.14 Archivieren über Named Pipes | 587 |
6.15 Logs auf Festplatten und Hosts verteilen | 592 |
Shell-Skripte in der Systemadministration | 595 |
7.1 Einführung | 595 |
7.2 Benutzer effektiv anlegen | 596 |
7.3 Benutzer kopieren | 602 |
7.4 Benutzer intelligent löschen | 607 |
7.5 Dateien auf mehrere Rechner kopieren | 615 |
7.6 Skripte auf mehreren Rechnern ausführen | 621 |
7.7 Software auf mehreren Rechnern installieren | 629 |
7.8 Differenzielle Backups | 634 |
7.9 Systemdateien überwachen | 650 |
7.10 Ein Papierkorb | 657 |
Shell-Skripte zur Systemüberwachung | 665 |
8.1 Einführung | 665 |
8.2 Proaktives Systemmanagement | 666 |
8.3 Schritt für Schritt zur Systemüberwachung | 667 |
8.4 Alarme auslösen | 671 |
8.5 Grafiken erstellen | 676 |
8.6 History- und Trendreports | 686 |
8.7 Festplatten und Partitionen | 695 |
8.8 Belegung der Filesysteme | 702 |
8.9 Kenndaten eines Verzeichnisses | 717 |
8.10 Die größten und die neuesten Dateien | 722 |
8.11 Memory- und Swap-Verbrauch | 723 |
8.12 CPU-Auslastung, Paging und I/O-Performance | 736 |
8.13 Anzahl laufender Prozesse | 742 |
8.14 Ausgewählte Prozesse beobachten | 745 |
8.15 Ressourcenverbrauch von Benutzern | 749 |
8.16 Wer war wann eingeloggt? | 760 |
8.17 Accounting: Was hat ein Benutzer wann getan? | 761 |
8.18 Netzwerke: Erreichbarkeit von Rechnern | 762 |
8.19 Netzwerke: Ein HTML-Netzwerkplan | 771 |
8.20 Netzwerke: Verfügbarkeit von Diensten | 778 |
8.21 Ein zentrales Überwachungs-Interface | 782 |
8.22 Ein Web-Überwachungs-Interface | 789 |
Stichwortverzeichnis | 811 |