Ausbildung und Studium Werner Brecht Einführung in UNIX Ein Lehr- und Arbeitsbuch für Studium und Praxis Second Edition Werner Brecht Einführung in UNIX Effektiv Programmieren in C und C++ von Dielmar Herrmann Programmierhandbuch Visual C++ von Martin Aupperle C/C++·Werla:eugkasten von Arno Damberger Systemnahe Programmierung mit Borland Pascal von Christion Baumgarten Einführung in UNIX von Werner Brecht Verteilte Systeme unter UNIX von Werner Brecht Pattern Recognition and Image Processing in C++ von Dietrich W. Paulus und Joachim Hornegger C unter UNIX von Klaus K. Kannemann UNIX Werbeuge von Klaus K. Kannemann UNIX für Systemverwalter von Andreas Nieden und Werner Geigle Vieweg Werner Brecht Einführung in UNIX Ein Lehr- und Arbeitsbuch für Studium und Praxis 2. Auflage I I v1eweg Dos in diesem Buch enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Der Autor und der Verlag ubernehmen infolgedessen keine Ver antwortung und werden keine daraus folgende oder sonstige Haftung ubernehmen, die auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht. 1. Auflage 1993 2. Auflage 1996 Alle Rechte vorbehalten © Springer Fachmedien Wiesbaden 19 96 UrsprOnglich erschienen bei Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, Braunschweig/Wiesbaden, 1996 Dos Werk einschliel31ich aller seiner Teile ist urheberrechtlich geschutzt. Jede Verwertung aul3erhalb der engen Grenzen des Urheberrechts gesetzes ist ohne Zustimmung des Verlags unzulăssig und strafbar. Dos gilt insbesondere fur Vervielfăltigungen, Ubersetzungen, Mikroverfil mungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Gedruckt auf săurefreiem Papier ISBN 978-3-528-15329-8 ISBN 978-3-663-12073-5 (eBook) DOI 10.1007/978-3-663-12073-5 Inhaltsverzeichnis Vorwort IX 1 Systemcharakteristika 1 1.1 Historie 1 1.2 Standardisierung 3 1.3 Eigenschaften des UNIX-Systems 5 2 Erste Kommandos und Werkzeuge 11 2.1 Arbeitsweise einer Shell 11 2.2 Dateikommandos und vi 15 2.3 Weitere Kommandos und Werkzeuge 22 3 Dateisystem 37 3.1 Dateien und Dateiverzeichnisse 37 3.2 Zugriffsrechte 48 3.3 Verweise (Links) auf Dateien 51 4 Interaktives Arbeiten mit der Bourne-Shell 59 4.1 Bourne-Shell, C-Shell und Korn-Shell 59 4.2 Aufbau von Shell-Kommandos 60 4.3 Redirection und Pipelines 63 4.4 Prozeßverwaltung 70 4.5 Expandierung von Dateinamen 73 4.6 Kommando-Trenner und -Gruppen 76 VI Inhaltsverzeichnis 5 Einfache Kommandoprozeduren (Shell-Scripts) 79 5.1 Erzeugen und Starten eines Scripts 79 5.2 Benutzerdefinierte Variablen 81 5.3 Lesen von der Standard-Eingabedatei 84 5.4 Entwertungsmechanismen 85 5.5 Export von Variablen 89 6 Shell-Variablen 95 6.1 Umsetzbare Shell-Variablen 95 6.2 Nicht umsetzbareShell-Variablen 99 6.3 Argumente aus der Kommandozeile 101 6.4 Wertzuweisung an die Variablen 1, 2, ... , 9 103 7 Kommandoausführung 107 7.1 Punkt-Kommando 107 7.2 Kommandosubstitution 111 7.3 Reihenfolge der Shell-Aktionen 113 8 Kontrollstrukturen 117 8.1 test-Kommando und if-Verzweigung 117 8.2 for-Schleifen und expr-Tool 125 8.3 while-Konstruktion 129 8.4 Verlassen von Schleifen 130 8.5 case-Verzweigungen 132 9 Kommandoprozeduren mit Eingaben 137 9.1 Lesen von einer Datei 137 9.2 Here-Scripts 139 9.3 Abfangen von Signalen 141 Inhaltsverzeichnis VII 10 Textmusterverarbeitung 147 10.1 Reguläre Ausdrücke 147 10.2 grep-Familie 150 10.3 Einführung in das awk-Tool 153 11 C-Schnittstelle 163 11.1 Systemaufrufe 163 11.2 Aufbau eines einfachen C-Programms 165 11.3 s-Bit-Mechanismus 168 12 UNIX in Lokalen Netzen 173 12.1 Client-Server-Modell 173 12.2 TELNET und FTP 177 12.3 NFS 184 12.4 X-Window 189 13 Systemverwaltung 199 13. 1 Superuser 199 13.2 Bootstrap 201 13.3 Zeitlich verschobene Aufträge 203 13.4 Gefährdung des Rechenbetriebs 206 Lösungen zu den Übungsaufgaben 211 ASCII-Tabelle 225 Abkürzungen 227 Literaturverzeichnis 229 Register 231 Vorwort An der Technischen Fachhochschule in Berlin vertrete ich unter anderem das Fachgebiet Betriebssysteme und halte seit Jahren regelmäßig durch praktische Übungen unterstützte Vorlesungen über UNIX. Ein Schwerpunkt stellt dabei die Handhabung dieses Betriebssystems dar. Die Fähigkeit, UNIX bedienen zu können, ist unabdingbare Voraussetzung für das Hauptstudium zumindest in unseren Informatikstudiengängen. Seitens der Informatikstudentinnen und -Studenten, aber auch aus den Anwendungsstudiengängen wird in letzter Zeit verstärkt nach einem modernen, auch die neuen Anwendungsbereiche anspre chenden, an der Praxis orientierten Lehr- und Arbeitsbuch für UNIX-Anfänger gefragt. Offensichtlich läßt das entsprechende Literaturangebot doch eine Reihe von Wünschen zumindest für diesen Personenkreis offen. Ganz konkret wird immer wieder die Bitte vorgetragen, das Vorlesungsmanuskript zu veröf fentlichen. In den Schulungszentren des zum Daimler-Benz-Konzern gehörenden CAP debis-Systemhauses werden seit einer Reihe von Jahren Seminare über UNIX durchgeführt, die ein breites inhaltliches Spektrum abdecken. Eines dieser Seminare wird von mir unter der Bezeichnung UNIX für Anwender (fast) regelmäßig mehrmals im Jahr mit beachtlichen Teilnehmerzahlen abgehalten. Der Seminarinhalt deckt sich grob mit der bereits erwähnten einführenden Lehrveranstaltung an der Technischen Fachhochschule Berlin, was daran liegt, daß sich beide ständig gegenseitig beeinflussen. Auch aus dem Kreis der Seminarteilnehmer wird regelmäßig nach einem entsprechenden Lehr- und Arbeitsbuch gefragt. Das kontinuierliche Interesse an praxisbezogenen Einführungen in das Arbei ten mit UNIX als Anwender oder Anwendungsprogrammierer ist bemerkens wert. Offensichtlich wird es derzeit durch parallel laufende Entwicklungen im Bereich der Personal-Computer nicht (oder kaum) beeinträchtigt. Der ständig zunehmende Einsatz vernetzter Systeme auf UNIX-Basis verursacht eine stän dig steigende Anzahl von Umstellungen von Anwendungsprogrammen auf UNIX-Systeme. Das Schlagwort Downsizing beschreibt einen speziellen Aspekt solcher Umstellungen. Er bezieht sich auf die Übertragung von Anwendungsprogrammen von Großrechnern auf ein Netzwerk von kleineren (UNIX-)Rechnern. Diese sind als sogenannte Offene Systeme herstellerunab hängig, flexibler und kostengünstiger als Großrechner und können diese sehr sinnvoll ergänzen und manchmal auch ersetzen. Aus dieser Entwicklung ist das Interesse an einer praktischen, auf Anwendungsaspekte und -programmierung zugeschnittenen Einführung in UNIX verständlich. X Vorwort Daß gerade UNIX als Betriebssystem in Rechnernetzen so häufig eingesetzt wird, hat gute Gründe. Unter anderem stützt man sich mit UNIX auf ein Betriebssystem, das durch seinen tausendfachen und inzwischen langjährigen praktischen Einsatz nahezu fehlerfrei geworden ist. Dazu kommt, daß UNIX alle gängigen Programmiersprachen und ein breites Spektrum von Software Werkzeugen, sogenannte Tools oder Utilities, zur Verfügung stellt. Diese Werkzeuge können auf eine elegante Weise in ihrem Ablauf gesteuert und mit einander kombiniert werden. Das hat zur Folge, daß Anwender und Anwen dungsprogrammierer anspruchsvolle Aufgaben durchführen können, ohne Pro gramme in C oder FORTRAN usw. schreiben zu müssen. Es stehen Dienst programme jeder Komplexität zur Verfügung. Das reicht von Tools wie wc (Word Count), mit dem die Zeichen in einer Datei gezählt werden können, bis hin zu yacc (Yet another Compiler Compiler), mit dessen Hilfe aus der Angabe von Grammatikregeln ein C-Programm entsteht, das nach seiner Übersetzung erkennt, ob gegebene Zeichenfolgen den zugrundeliegenden Grammatikregeln genügen. Die Komplexität von yacc verbietet eine Behandlung in der vorlie genden Einführung. In das UNIX-Betriebssystem sind schon sehr früh Netzwerkdienste integriert worden. Beispielsweise steht mit NFS ein Dateidienst zur Verfügung, der bei Zugriffen auf Dateien anderer Rechner das zugrundeliegende Netzwerk voll kommen unsichtbar macht, so daß der Anwender noch nicht einmal zu wissen braucht, daß die Datei, mit er gerade arbeitet, nicht auf seinem Rechner lokal vorhanden ist. Und mit dem X-Window-System ist ein mächtiges Werkzeug zur Gestaltung fensterorientierter Benutzeroberflächen vorhanden. Alle Dienstprogramme bilden zusammen mit dem Kommandointerpreter, der als Shell bezeichnet wird, eine außergewöhnlich produktive Arbeits- und Ent wicklungsumgebung für Anwender und Anwendungsprogrammierer. Unter anderem für diesen Personenkreis ist das Buch konzipiert worden. Aber es sollen auch alle Personen angesprochen werden, die UNIX nur kennenlernen wollen, oder die für ihr weiteres Arbeiten grundlegende UNIX-Kenntnisse benötigen. Es ist nicht beabsichtigt, UNIX-Handbücher zu ersetzen, auch nicht teilweise. Der praktisch übende Leser wird ganz im Gegenteil, wenn er bei spielsweise über die gestellten Aufgaben hinausgehen will, einen Zugriff auf derartige, ihm vielleicht sogar On-Line (im Rechner) zur Verfügung stehende Handbücher (Manuals) benötigen. Mit dem Buch soll der Leser in einer hand lichen und kompakten Form an UNIX herangeführt werden. Es wird durch gängig die Schreibweise der Bourne-Shell verwendet. Beschrieben werden Funktionen eines UNIX-System-V Release 4.0 (SVR4). Ausnahmen davon sind besonders kenntlich gemacht.