Werner Brecht Einfuhrung in UNIX Programmierung Programmieren mit C++ Version 3 von F. Bause und W. Tolle Ada von M. Nagl Programmieren mit Ada von H. Feldmann Strukturiertes Programmieren in C von H. Feldmann Programmieren in LISP Eine elementare und anwendungsorientierte EinfUhrung von P.P. Bothner und W.-M. Kahler Einfiihrung in UNIX Ein Lehr- und Arbeitsbuch fUr Studium und Praxis von W. Brecht Programmieren mit Ada und C Eine beispielorientierte GegenGbersteliung von A. Weinert Programmieren in PUt von E. Sturm Programmieren in COBOL 85 von W.-M. Kahler Programmieren in Prolog von P. Bothner und W.-M. Kahler Programmieren in Pascal Eine elementare EinfUhrung von G. Lamprecht Vieweg Werner Brecht EinfLihrung in UNIX Ein Lehr- und Arbeitsbuch fur Studium und Praxis I I vleweg Das in diesem Buch enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Der Autor und der Verlag tibernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung tibernehmen, die auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht. Alle Rechte vorbehalten © Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, BraunschweigIWiesbaden, 1993 Der Verlag Vieweg ist ein Untemehmen der Verlagsgruppe Bertelsmann International. Das Werk einschlieBlich aller seiner Teile ist urheberrechtlich geschtitzt. Jede Verwertung auBerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulassig und strafbar. Das gilt insbesondere fUr VervielfaItigungen, Ubersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Gedruckt auf saurefreiem Papier ISBN-13: 978-3-528-05329-1 e-ISBN-13: 978-3-322-84021-9 DOl: 10.1007/978-3-322-84021-9 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) aufDateien 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 Proze6verwaltung 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 umsetzbare Shell-Variablen 99 6.3 Argumente aus der Kommandozeile 101 6.4 Wertzuweisung an die Variablen 1, 2, ... ,9 103 7 Kommandoausffihrung 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 ReguUire Ausdrucke 147 10.2 grep-Familie 150 10.3 Einfiihrung 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 Auftrage 203 13.4 Gernhrdung des Rechenbetriebs 206 Losungen zu den Ubungsaufgaben 211 ASCll-Tabelle 225 Abkiirzungen 227 Literaturverzeichnis 229 Register 231 Vorwort An der Technischen Fachhochschule in Berlin vertrete ich unter anderem das Fachgebiet Betriebssysteme und halte seit Jahren regeIma8ig durch praktische Obungen unterstiitzte Vorlesungen fiber UNIX. Ein Schwerpunkt stellt dabei die Handhabung dieses Betriebssystems dar. Die Fahlgkeit, UNIX bedienen zu kannen, ist unabdingbare Voraussetzung fUr das Hauptstudium zumindest in unseren Informatikstudiengiingen. Seitens der Informatikstudentinnen und -studenten, aber auch aus den Anwendungsstudiengiingen wird in Ietzter Zeit verstirkt nach einem modemen, auch die neuen Anwendungsbereiche anspre chenden, an der Praxis orientierten Lehr-und Arbeitsbuch fUr UNIX-Anfcinger gefragt. Offensichtlich Ui8t das entsprechende Literaturangebot doch eine Reihe von Wfinschen zumindest fUr diesen Personenkreis offen. Ganz konkret wird immer wieder die Bitte vorgetragen, das Vorlesungsmanuskript zu verOf fentlichen. In den Schulungszentren des zum Daimler-Benz-Konzem geharenden CAP debis-Systemhauses werden seit einer Reihe von Jahren Seminare fiber UNIX durchgefUhrt, die ein breites inhaltliches Spektrum abdecken. Eines dieser Seminare wird von mir unter der Bezeichnung UNIX fUr Anwender (fast) regeIma8ig mehrmals im Jahr mit beachtlichen Teilnehmerzahlen abgehalten. Der Seminarinhalt deckt sich grob mit der bereits erwahnten einfUhrenden Lehrveranstaltung an der Technischen Fachhochschule Berlin, was daran liegt, da8 sich beide stlindig gegenseitig beeinflussen. Auch aus dem Kreis der Seminarteilnehmer wird regelma8ig nach einem entsprechenden Lehr- und Arbeitsbuch gefragt. Das kontinuierliche Interesse an praxisbezogenen EinfUhrungen 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) beeintrachtigt. Der stlindig zunehmende Einsatz vemetzter Systeme auf UNIX-Basis verursacht eine stlin dig steigende Anzahl von Umstellungen von Anwendungsprogrammen auf UNIX-Systeme. Das Schlagwort Downsizing beschreibt einen speziellen Aspekt solcher Umstellungen. Er bezieht sich auf die Obertragung von Anwendungsprogrammen von Gro8rechnem auf ein Netzwerk von kleineren (UNIX-)Rechnem. Diese sind als sogenannte Offene Systeme herstellerunab bangig, flexibler und kostengiinstiger als Gro8rechner und kannen diese sehr sinnvoll erganzen und manchmal auch ersetzen. Aus dieser Entwicklung ist das Interesse an einer praktischen, auf Anwendungsaspekte und -programmierung zugeschnittenen EinfUhrung in UNIX verstlindlich. x Vorwort DaB gerade UNIX als Betriebssystem in Rechnernetzen so hliufig eingesetzt wird, hat gute Grtinde. Unter anderem stiitzt man sich mit UNIX auf ein Betriebssystem, das durch seinen tausendfachen und inzwischen langjahrigen praktischen Einsatz nahezu fehlerfrei geworden ist. Dazu kommt, daB UNIX aIle gangigen Programmiersprachen und ein breites Spektrum von Software Werkzeugen, sogenannte Tools oder Utilities, zur VerfUgung stellt. Diese Werkzeuge konnen auf eine elegante Weise in ihrem Ablauf gesteuert und mit einander kombiniert werden. Das hat zur Folge, daB Anwender und Anwen dungsprogrammierer anspruchsvolle Aufgaben durchfUhren konnen, ohne Pro gramme in Coder FORTRAN usw. schreiben zu miissen. Es stehen Dienst programme jeder Komplexitat zur VerfUgung. Das reicht von Tools wie we (Word Count), mit dem die Zeichen in einer Datei gezahlt werden konnen, bis hin zu yaee (Yet another Compiler Compiler), mit dessen Hilfe aus der Angabe von Grammatikregeln ein C-Programm entsteht, das nach seiner Obersetzung erkennt, ob gegebene Zeichenfolgen den zugrundeliegenden Grammatikregeln geniigen. Die Komplexitat von yaee verbietet eine Behandlung in der vorlie gendenEinfUhrung. In das UNIX-Betriebssystem sind schon sehr friih Netzwerkdienste integriert worden. Beispielsweise steht mit NFS ein Dateidienst zur VerfUgung, der bei Zugriffen auf Dateien anderer Rechner das zugrundeliegende Netzwerk voll kommen unsichtbar macht, so daB der Anwender noch nicht einmal zu wissen braucht, daB die Datei, mit er gerade arbeitet, nicht auf seinem Rechner lokal vorhanden ist. Und mit dem X-Window-System ist ein machtiges Werkzeug zur Gestaltung fensterorientierter Benutzeroberflachen vorhanden. Alle Dienstprogramme bilden zusammen mit dem Kommandointerpreter, der als Shell bezeichnet wird, eine auBergewohnlich produktive Arbeits- und Ent wicklungsumgebung fUr Anwender und Anwendungsprogrammierer. Unter anderem fUr diesen Personenkreis ist das Buch konzipiert worden. Aber es sollen auch aIle Personen angesprochen werden, die UNIX nur kennenlernen wollen, oder die fUr ihr weiteres Arbeiten grundlegende UNIX-Kenntnisse benotigen. Es ist nicht beabsichtigt, UNIX-Handbiicher zu ersetzen, auch nicht teilweise. Der praktisch iibende Leser wird ganz im Gegenteil, wenn er bei spielsweise iiber die gestellten Aufgaben hinausgehen will, einen Zugriff auf derartige, ihm vielleicht sogar On-Line (im Rechner) zur VerfUgung stehende Handbiicher (Manuals) benotigen. Mit dem Buch soIl der Leser in einer hand lichen und kompakten Form an UNIX herangefUhrt werden. Es wird durch gangig die Schreibweise der Bourne-Shell verwendet. Beschrieben werden Funktionen eines UNIX-System-V Release 4.0 (SVR4). Ausnahmen davon sind besonders kenntlich gemacht. Vorwort XI Eine Bemerkung zur Fachsprache ist angebracht. Es wurde versucht, Fach ausdrUcke moglichst in deutscher Sprache zu formulieren, ohne dabei sprach liche Ungeheuer zu verwenden. Viele Begriffe widersetzen sich erstaunlich hartruickig einer eleganten Ubertragung ins Deutsche, so daB in einer ganzen Reihe von Fallen die englischen AusdrUcke verwendet werden. Dabei handelt es sich aber stets um Begriffe, flir die beim Leser erfahrungsgemiiB ein gewis ses Verstiindnis vorhanden bzw. leicht zu erzielen ist. Ein paar Worte des Dankes gehen an meine Familie, die mir die Ruhe zum Arbeiten gegeben hat, und an die Kollegen Prof. C. Ratsch und Dipl.-Ing. A. Bergmann aus dem Hochschulrechenzentrum der Technischen Fachhochschule Berlin, die das Manuskript gelesen haben. Beiden verdanke ich eine FUlle kriti scher Diskussionen und Anregungen. Auch dem Hause Vieweg gebuhrt Dank, insbesondere flir die unbUrokratische Zusammenarbeit und die sorgfiiltige Lektorierung.