Der UNIX-Werkzeugkasten Programmieren mit UNIX

Brian W. Kernighan • Rob Pike Der UNIX-Werkzeugkasten Programmieren mit UNIX Die deutsche Ausgabe besorgte Prof. Dr. A.-T Schreiner H INFORMATIK ! \...
Author: Pamela Hummel
8 downloads 4 Views 171KB Size
Brian W. Kernighan • Rob Pike

Der UNIX-Werkzeugkasten Programmieren mit UNIX

Die deutsche Ausgabe besorgte Prof. Dr. A.-T Schreiner H INFORMATIK ! \J

|

Seih gebietet-

\

Standorts

i

i 11 IC i\.

_

Carl Hanser Verlag München Wien

Xlll

Inhaltsverzeichnis Vorwort Vorwort zur deutschen Ausgabe Kapitel 1: UNIX für Anfänger

v x 1

1.1

2

Die ersten Schritte Grundsätzliches zu Terminals und Tippen - Eine UNIX Sitzung - Anmelden - Kommandos eingeben - Wenn das Terminal verrückt spielt - Tippfehler - Voraustippen - Programm abbrechen - Abmelden - Post - Kommunikation am Terminal Nachrichten - Das Benutzerhandbuch - Computer-unterstützter Unterricht - Spiele 1.2 Der Alltag: Dateien und allgemeine Kommandos Dateien erzeugen: Der Editor - Was für Dateien sind eigentlich da? - Dateierx ausgeben: "cat" und "pr" - Dateien verlagern, kopieren und löschen: "mv", "cp", "rm" - Was ist ein Dateiname? - Eine Handvoll nützlicher Kommandos - Zusammenfassung der Dateikommandos 1.3 Mehr über Dateien: Kataloge Katalog wechseln: "cd" 1.4 Die Shell ,. Abkürzungen für Dateinamen - Ein- und Ausgabe umlenken Pipelines - Prozesse - Die Umgebung maßschneidern 1.5 Der Rest des UNIX Systems Geschichte und Literaturhinweise Kapitel 2: Das Dateisystem 2.1 Grundbegriffe über Dateien 2.2 Was ist eine Datei? ..., 2.3 Kataloge und Dateinamen 2.4 Zugriffsschutz : 2.5 Der Begriff der Inode 2.6 Die Dateihierarchie 2.7 Geräte '. Geschichte und Literaturhinweise X/Kapitel 3: Shell-Benutzung 3.1 3.2 3.3 3.4 3.5 3.6 _£Q3.7

3.8

Struktur einer Kommandozeile Metazeichen Ein Exkurs zu "echo" - Die UNIX und ihr Echo Neue Kommandos erzeugen Kommandoargumente und Parameter Die Ausgabe eines Programms als Argument Shell-Variablen Mehr über Ein- und Ausgabe-Umlenkung Schleifen in Shell-Programmen

12

24 28 41 42 43 43 48 51 55 61 67 70 75 77 77 80 86 89 93 94 99 101

xiv

Inhaltsverzeichnis

3.9 3.10

Alles sinnvoll verbinden: "bündle" Warum ist die Shell programmierbar? Geschichte und Literaturhinweise ^/Kapitel 4: Filter

104 106 107 109

4.1 4.2 4.3 4.4

109 114 116 123

Die "grep"-Familie Andere Filter Der Pipeline-Editor "sed" Die Muster- und String-Programmiersprache "awk" Felder - Ausgabe - Muster - Die Muster "BEGIN" und "END" Arithmetik und Variablen - Programmablauf - Vektoren Vektoren mit Inhaltadressierung - Strings - Zusammenarbeit mit der Shell - Ein Terminkalender mit Hilfe von "awk" - Was nicht erklärt wurde 4.5 Gute Dateien und gute Filter Geschichte und Literaturhinweise /Kapitel 5: Shell-Programmierung 5.1 "cal" nach Maß 5.2 Was ist "which"? 5.3 Ereignisse abwarten: "while" und "until" Schleifen 5.4 Signale abfangen: "trap" 5.5 Eine Datei ersetzen: "overwrite" 5.6 Prozesse per Namen abbrechen: "zap" 5.7 Leerzeichen contra Argumente: "pick" 5.8 Neuigkeiten: "news" 5.9 Dateiänderungen verfolgen: "get" und "put" 5.10 Ein Blick zurück Geschichte und Literaturhinweise ' Kapitel 6: Programmieren mit "stdio" 6.1 Standard-Ein- und Ausgabe: "vis" 6.2 Kommandoargumente: "vis" Version 2 : 6.3 Dateizugriff: "vis" Version 3 6.4 Einen Schirm auf einmal: " p " :. 6.5 Ein Beispiel: "pick" 6.6 Über Fehler und Fehlersuche 6.7 Ein Beispiel: "zap" 6.8 Im Dialog Dateien vergleichen: "idiff" 6.9 Zugriff auf globale Shell-Variablen .;.-. Geschichte und Literaturhinweise Kapitel 7: UNIX Systemaufrufe 7.1 Elementare Ein- und Ausgabe Filedeskriptoren - Ein- und Ausgabe für Dateien: "read" und "write" - Dateien erzeugen: "open", "creat", "dose", "unlink" Fehlerbehandlung: "errno" - Wahlfreier Zugriff: "Iseek" 7.2 Dateisystem: Kataloge

140 141 143 143 148 154 160 163 167 170 173 176 181 182 183 184 187 189 193 199 200 203 206 212 213 215 215

223

Inhaltsverzeichnis 7.3

Dateisystem: Der Begriff der Inode Ein Beispiel für Fehlerbehandlung: "sv" 7.4 Prozesse Elementare Prozeßerzeugung: "execlp" und "execvp" Prozeßsteuerung: "fork" und "wait" 7.5 Signale Zeitintervalle Geschichte und Literaturhinweise Kapitel 8: Programmentwicklung 8.L Stufe 1: Eine Rechenmaschine mit vier Operationen v/ Grammatiken - Eine Übersicht zu "yacc" - Das Programm zu Stufe 1 - Änderungen: Ein negatives Vorzeichen - Exkurs zu "make" ^ Stufe 2: Variablen und Fehlerbehandlung Stufe 3: Beliebige Variablennamen; Standardfunktionen Noch ein Exkurs zu "make" - Ein Exkurs zu "lex" 8.4 Stufe 4: Übersetzung für eine Maschine Ein dritter. Exkurs zu "make" 8.5 Stufe 5: Kontrollstrukturen und Vergleiche 8.6 Stufe 6: Funktionen und Prozeduren; Ein- und Ausgabe 8.7 Qualitätskontrolle 8.8 Ein Blick zurück Geschichte und Literaturhinweise Kapitel 9: Dokumentation ; 9.1 Das "ms" Makropaket Unformatierte Teile - Änderungen der Schriftart - Verschiedene Kommandos - Das "mm" Makropaket 9.2 Die "troff" Ebene Namen für Zeichen - Änderungen in Schrifttyp und -große Elementare "troff" Kommandos - Eigene Makros 9.3 Die Preprozessoren "tbl" und "eqn" Tabellen - Mathematische Formeln - Ausgabe erzeugen ' 9.4 Die Manualseite 9.5 Andere Werkzeuge zur Textaufbereitung Geschichte und Literaturhinweise Kapitel 10: Epilog Anhang 1: Editor-Kurzbeschreibung Die Grundlagen - Ausflug zur Shell mit "!" - Ausgabe Suchmuster - Wo sind wir überhaupt? - Anfügen, Ändern, Löschen, Einfügen - Textersatz - Metazeichen und reguläre Ausdrücke - Globale Kommandos - Zeilen verlagern und kopieren - Marken und Zeilennummern - Zeilen zusammenfügen, zerteilen und umbauen - Dateikommandos - Verschlüsselung Zusammenfassung der Kommandos

xv 228 234 239 246 247 248

257 262 275 284 291 302 304 305 307 309 316 321 328 333 335 337 341

xvi Anhang 2: "hoc" Manual

Inhaltsverzeichnis 353

Arithmetische Ausdrücke - Anweisungen und Ablauf - Ein- und Ausgabe: "read" und "print" - Funktionen und Prozeduren Beispiele Anhang 3: "hoc" Protokoll 359 Sachverzeichnis 375 Tabellen (herausnehmbare Kopie) rückwärtiger Umschlag innen