Текст
                    Christine Wolfinger
Keine Angst vor UNIX


Springer Berlin Heidelberg New York Barcelona Hongkong London Mailand Paris Singapur Tokio
Christine Wolfinger Keine Angst vor UNIX Ein Lehrbuch fur Einsteiger in UNIX, Linux, Solaris, HP-UX,AIX und andere UNIX-Derivate 9., korrigierte Auflage Mit 268 Abbildungen i Springer
Christine Wolfinger OrtlindestraBe 6 81927 Miinchen ChristineWolfinger@Compuserve.com http://ourworld.compuserve.comlHomepages/ChristineWolfinger ISBN-13: 978-3-540-67153-4 e-ISBN-13: 978-3-642-98096-1 DOl: 10.1007/978-3-642-98096-1 Die Deutsche Bibliothek - CIP-Einheitsaufnahme Wolfinger, Christine: Keine Angst vor UNIX / C. Wolfinger. - 9., korr. Auf!. - Berlin; Heidelberg; New York; Barcelona; Hongkong ; London; Mailand ; Paris; Singapur ; Tokio: Springer, 2000 Dieses Werk ist urheberrechtlich geschiitzt. Die dadurch begriindeten Rechte, insbesondere die der Obersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und TabeUen, der Funksendung, der Mikroverfilmung oder der VervieIHiltigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine VervieIHiltigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland vom 9. September 1965 in der jeweils geltenden Fassung zuHissig. Sie ist grundsatzlich vergiitungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechtsgesetzes. Springer-Verlag ist ein Unternehmen der Fachverlagsgruppe BertelsmannSpringer © Springer-Verlag Berlin Heidelberg 2000 Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daB solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden diirften. SoUte in diesem Werk direkt oder indirekt auf Gesetze, Vorschriften oder Richtlinien (z.B. DIN, VDI, VDE) Bezug genornmen oder aus ihnen zitiert worden sein, so kann der Verlag keine Gewiihr fiir die Richtigkeit, VoUstandigkeit oder Aktualitat iibernehmen. Es empfiehlt sich, gegebenenfalls fiir die eigenen Arbeiten die vollstandigen Vorschriften oder Richtlinien in der jeweils giiltigen Fassung hinzuzuziehen. Einbandgestaltung: Klinkel + Lobka Satz: Reprodultionsfertige Vorlage der Autorin Gedruckt auf saurefreiem Papier SPIN: 10725539 68/3020 - 54 3 2 10
Vorwort Wir haben uns daran gewohnt, sehr viel Technik in unserem Leben wie selbstverstandlich zu verwenden - dazu zahlen z. B. Fernseher, KOchenmaschinen und Autos. Bei allen haben wir mehr oder weniger lange die Bedienung erlernen mOssen. Der Lernaufwand ist um so groBer, je komplexer die Technik und je jOnger die Technologie ist. Nun dringt auch der Computer mit seiner Technologie sehr massiv - freiwillig oder unfreiwillig - in das Leben vieler Menschen. Die Technik ist noch relativ jung, gemessen an der Komplexitat, den an sie gestellten AnsprOchen und an der Entwicklungszeit. Entsprechend ist der heute notwendige Aufwand, um die Bedienung eines Rechners zu erlernen, etwas hoherjedoch wie beim Erlernen des Autofahrens mit etwas Schwung, gutem Willen und Selbstvertrauen durchaus moglich. Wie beim Autofahren hilft es, wenn man technisches Verstandnis hat - dies ist jedoch keine absolute Voraussetzung. UNIX ist eines der Systeme, das auf vielen der neuen in Technik, im kommerziellen Bereich und im BOro sich ausbreitenden Rechnern lauft. Bei vielen Rechnern wird der Benutzer dabei recht wenig yom Betriebssystem und UNIX zu sehen bekommen; die Kenntnisse von UNIX, seinen Prinzipien und seiner Arbeitsweise konnen jedoch das Verstandnis fOr das Rechnersystem und seine Arbeitsweise erleichtern, seine Bedienung und effiziente Nutzung einfacher gestalten. Der Vorteil von UNIX liegt darin, daB es auf sehr vielen Rechnern lauft, d.h. hat man einmal gelernt es zu bedienen, so hilft dies wahrscheinlich auch beim Rechner der anderen Abteilung oder der nachsten Generation. Wieviel Sie wirklich von dem System lernen mOssen, hangt sehr stark davon ab, wie oft und wie intensiv Sie mit einem UNIX-Rechner arbeiten mOssen, welche Aufgaben Sie damit erledigen wollen und wieviel SpaB Ihnen der Umgang und die Beherrschung dieser Technik macht. Das vorliegende Such jedenfalls soli Ihnen den Einstieg dazu ermoglichen, den Umgang mit einem sol chen System erleichtern und Ihnen aus dem Spektrum der Moglichkeiten einen Ausschnitt zeigen. Haben Sie also keine Angst vor UNIX und zahmen Sie den Drachen - moge er Ihnen GlOck bringen! Dezember 1986 und erneut Marz 2000 JOrgen Gulbins
Geleitwort Ein neues UNIX-Lehrbuch vorzulegen, ist ein groBes Unterfangen - vor allem, wenn man es mit dem Anliegen tut, diesen komplexen Stoff so aufzubereiten, daB auch der Laie ihn versteht. Ich muB Frau Wolfinger das Kompliment machen, daB ihr das ausgezeichnet gelungen ist: Zweifellos wird sie mit ihrem Buch eine gewichtige LOcke in der UNIX-Literatur schlieBen. Unix ist ein groBes, umfassendes Betriebssystem, vergleichbar mit GroBrechnersystemen wie MVS oder BS2000. Oem Versuch, UNIX ohne intensive Vorbereitung zu benutzen, folgt unweigerlich Frustration und Resignation. Um die zu befOrchtende Unzufriedenheit bei einer stark steigenden Zahl von neuen UNIXAnwendern zu vermeiden, muB der Zugang zu diesem umfangreichen Stoff erleichtert werden. Frau Wolfinger hat es mit diesem Buch unternommen, sozusagen einen ,Do it yourself<-Kurs zu gestalten - mit wirklich beachtlichem Erfolg, und selbst der hohe Anspruch ,auch fOr den Laien< scheint mir hervorragend erfOlit. Frau Wolfinger konnte auf ihre langjahrige Erfahrung als Seminarleiterin der Firma pes und Referentin zahlreicher UNIX-Kurse zurOckgreifen - weit mehr als 1000 Kursteilnehmer sind von ihr in die UNIX-Geheimnisse eingeweiht worden. Man merkt dem Buch an, daB sie dabei ihrerseits gelernt hat, welche Fragen besondere Schwierigkeiten bereiten und welche gedanklichen Stolpersteine zu Oberwinden sind. Seine auf umfangreicher praktischer Lehr-Erfahrung basierende, gute didaktische Gestaltung ist die besondere Starke dieses Buchs. UNIX befindet sich auf dem besten Weg, das Standard-Betriebssystem fOr immer mehr Anwendergebiete und fOr zukOnftige Rechnergenerationen zu werden - vielleicht geh6ren UNIX-Kenntnisse schon in wenigen Jahren eben so zum Grundwissen von Ingenieuren und Informatikern wie heute die h6heren Programmiersprachen. Frau Wolfinger hat mit ihrem Buch eine wichtige Vorleistung erbracht. Ais Leser haben Sie mit diesem Buch eine gute Wahl getroffen. Ich wOnsche Ihnen eine angenehme, erfolgreiche LektOre und - Keine Angst vor UNIX! Januar1987 Prof. Dr. Georg Farber Lehrstuhl fOr ProzeBrechner TU MOnchen
Hinweis zur 9. Auflage Dank der groBen Nachfrage konnten in kurzen Zeitspannen jeweils neue Auflagen dieses Buches erscheinen, die stets aktualisiert wurden. Hierbei habe ich eine ganze Reihe von Anregungen meiner Leser mit aufgenommen. Durch Recherchen bei den namhaften UNIX-Anbietern sind auch die neuesten Entwicklungen unter UNIX und darauf aufbauender Software berOcksichtigt. Nochmals herzlichen Dank an all jene Leser, die mir geschrieben haben. Besonderer Dank gilt auch der Firma Sun Microsystems, die mir Rechner zur VerfOgung stellte, an denen ich Konvertierungen und Grafikdateien zu diesem Buch erstellen konnte. Das Buch, ursprOnglich mit Interleaf geschrieben, habe ich zur achten Auflage auf FrameMaker umgestellt. Mit Applix Graphics wurden SchnappschOsse von Bildschirmausschnitten und verschiedene Zeichnungen eingebunden. Auch der Firma SuSe danke ich, daB ich an Ihren Schulungsrechner die hier im Buch aufgefOhrten Kommandos und Beispiele testen konnte schon vorab: es gab keine Probleme, aile Kommandos und Beispiele sind einwandfrei gelaufen. Mein ganz besonderer Dank gilt JOrgen Gulbins, der mir bei meinen ersten Schritten mit UNIX und vorallem bei der Entstehung dieses Buches sehr geholfen hat und auch all die Jahre hinweg immer wieder mit Rat und Tat zur Seite stand. Bei der vollstandig neu Oberarbeiteten achten Auflage hat Carsten Hammer wesentlich zum Gelingen beigetragen - herzlichen Dank. FOr die wichtigen Korrekturarbeiten danke ich Astrid von Borcke-Gulbins, Gisela Pohnke, Monika Jahn, meiner Schwester Karin Winderl, Rita Luger und natOrlich auch meinen Lesern. FOr die Revidierung der Kurzreferenzkarte danke ich besonders Wolfgang Lechner. Viele gute Anregungen bekam ich auch durch meine ehemaligen Kolleginnen und Kollegen bei PCS. Hier mochte ich mich besonders bei Michael Uhlenberg und Wolfgang Denk bedanken. Dieses Lehrbuch zeigt UNIX in seiner ursprOnglichen Form mit Befehlseingaben, wie sie auch unter UNIX V.4 GOltigkeit haben. Da jedoch fast aile UNIX-Rechner heute zusatzlich mit einer grafischen Benutzeroberflache ausgerOstet sind, wird zu Beginn kurz gezeigt, wie man damit umgeht. In einem eigenen Kapitel CDE (Common Desktop Environment - der inzwischen vereinheitlichten grafischen Benutzeroberflache von UNIX) gehe ich auf die Handhabung detailliert ein. Ich wOnsche Ihnen viel Erfolg mit UNIX. Marz 2000 Christine Wolfinger
Was ist LlNUX? LlNUX ist UNIX, d. h. ein weiteres UNIX-Derivat, das weitgehendst den Standardrichtlinien von POSIX (siehe Seite 19) entspricht und als Open-Source-UNIX erhaltlich ist und somit inklusive aller Quelltexte frei kopiert und verteilt werden darf. Der Name LlNUX wurde abgeleitet von Linus Benedict Torvalds, Helsiniki, der 1991 ein eigenes Betriebssystem, aufbauend auf dem UNIX-Modell, fOr den Intel 386-Prozessor entwickelte. Von Anfang an waren die Quelltexte an den Universitaten frei verfOgbar, jeder konnte sie bekommen und daran mitarbeiten. Ober die ganze Welt verstreut halfen Entwickler per E-Mail, Newsgroups und Ober WWW (World Wide Web) mit, daB LlNUX ein UNIX-Derivat wurde, das nicht nur von Studenten und Entwicklern eingesetzt wird, sondern mehr und mehr auch von kommerziellen Anwendern. Auch Fachmessen und Kongresse trugen dazu bei, LlNUX eine offensichtliche Konkurrenz zu Microsoft werden zu lassen. Viele Software-Firmen bieten bereits ihre Produkte fOr LlNUX an. Erwahnen mochte ich hier besonders alternative Software zu dem Microsoft Office-Paket: Applixware/Anyware und StarOffice. Der Marktanteil von LlNUX soiliaut den Prognosen von April 1999 der IDC (International Data Corporation) in den kommenden fOnf Jahren 25% steigen und im Jahre 2003 den zweiten Rang hinter Windows NT belegen. Um LlNUX einzusetzen braucht man jedoch eine Menge Fachwissen. Distributoren wie Debian, Red Hat, SuSE und Slackware u.a. helfen hier mit entsprechenden Paketen, in denen Installationsskripte und -anleitungen fOr LlNUX, die gangigsten Treiber und verschiedene Software-Losungen zusammengestellt sind. Doch auch dann muB der Anwender bereits grundlegende Systemverwalterkenntnisse mitbringen, um die Installationen durchzufOhren. Einige Distributoren bieten zwischenzeitlich auch Rechner mit bereits vorinstalliertem LlNUXBetriebssystem an. Es gibt eine Reihe von guten BOchern, von denen ich einige im Literaturverzeichnis erwahne, die gute Anleitungen geben, das LlNUX-Basissystem zu konfigurieren. Doch gehen die meisten davon aus, daB der Anwender Fertigkeiten im Umgang mit Computern besitzt. Ich helfe Ihnen gerne, mit Hilfe dieses Buches grundlegende Kenntnisse und die praktische Anwendung von UNIX zu erlernen. Der Titel dieses Buches konnte deshalb genauso gut lauten: <Keine Angst vor LlNUX>.
Keine Angst vor UNIX Ein Lehrbuch fOr Einsteiger Inhaltsverzeichnis Einleitung ......................................................1 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 Allgemeine Einfuhrung ....................................3 Hardware und Software - Rechner und Betriebssystem .......... .4 Unterschied zwischen Datei und Dateisystem .................. 11 Was ist ein Programm? .................................... 13 Programmiersprachen .................................... 16 Woher kommt UNIX? ................................. : ... 18 Die UNIX-Portierungen verschiedener Firmen ..................20 Was ist das Besondere an UNIX? ............................21 Wer setzt UNIX ein? ......................................23 2 2.1 2.2 Konventionen und Begriffe zu diesem Buch .................25 Hinweise zum besseren Verstandnis .........................26 Eingabe an der Tastatur ...................................28 3 UNIX - praktisch angewandt ..............................31 3.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 Auf los geht's los .••.....................................32 Wie wird ein UNIX-Rechner gestartet? ........................33 Wie melden Sie sich an einem UNIX-System an? ...............35 Wie arbeiten Sie mit einer grafischen Oberflache ................36 Wer kann unter UNIX arbeiten? ............................ .43 Anmeldung und Eintrag des PaBwortes ...................... .44 Andern des PaBwortes ..................... . ............. .46 Abmelden vom System ................................... .47 Informationen zum Dateisystem ............................ .49 Einige nOtzliche Kommandos ...............................61 Datumsanzeige (date) .....................................61 Lesen des Online-Manuals (man) . ............................ 62 Wie sind die Manualseiten gegliedert? ........................ 63 Anzeige eines Datei-Inhaltes (cat) ............................65 Blattern im Inhalt einer Datei (more, pg) ....................... 66 Wer arbeitet am System? (who) . .............................69 Anzeige des Terminalnamens (tty) . ........................... 70 IX
3.1.10 3.1.11 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.4 X 3.4.1 3.4.2 3.4.3 3.4.4 Senden von Nachrichten an angemeldete Benutzer (write) . ........ 71 Die elektronischeMaii (mail) ................................73 Ausschalten eines UNIX-Rechners ........................... 76 Zusammenfassung der ersten Kommandos .................... 77 Es .shellt( ..............................................81 Aufruf von Kommandos und die Aufgaben der Shell ............. 83 Ein- und Ausgabe der Shell ................................86 Wie und wann leiten Sie die Standardausgabe um? ............. 86 Wie k6nnen Sie eine Datei erganzen? ........................90 Wie k6nnen Sie die Fehlermeldungen umleiten? ................92 Wie leiten Sie die Standardeingabe um? ......................93 Verkettung von Kommandos ...............................94 Der Pipe-Mechanismus unter der Shell ....................... 95 Welche Eigenschaften hat eine Pipe? ........................ 97 Metazeichen zur Expansion von Dateinamen ................... 99 Ersetzungsmechanismus der Shell .......................... 105 Was sind Shell-Variablen? ................................ 107 Ersetzung durch das Ergebnis eines Kommandos .............. 108 Keinerlei Ersetzung ......................................109 Vordergrund- und Hintergrundprozesse ...................... 110 Zusammenfassung der in diesem Kapitel verwendeten Kommandos ................................117 Obersicht der bisher kennengelernten Sonderzeichen ........... 118 Editoren unter UNIX ....................................119 Erstellung von Texten .................................... 120 Unterschiede zwischen Editor und Textverarbeitung ............ 120 Der ed-Editor .......................................... 122 Wie sind Kommandos im Editor ed einzugeben? ............... 123 Auswahl von oft gebrauchten Kommandos .................... 125 Wie beenden Sie das Programm? .......................... 130 Suchmechanismen im Editor ed ............................ 131 Obersicht einiger im ed (sed, grep und VI) verwendeten Metazeichen 134 Obersicht der Sonderzeichen und Kommandos im ed ........... 136 Zusammenfassung der wichtigsten Kommandos im ed ......... 137 Obersicht der wesentlichen Eigenschaften des Editors vi ........ 138 Wie k6nnen Sie Kommandos im vi mit Objekten kombinieren? .... 143 Obersicht der haufig benutzten vi-Kommandos ................ 146 Besonderheiten im vi .................................... 150 Der batchorientierte Editor sed ............................. 151 Zusammenfassung der Editoren ............................ 152 Dateiverwaltung und -pflege ............................. 153 Neuanlegen und L6schen von Directories .................... 157 Kopieren, L6schen und Umbenennen von Dateien ............. 159 Merkmale einer Datei .................................... 167 Dateitypen unter UNIX ................................... 170
3.4.5 3.4.6 3.4.7 3.4.8 3.4.9 Ausdruck von Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 172 Andern von Zugriffs- und Besitzerrechten .................... 176 Suchen nach Dateien und Mustern in Dateiinhalten ............. 183 OberprOfen der Platten- oder Floppybelegung ................. 190 Zusammenfassung der Kommandos ........................ 192 3.5 Sicher ist sicher! ....................................... 199 Was und worauf soli gesichert werden? ......................200 Montieren von Floppies oder Platten ........................201 Kopieren eines Dateibaumes mit cpio .......................207 Einlesen gesicherter Dateien von einer Floppy (als Dateisystem) ... 210 Verwendung von Magnetband oder Streamer .................211 Sicherung mit epio als Archiv ..............................214 Einlesen gesicherter Daten aus einem epio-Archiv ............. 216 Erstellen einer Sicherung mit tar ............................ 219 Restaurieren von Dateien aus einem tar-Archiv ................221 In welchem Turnus soli eine Sicherung erfolgen? .............. 222 Austausch von Daten mit dem PC ..........................227 Noch ein paar Tips fOr den Austausch PC und UNIX-Rechnern ... 229 Zusammenfassung der Kommandos ........................230 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7 3.5.8 3.5.9 3.5.10 3.5.11 3.5.12 3.6 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.7 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 Wissenswertes ilber Netze ..............................235 Was ist ein Netz - ein paar Grundinformationen ............... 236 Wie wird eine Verbindung hergestellt? .......................238 Welche Netzwerk-Kommandos sind fOr Sie interessant? ........ 238 Wie arbeiten Sie mit ftp? ..................................245 Zusammenfassung der Kommandos ........................250 Wichtige Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 252 Shell-Prozeduren ......................................253 Die Vorteile von Shell-Prozeduren ..........................254 Was sind Shell-Prozeduren? ...............................254 Welche Vorteile bieten Ihnen eigene Shell-Prozeduren? ......... 256 Erstellen eigener Shell-Prozeduren ..........................257 Was k6nnen Sie in eine Prozedur eingeben? .................. 257 Die einzelnen Schritte zur Erstellung eines Sicherungskommandos ...................................259 Vordefinierte Shell-Variable ................................262 Wie k6nnen Sie Ihren ,PATH, erweitern? ..................... 262 Das Wesentliche Ober die Shell-Variablen ....................265 Positionsparameter ......................................268 Verwendung von Positionsparametern .......................268 Ablaufsteuerung einer Shell-Prozedur .......................271 Wie verwenden Sie die if-Bedingung? .......................274 Wie k6nnen Sie if-Bedingungen schachteln? ..................275 Wie verwenden Sie das test-Kommando, um eine ASCII-Zeichenkette zu OberprOfen? ......................... 277 Wie verwenden Sie test, um Zahlenwerte zu vergleichen? ....... 280 Beispiele zur Erstellung von eigenen Shell-Prozeduren .......... 281 XI
3.7.7 3.7.8 3.7.9 3.8 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.8.8 3.8.9 3.9 3.9.1 3.9.2 3.9.3 3.9.4 3.9.5 3.10 3.10.1 3.10.2 3.10.3 XII Schleifenverarbeitung ....................................285 Wie verwenden Sie die for-Schleife? ........................286 Wie wird das Kommando ,for Name in Wort ... ' verwendet? ...... 288 Wie wird das Kommando ,while' oder ,until, verwendet? ......... 290 Weitere nOtzliche Kommandos fOr Shell-Prozeduren ............ 293 Wie konnen Sie eine Schleife abbrechen? ....................293 Wie fOhren Sie Rechenoperationen durch? ...................294 Funktionen - (function) . ...................................299 Zusammenfassung Kommandos/Zeichen zur Ablaufsteuerung ................... 300 Die Korn-Shell ........................................305 Die Vorteile der Korn-Shell ................................306 Wie arbeiten Sie mit der Korn-Shell? ........................308 Wie starten Sie eine Korn-Shell? ...........................308 Der History-Mechanismus ................................309 Der Befehlszeileneditor ...................................310 Der Alias-Mechanismus ..................................312 Variablen der Korn-Shell ..................................314 Spezielle vordefinierte Variable .............................316 Zusatzliche Optionen ....................................318 ProzeBkontrolle (Jobcontrol) ...............................319 Zusammenfassung ......................................322 Wichtige Dateien ........................................322 In diesem Kapitel behandelte Kommandos ................... 322 Vordefinierte Variable bzw. Sonderzeichen ...................324 Zusatzliche Optionen ....................................324 Besonderheiten der C-Shell ..............................325 Eigenschaften der C-Shell ................................326 Wie wird die Fehlerumleitung eingegeben? ...................327 Was ist anders bei der Ablaufsteuerung? .....................327 Wie wird mit Variablen gearbeitet? ..........................328 Aliasbildung/-aufhebung ..................................328 Noch ein paar Befehle ..................................329 Umleitung mit tee .......................................330 Kommandos, um Dateien und Zeichenketten zu verandern ...... 331 Sortieren von Dateiinhalten oder Zeichenketten (sort) ............ 331 Separieren (Ausschneiden) von Spalten aus Dateien oder Zeichenketten (cut) ..................................333 Vergleichen von Dateien (dift, cmd) .........................334 Das Kommando read in Verbindung mit dem Pipe-Mechanismus .. 336 Nur ein kleiner Blick in Dateien {head, tai~ . ....................337 Programme starten, und Sie gehen schlafen (nohup) ............ 338
4 4.1 4.2 4.2.1 4.3 4.4 4.5 4.5.1 4.5.2 4.5.3 4.6 4.7 4.7.1 4.7.2 4.7.3 4.8 4.8.1 4.8.2 4.9 CDE - die grafische Benutzeroberflache unter UNIX ......... 339 Wie melden Sie sich an ...................................340 Die Desktop-Anzeige ....................................341 Der Terminkalender ......................................344 Wie arbeiten Sie auf dem Desktop - der Arbeitsflache? ......... 345 Wie aktivieren Sie weitere Arbeitsbereiche? ...................346 Wie arbeiten Sie mit dem Texteditor? ........................347 Wie starten Sie den Texteditor? ............................347 Wie konnen Sie Texte verandern? ..........................348 Wie konnen Sie Texte formatieren? ......................... 349 Welche Hilfsfunktionen bietet das CDE? .....................352 Der Dateimanager .......................................354 Wie fOhren Sie die einzelnen Aktionen durch? .................358 Loschen von Dateien - Entleeren des Papierkorbs ............. 361 Automatisches Starten von Kommandos ..................... 362 Wie passen Sie das CDE an Ihre WOnsche an .................363 Andern der Desktop-Anzeige ..............................363 HinzufOgen einer Bedientafel ..............................364 Anlegen von weiteren Arbeitsbereichen ......................365 Der Style-Manager ......................................366 Zum AbschluB noch ein paar Tips zum CDE aus der Praxis ...... 371 5 Obersichten ...........................................373 5.1 Alphabetische Obersicht der Kommandos .................374 5.2 Verzeichnis der Bilder ...................................382 5.3 Glossar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 392 6 6.1 6.2 Literaturverzeichnis ................................... .405 Standarddokumentation UNIX V.4.2 ........................ .406 WeiterfOhrende Literatur und Literatur ...................... .409 7 Stichwortverzeichnis .................................. .411 Nachwort ....................................................425 Beigefugte Kurzreferenzkarte XIII
Einleit ung Sie haben sich ein UNIX-Buch ausgesucht, das keine EDV-Kenntnisse voraussetzt. Ein Lehrbuch, mit dem Sie Ihr eigenes Seminar gestalten konnen. In diesem Buch habe ich viele Erfahrungen aus meinen Seminaren einflieBen lassen, um Ihnen das Lernen zu erleichtern. In einem Seminar konnen die einzelnen Themen jeweils dem Wissensstand der Teilnehmer angepaBt werden. Haben sie etwas nicht verstanden, so konnen sie sofort fragen. In diesem Buch bemuhe ich mich deshalb, viele der eventuell auftretenden Fragen zu beantworten. Aus diesem Grund mag zuweilen ein Thema eher zu ausfUhrlich als zu knapp behandelt sein. A"e erstmals auftretenden Fachausdrucke werden kurz erklart. So weit es klar verstandlich bleibt, habe ich deutsche Ausdrucke verwendet. Wo aber die Verbindung zu UNIX-spezifischen Kommandos besteht oder wo ein englischer Ausdruck fester Bestandteil der deutschen Fachsprache geworden ist, wird dieser Ausdruck beibehalten. Bei englischen Fachausdrucken steht die deutsche Obersetzung, und wenn notig, eine kurze Erlauterung in Klammern, wenn sie das erste Mal verwendet werden. 1m anhangenden Glossar sind die in diesem Buch verwendeten Fachausdrucke und englischen Begriffe zusammengefaBt. Dieses Buch soli Ihnen eine EinfUhrung in UNIX geben, Ihnen das Wichtigste von UNIX vermitteln. Deshalb werden nicht aIle Kommandos (Befehle, Programmaufrufe) und deren Optionen (zusatzliche Angaben, die eine unterschiedliche AusfUhrung des Programmes bewirken) behandelt, sondern es sind nur die wichtigsten ausgewahlt, die Sie zu Beginn benotigen und die Ihnen die UNIX-typische Vorgehensweise naherbringt. Mit weitergehender Literatur, z.B. der jewei ligen Dokumentation (SOLARIS,LlNUX,HP_UX,AIX) konnen Sie dann selbst nach und nach in die Geheimnisse und Machtigkeit von UNIX vordringen. Was erwartet Sie, wenn Sie UNIX lernen? UNIX kann in etwa mit der englischen Sprache verglichen werden. Mit etwas Grammatik und einigen Wortern konnen C. Wolfinger, Keine Angst vor UNIX © Springer-Verlag Berlin Heidelberg 2000
"---- Einleit ung Sie sich bereits verstandigen. Um gut Englisch zu sprechen, bleibt Ihnen nichts anderes Obrig, als die Sprache zu lernen und sie standig in der Praxis anzuwenden (zu iiben), allein um all die Idiome und differenzierten Warter richtig einzusetzen. Sei UNIX ist es ahnlich. Doch erschrecken Sie nicht! UNIX hat nur ca. 300 bis 1500 Kommandos (von denen Sie auch nur einen kleinen Teil benatigen), die englische Sprache dagegen mehr als 500000 Warter. Mit der grafischen Oberflache (CDE) werden Sie sich auf jeden Fall schnell zurechtkommen. Also: Keine Angst vor UNIX! Wie nutzen Sie dieses Lehrbuch am besten? Jeder von uns hat seine eigene Lernmethode. Doch wir aile werden kaum vom einmaligen Haren oder Lesen neue Segriffe oder Funktionen aufnehmen kannen. Eine sichere Methode ist (wie der Titel eines sehr interessanten Suches von Frederik Vester Ober die verschiedenen Lernmethoden aussagt): Denken, Lemen, Vergessen Mitdenken, an nichts anderes denken, sich auf das Gelesene konzentrieren. Visuell - das wichtigste unterstreichen, sich Notizen machen, wirken lassen, wiederholen, am Rechner Oben DarOber schlafen, eine Entspannungspause einlegen, umsetzen. In diesem Lehrbuch finden Sie den Lehrstoff eines etwa 5-tagigen Intensivkurses. Nutzen Sie die Obungen, auch dann, wenn Sie glauben, den Stoff gut verstanden zu haben. Was sonst in Vortrag, Fragen und Antworten vermittelt wird, ist fOr Sie in diesem Such konserviert. Je nach Lust, Aufnahmetahigkeit und Appetit kannen Sie den Stoff in einzelne Portionen aufteilen. Ich wOnsche Ihnen guten Appetit und viel SpaB mit UNIX. Christine Wolfinger 2
1 Allgemeine Einfuhrung Dieses Kapitel gibt Ihnen einen allgemeinen Oberblick Ober Rechner, Dateien und Programme, und zeigt Ihnen die wesentlichen Merkmale von UNIX auf. Wenn Ihnen Grundbegriffe der Datenverarbeitung bereits gelaufig sind, konnen Sie die Absc.hnitte 1.1 bis 1.4 Oberspringen. Die einzelnen Themen: 1.1 Hardware und Software Rechner und Betriebssystem 1.2 Unterschied zwischen Datei und Dateisystem 1.3 Was ist ein Programm? 1.4 Programmiersprachen 1.5 Woher kommt UNIX? 1.6 Die UNIX-Portierungen verschiedener Firmen 1.7 Was ist das Besondere an UNIX? 1.8 Wer setzt UNIX ein? 3 C. Wolfinger, Keine Angst vor UNIX © Springer-Verlag Berlin Heidelberg 2000
1.1 Hardware und Software - Rechner und Betriebssystem Was ist ein Rechner, und welche Funktionen hat ein Betriebssystem? Unter ,Rechner< sollen hier aile Gerate und Komponenten verstanden sein, die einen funktionstUchtigen Computer ausmachen. Was gehOrt alles zu einem Rechner? Was muB in Gang gesetzt, verwaltet, koordiniert, kontrolliert werden? Sehen Sie sich die schematische Darstellung eines Rechners an: Elektronikkarten (boards) wie Prozessor. Speicher, Steuereinheiten ( Controller) Kabel zur Dialogstation (Terminal) Kabel zum Drucker ~ Bild 1-1 Schematische Darstellung eines Rechners Die oben gezeigten Hauptbestandteile eines Rechners sind: 4 o Elektronikkarten, auch Boards genannt. Zu ihnen gehOren Speicher (memory), der Prozessor (oder die CPU) und Steuereinheiten (controller), die dafOr sorgen, daB die einzelnen Gerate, wie Terminal, Drucker, Floppy (auch Floppy Disk oder Diskette genannt) und die Magnetplatten richtig betrieben und gesteuert werden. o Magnetplatten, CDs oder Floppies. Sie sehen ahnlich aus wie Schall platten, doch werden auf ihnen Daten gespeichert. In etwa vergleichbar mit der Ablage in einem BOro, wo man jederzeit geschriebene Briefe, Formulare, Notizen u.a. nach einem bestimmten System wiederfinden kann (soli). o Stromversorgung. Da Rechner intern nicht mit 220 Volt arbeiten, wird hier die Spannung Ober eine Stromversorgung (power supply) geregelt. o Kabel. Sie stellen die Verbindung zu Ein-/ und Ausgabegeraten her, wie zu Terminal und Drucker und dienen zur Obertragung von Dateninformationen und Steuerungssignalen.
Hardware und Software - Rechner und Betriebssystem 1.1 Aile aufgefOhrten Teile werden als Hardware (harte Ware) bezeichnet. Sie konnen sie sehen und anfassen, und wenn sie herunterfallen, klappert und klirrt es. Nur mit der Hardware allein werden Sie nicht viel Freude an Ihrem Rechner haben. Er kann namlich fast gar nichts. Einige Techniker behaupten, daB gegenOber dem menschlichen Gehirn ein Rechner ein Vollidiot mit Spezialbegabung ist. Und die Spezialbegabung erMlt er durch die Software (weiche Ware). Diese .sagt, der Hardware, was sie tun soil. Unter .Software, versteht man die Menge von Program men, die zum Betrieb eines Rechners notwendig sind. Wenn Sie einen Rechner starten (hochfahren) wollen, so wird bei den meisten Rechnern Ober ein fest eingebautes Programm eine Mini-Betriebssoftware geladen, die den Rechner befahigt, von der Platte und der Systemkonsole (Terminal, das fOr die Systemnachrichten ausgewahlt wurde) zu lesen und auf diese zu schreiben. Erst dann wird das eigentliche Betriebssystem (Programm) von der Platte in den Speicher geladen. Ein Rechner benotigt also immer ein Programm, in dem genau beschrieben ist, was und wie er etwas zu tun hat. Programme konnen in verschiedenen Programmiersprachen geschrieben werden und mOssen dann so Obersetzt werden, daB der Rechner sie lesen und ausfOhren kann. Das Umsetzen und Erkennen von Befehlen erfolgt durch den Prozessor, auch CPU (Central Processing Unit) genannt. 1m nachfolgendem Bild sehen Sie das Innenleben eines Rechners mit einem Prozessorboard. Bei den vielen kleinen, meist bunten Zylindern handelt es sich um Kondensatoren und Widerstande. Die viereckigen Kasten sind Mikroprozessoren, Speicherbausteine und sonstige Chips. Generell sind Chips kleine Bausteine, auf denen viele elektronische Komponenten dicht gepackt (in Kunststoff oder Keramik verpackt) untergebracht sind. Bild 1-2 Innenleben eines Rechners mit Prozessorboard 5
Allgemeine EinfUhnmg Welche Aufgaben hat ein Betriebssystem zu erfullen? Die Aufgabe eines Betriebssystems ist die Organisation fOr den Betrieb eines Rechnersystems. Mit Rechnersystem ist die Summe der wesentlichen Bestandteile eines Rechners gemeint. Hierzu zahlen: Odie eigentliche Verarbeitungszentrale, die man CPU (Central Processing Unit) nennt; o ein daran angeschlossener schneller Speicherbereich, den man Hauptspeicher oder englisch Main Memory nennt; o Speichergerate wie Platten, CDs, Floppies und Magnetbandgerate o und Einheiten, die Daten transportieren (Interface, Controller). Mit >Daten transportieren' ist gemeint, daB Daten, die Sie verarbeiten mochten, von >auBen, in den Hauptspeicher gelangen, und Ergebnisse nach au Ben geschafft werden. Mit >auBen, sind hier entweder Bildschirme oder Drucker gemeint oder Gerate, auf denen groBere Datenmengen gespeichert werden. Die Speicherung erfolgt in einer Form, die es dem Rechner erlaubt, einfach und schnell darauf zurOckzugreifen. Dies sind fOr recht schnelle Zugriffe Magnetplatten oder Floppy-Disketten (disk - Platte), fOr langsamere Zugriffe auch Magnetbander oder Streamer-Kassetten (Magnetband-Kassetten). All diese Gerate werden nicht direkt an den Hauptspeicher angeschlossen, sondern sie werden Ober ein sogenanntes Interface (oder auch Controller genannt) mit dem Rechner verbunden. Ein Betriebssystem kann mit den Aufgaben einer Stadtverwaltung verglichen werden. Die Aufgabe einer Stadtverwaltung ist es, die Dienste und Einrichtungen einer Stadt (wie BOrgermeisteramt, Einwohnermeldeamt, POlizei, Feuerwehr, Sportplatze, ...) zu verwalten und zu betreiben. Die Funktion eines Rechner-Betriebssystems ist es, die oben aufgefOhrten Einheiten zu verwalten und zu betreiben. Hierzu gehort z. B., die Benutzung eines Druckers so zu regeln, daB die unterschiedlichen Ausgaben mehrerer Benutzer nicht wild durcheinander gedruckt werden, oder zu verhindern, daB Benutzer sich >nicht rechtmaBig' verhalten (z. B. Daten anderer Benutzer 16schen, wenn diese solches nicht erlauben). Eine Stadtverwaltung stellt dem Einwohner eine Reihe von Diensten zur VerfOgung (oder so lite sie zur VerfOgung stellen). Viele dieser Dienste sehen nach auBen einfach aus, z. B. das Anmelden einer Geburt, erfordern jedoch intern viele einzelne Schritte und viel Koordination: Bei der Geburt wird der Name in das Melderegister eingetragen, das Statistische Amt verstandigt, der zustandige Pfarrer informiert, das Gesundheitsamt benachrichtigt, usw. Ahnlich bietet auch das Betriebssystem dem Benutzer eine Reihe von Diensten an, die intern viele einzelne Verarbeitungsschritte erfordern und komplexe Ablaufe anstoBen. Ein wesentlicher Dienst besteht z. B. darin, dem Benutzer die 6
Hardware und Software - Rechner und Betriebssystem 1.1 Verwendung der unterschiedlichen Gerate in einer weitgehend einheitlichen Art anzubieten. Diese Gerate haben jedoch recht unterschiedliche Eigenschaften. So kann ein Benutzer dem System in gleicher Art sagen: .Gib das Rechenergebnis auf dem Drucker aus, oder .Gib das Rechenergebnis auf das Terminal (Dialogstation) aus,. Das Betriebssystem versteckt in diesem Fall die Unterschiede der einzelnen Gerate vor dem Benutzer und stellt statt dessen den Dienst .Gib aus auf Gerat..., zur Verfugung. Bei der Verwaltung bzw. der Regierung eines Landes gibt es eine Reihe unterschiedlicher Regierungsformen (z. B. Demokratie, Diktatur, Monarchie), die festlegen, wie regiert wird und nach welchen Kriterien die vorhandenen Mittel vergeben werden. Fur die einzelnen Bereiche haben dabei die verschiedenen Formen Vor- und Nachteile. Ebenso gibt es verschiedene Arten von Betriebssystemen, die sich in der Art der Zuteilung der vorhandenen Betriebsmittel eines Rechners unterscheiden. Eines der wesentlichen Betriebsmittel eines Rechners ist die eigentliche Verarbeitungseinheit (die CPU) und der Hauptspeicher. Gibt man jedem Programm eine permanente Prioritat (analog zum Privi/eg in einem autoritaren System) und vergibt die wichtigen Betriebsmittel immer an das Programm mit der hochsten Prioritat, solange bis das Programm sie nicht mehr benotigt, so nennt man dies ein Realzeitsystem. Ein solches System mag etwas ungerecht erscheinen, erlaubt aber, daB wichtige Aufgaben vorrangig durchgefOhrt werden. Z. B. wird das Abschalten einer Maschine in kritischen Situationen vorrangig durchgefuhrt, wahrend z. B. die Berechnung von einer Statistik, wieviele Mitarbeiter in diesem Monat krank waren, zuruckgestellt wird. Bei einer anderen Betriebssystemform werden die Betriebsmittel gleichmaBig auf aile Programme oder aile Benutzer verteilt - d. h., jedem steht die CPU eine kurze Zeit zur Verfugung, dieser wird dann unterbrochen, und der nachste Benutzer wird bearbeitet usw., bis jeder einmal dran war. Dann wird wieder von vorne begonnen. Dies geschieht wegen der hohen Arbeitsgeschwindigkeit der heutigen Rechner jedoch in der Regel so schnell, daB der Benutzer den Eindruck hat, ihm stande der Rechner alleine zur Verfugung. Solche Systeme nennt man Time Sharing Systeme, da sie die Rechnerzeit zwischen den einzelnen Benutzern bzw. den einzelnen Programmen weitgehend gerecht aufteilen. Das Betriebssystem UNIX ist ein solches Time Sharing System. In der Vergangenheit war es so, daB jeder Hersteller fOr seine Maschine ein eigenes Betriebssystem erstellt hat, welches die Eigenschaften seiner Maschine optimal zu nutzen versuchte. Auf diese Weise entstanden recht viele verschiedene Betriebssysteme. Hatte ein Hersteller dabei mehrere im Aufbau unterschiedliche Maschinen, so hatte sogar der gleiche Hersteller unterschiedliche Betriebssysteme. Weitere Betriebssystemvarianten kamen einfach durch die lange Jahre laufende Weiterentwicklung hinzu. Auf diese Weise entstand eine 7
'------- Allgemeine EinfOhrung groBe Anzahl sehr unterschiedlicher und untereinander nicht austauschbarer Betriebssysteme. Will ein Benutzer in dieser Situation von einem System auf ein anderes wechseln, so muB er auch zumindest die Grundbedienung des neuen Systems erlernen. In der Regel mussen auch die Programme, die er fUr seine Anwendung benutzt hat, mit groBem Aufwand auf das neue Betriebssystem umgestellt werden. Der Einsatz von unterschiedlichen Betriebssystemen war trotz des Umlernens und des dabei oft notwendigen Umschreibens eingesetzter Programme solange sinnvoll, wie damit die bestmogliche Ausnutzung der Maschine und somit eine Senkung der CPU-Kosten erreicht wurde. Dies hat sich inzwischen aus folgenden Grunden geandert: o heute verwenden viele Hersteller die gleichen CPU-Komponenten, Odie CPU-Leistung ist sehr viel billiger geworden (etwa um den Faktor 32 in 10 Jahren!), Odie Rechnergenerationen wechseln heute aufgrund des technischen Fortschritts so schnell (etwa aile 3 Jahre), daB auch groBe Hersteller es sich nicht mehr leisten konnen, jedesmal ein neues Betriebssystem zu entwickeln, Odie Benutzer mochten sich nicht mehr so fest wie fruher an einen Hersteller und sein System binden und mochten bei der Umstellung auf ein neues Rechnersystem moglichst wenig neu erlernen mussen. All dies verlangt nach einem Betriebssystem, das sowohl auf den verschiedenen Rechnern eines Herstellers als auch auf den unterschiedlichen Rechnern der verschiedenen Hersteller in gleicher Weise lauft. Es gibt heute mehrere solcher Betriebssysteme. Die Systeme CP/M und MS/DOS laufen auf den unterschiedlichsten Rechnern, jedoch jeweils nur fUr einen CPU-Typ (CP/M fUr Intel 8080 und Z80-CPU (Zilog), MS/DOS fUr die 8086-, 80XXX- und Pentium-CPUs von Intel). UNIX ist eines der wenigen Systeme, welches auf unterschiedlichen Rechnern mit sehr verschiedenen CPU-Typen lauft. Es bietet damit fUr eine Reihe der oben genannten Probleme eine annahernd ideale Losung und ist somit in der Lage, viele andere Betriebssysteme zu ersetzen. Allerdings kann es nicht aile Betriebssysteme ablosen, denn es gibt immer noch unterschiedliche Anforderungen bzw. Einsatzgebiete (z. B. die Realzeitverarbeitung, die eben doch in vielen Punkten von der eines Time-Sharing-Systems abweicht). Es gibt auch bei Betriebssystemen noch kein >eierlegendes Woll-Milch-Schwein<. 8
Hardware und Software - Rechner und Betriebssystem 1.1 --------------------~ Zusammenfassung der wesentlichen Aufgaben eines Betriebssystems. Wenn Sie Ober Terminal einen Auftrag, einen Befehl (Anweisung) eingeben, so muB das Betriebssystem: CD ® ® @) ® ® Ihre Eingabe erkennen und weiterleiten; das Programm fOr diesen Befehl, Ihre Eingabe und evtl. weitere Daten in den Speicher laden; das Programm starten, den ordnungsgemaBen Ablauf kontrollieren und es beenden; Systemzeiten festhalten, die Zeit zuordnen, kontrollieren; falls Sie als Ausgabe Informationen auf die Platte schreiben wollen, so muB dort eine Datei angelegt werden, die auch jederzeit wiedergefunden werden soli; die zum Ablauf erforderlichen Betriebsmittel zur VerfOgung stellen. Mit der folgenden Grafik werden wesentliche Aufgaben eines Betriebssystems dargestellt: Systemstatistiken (Accounting) Bild 1-3 Hauptaufgaben eines Betriebssystems 9
1 Allgemeine EinfUhrung Wenn Sie sich ein Betriebssystem als das Gehirn eines Rechners vorstelien, so magen Ihnen nachstehende Impressionen zeigen, was in so einem Kopt vorgehen kannte: Anforderungselement, best fit, Buchhaltungsaktion, capability, close, Dateiverwaltung, Ersetzungsstrategie, FIFO, Gerateverwaltung, Implementierung, 1/0Control, InformationsfluB, Kachel, Kanal, Lesen, Leser-/Schrei - oblem, LUcke, Mo multi user, multi level feed Nichtblockierung, 0 operation, paging, Parameterblock, Peripherie, peripheres Genii, Prozedur, ProzeB, Plattenspeicher, Prioritat, prompt, read, remote procedure cal, Satz, Schedule, Segment, Seite, Sektorkanal, Se apho Sicherheit, Spezifikation, Steuereinheit, 1 swapping, splitting, TeilprozeB, Transport, Treiber, Synchronisation, Unterbrechung, Vektor, Verklemmung, Warteschlange, write, Zugriffsliste Damit mOssen aber nicht wir unseren Kopt belasten, denn diese Aufgaben nimmt uns das Betriebssystem ab, zumindest was UNIX betrifft. 10
Unterschied zwischen Datei und Dateisystem 1.2 1.2 Unterschied zwischen Datei Lind Dateisystem Bisher haben wir uns mit den allgemeinen Ablaufen eines Betriebssystems beschaftigt. Das Wesentliche fOr den Anwender ist, daB der Rechner Aufgaben fOr ihn durchfOhrt. Die Informationen, die der Rechner dafOr benetigt, kennen diesem z. B. uber ein Terminal mitgeteilt werden. Sollen Informationen (in der DVWelt nennt man dies auch Daten) gespeichert (aufbewahrt) werden, so werden sie als logische Einheit auf Platte, Floppy, Magnetband oder einem anderen Medium abgelegt. Diese logische Einheit wird als Datei bezeichnet. Die Information kann aus einer Foige von Ziffern, Buchstaben und Sonderzeichen bestehen. Der Inhalt einer Datei kann z.B. Ihre Adresse mit Telefonnummer oder der Text dieses Kapitels sein. Je nachdem, wie die Informationen aufgezeichnet sind, unterscheidet man z. B. Dateien, o die fur uns lesbar sind, z. B. unter UNIX im ASCII-Code gespeichert (American Standard Code for Information Interchange -Amerikanischer Standardcode fOr Informationsaustausch), o oder binare Dateien, z. B. die ausfOhrbaren Programme, die im Binarformat gespeichert sind (binar - aus 2 Einheiten bestehend, z. B. 0 und 1). Darstellung von Zahlen in Binarform: 1 = 00001, 2 = 00010, 3 = 00011, 4 = 00100 usw. Um eine Datei ansprechen zu kennen, erhalt sie einen Namen und eine Art Adresse, aus der hervorgeht, wo auf der Platte oder Floppy die Datei abgelegt wurde. Uns braucht zunachst nur der Name zu interessieren. Sie kennen sich eine Datei bildlich wie ein Dokument oder einen Artikel vorstellen. Ein solches Dokument bildet eine Einheit. Es kann z. B. zusammengeheftet und abgelegt werden. Es besteht in sich aus Satzen, diese sind aus Wertern zusammengesetzt und die Werter aus Zeichen. Analog spricht man beim Inhalt einer Datei von Satzen, Satzelementen oder Feldern (statt Werter) und Zeichen. Ein Dateisystem ist eine nach bestimmten Regeln angeordnete Menge von Dateien, eine Art Ablagesystem der Dateien, dam it sie jederzeit schnell und sicher wiedergefunden werden kennen. Bildlich kennen Sie sich ein Ablagesystem wie einen groBen Schrank mit vielen Schuhschachteln vorstellen. Sie kennen kleinere in greBere Schachteln packen - doch die Anzahl der Schachteln ist auf die GreBe des Schranks begrenzt. In einem Rechner kennen Sie Dateien unter einem Directory (ahnlich einer Schachtelj ablegen, unter diesem Directory weitere Directories anlegen und so fort. So kennen viele Directories ineinandergeschachtelt werden. Man spricht hierbei auch von einem hierarchischen Dateisystem. Diese immer weitergehende Verzweigung finden Sie auch in der Natur, z. B. bei einem Baum: Wurzel - Stamm - Aste - Zweige - Blatter. 11
1 Allgemeine EinfUhrung Das UNIX-Dateisystem beginnt mit einer Wurzel und verzweigt sich wie ein Baum. Deshalb wird auch von einer Baumstruktur gesprochen. Die Dateien werden bestimmten Zweigen zugeordnet. Die Knotenpunkte dieser Zweige werden als Directories bezeichnet. Die Directories sind mehr oder weniger ein Inhaltsverzeichnis der Dateien und weiteren Directories, die sich unter diesem Zweig befinden. Jede Datei erhalt einen Namen, ebenso die Directories. Der Weg von der Wurzel des Baumes bis hin zu der Datei wird als Pfad bezeichnet. Mit dem Pfad und dem Namen der Datei kann eindeutig die jeweilige Datei wiedergefunden werden. Der Name des ersten Directories ist der Schragstrich >/ , und wird als >root, (Wurzel) bezeichnet. (root directory) Die Wurzel des Baumes ( ~ ... bin Is ) ~ ( ... ~ ( man 1 ( ) tmp ) ( man ) ( ... ( manS usr frei ) ( ) lib )( I passwd] etc ) [U"rliXJ ~oup ... i~ltab l ) Verzweigung. Directory Dalai Bild 1-4 Beispiel des Dateisystems unter UNIX Die Programm-Datei Is ist eindeutig definiert mit /binlls. Der erste Schragstrich bezeichnet das 1. Directory: die root. Die weiteren Schragstriche kennzeichnen die Trennung von einem Directory zum anderen bzw. zur DateL 12
, .3 Was ist ein Programm? 1.3 Was ist ein Programm? Ein Programm, sei es ein Programm fUr den heutigen Abend, ein Kino- oder Theaterprogramm oder ein Computerprogramm, bedeutet immer: nach einem bestimmten Plan etwas durchfUhren. In der elektronischen Datenverarbeitung werden in einem Programm aile Anweisungen in einer dem Rechner verstandlichen Form aufgefOhrt, die zur L6sung einer Aufgabe notwendig sind. Dabei gibt es unterschiedliche Arten von Anweisungen: Arithmetische Anweisungen Hierzu geh6ren die Grundrechenarten Addieren, Subtrahieren, Multiplizieren und Dividieren, z. B.: c=a+b Logische Vergleiche Das sind Vergleiche auf groBer oder kleiner, und VerknOpfungen mit und, oder, und die Negation davon (nicht). Wird z. B. mit ,und< verknOpft, mOssen beide angegeben Bedingungen erfOlit sein. ,Aile Firmen, die mehr als 1000 Mitarbeiter haben ,und< in MOnchen ihren Sitz haben ... sollen aus einer AdreBdatei herausgefunden werden .< Programmverzweigungen Wenn eine bestimme Bedingung erfOlit ist, dann soli die nachste Anweisung durchgefUhrt werden, sonst eine andere. Beispiel: In einem Programm wird der Benutzer gefragt: ,Soli die Datei xy angezeigt werden?< Antwortet er mit ja, dann wird der Inhalt der Datei angezeigt, antwortet er mit nein, dann wird folgende Nachricht am Bildschirm ausgegeben: ,Soli die Datei xy gel6scht werden?< z. B.: if ... then ... else Sprunganweisung 1m Faile, daB ein vorgegebenes Muster zutrifft, sollen bestimme Anweisungen durchgefUhrt werden. Z. B.: 1st die Option' -I, dann drucke die Liste im Langformat; ist die Option -F, dann gib die Liste in Kurzform aus; ist die Option -x, dann gib die Nachricht ,Falsche Option< aus und beende das Programm. • Option - wahlweise zusatzliche Angabe, mit der eine unterschiedliche AusfOhrung des Programmes erfolgen kann 13
1 Allgemeine EinfOhrung Schleifen Es soli solange eine Foige von Anweisungen durchgefOhrt werden, bis eine bestimmte Bedingung erfOlit ist. Z. B. ,Solange kein Endezeichen eingegeben ist, lies die nachste Eingabe!< Ein- und Ausgabe Eingaben und Ausgaben sind unter der UNIXBenutzerschnittstelle (Shell) standardmaBig dem Terminal zugeordnet. Mit der Aufforderung lese (read) wird z. B. das, was Sie am Terminal eintippen, Obernommen; mit dem Kommando schreibe (write), wird eine Nachricht auf den Bildschirm ausgegeben. Welche Arbeitsschritte sind notwendig, um ein Programm zu erstellen? Um eine bestimmte Aufgabe dem Rechner zu Obertragen (z. B. eine Lohnabrechnung durchzufOhren), muB die Aufgabe in Einzelschritte zerlegt und in eine geordnete Foige von einzelnen Anweisungen gebracht werden. Eine Foige von Anweisungen, die zusammen ein Problem (oder ein Teilproblem) lost, nennt man Programm. Die Anweisungen werden dem Rechner in einer formalen, zumeist an die eng lische Sprache angelehnten Sprache eingegeben. Diese Sprache nennt man entsprechend Programmiersprache. Die Programmiersprache muB deshalb sehr formal sein, weil bei einem Programm Mehrdeutigkeiten also auch Zweideutigkeiten, wie sie in der natOrlichen Sprache vorkommen, nicht erlaubt sind. Der Rechner ist eben bei Mehrdeutigkeiten zu dumm, um zu entscheiden, welche der moglichen Bedeutungen gemeint ist. Da Programme sehr klar und Schritt fOr Schritt beschrieben die Losung einer Aufgabe vorgeben mOssen, erfordert das Programmieren Sorgfalt und klare Oberlegung. Komplexe Aufgaben mOssen dabei in einfache Schritte zerlegt und aile denkbaren Faile bedacht werden. Dabei helfen Strukturplane wie z. B. ein Ablaufdiagramm (auch FluBdiagramm genannt). FOr die verschiedenen Anweisungstypen werden unterschiedliche Symbole verwendet. Einige dieser Symbole sind: nein 8eginn oder Ende 14 Anweisung Verzweigung ,----I-----,7 Ausgabe
1.3 Was ist ein Programm? In dem folgenden Bild ist ein Beispiel eines moglichen Ablaufdiagramms dargestellt. Es beschreibt ein kleines Programm, mit dem Sie Telefonnummern abfragen konnen. Anweisung mit Ausgabe Anweisung Anweisung Suche nach dem Namen in der Kundentabelle Anweisung mit Ausgabe ja Verzweigung Anweisung mit Ausgabe Anweisung Frage ob das Programm beendet werden soli Anweisung 1st Verzweigung ja ~ ~~--------~~ ... Schleife Bild 1-5 Beispiel eines FluBdiagrammes Sie sehen, zur Erstellung eines Ablaufdiagrammes braucht man noch nicht programmieren zu konnen, sondern nur klar und prazise zu den ken und zu formulieren! 15
Allgemeine EinfUhrung 1.4 Programmiersprachen Jeder Rechner erkennt nur seinen eigenen, vorgegebenen Maschinencode (in Binarform). Wie die Sprachen unterschiedlicher Nationen voneinander abweichend sind, so k6nnen auch Maschinencodes unterschiedlicher Prozessoren verschieden sein. Aile Anweisungen und Vereinbarungen mOssen in diesen Code, der nur aus 0 und 1 besteht, Obersetzt werden. Es ware eine fUrchterliche Aufgabe, wenn die Programmierer aile Anweisungen in 0 und 1 schreiben mOBten. Deshalb gibt es sogenannte ,h6herec Programmiersprachen, die das Schreiben von Programmen erleichtern. Ein in einer Programmiersprache erstelltes Programm wird als Quel/programm bezeichnet. Erst das Obersetzte (compi/ierte) Programm (Objektprogramm) kann ausgefUhrt werden. Man unterscheidet: o Maschinenorientierte Sprachen: Assembler Dies sind prozessorbezogene Programmiersprachen wie z. B. der Assembler fUr IBM-Prozessoren, oder fUr den Motorola- oder den Intel-Prozessor. o Problemorientierte Programmiersprachen: Sprachen, die unabhangig von der Rechenanlage so aufgebaut wurden, daB sie fUr bestimmte Anwendungsbereiche geeignet sind. Zu Ihnen gehOren z.B.: COBOL COmmercial Business Oriented Language fUr kommerzielle Probleml6sungen; BASIC Beginners All purpose Symbolic Instruction Code eine einfache hOhere Programmiersprache; FORTRAN FORmula TRANslation fUr technisch wissenschaftliche Anwendungen; C Die unter UNIX verwendete h6here Programmiersprache, die sowohl fUr technisch wissenschaftliche als auch fUr kommerzielle Anwendungen geeignet ist und unter UNIX besonders schnelle Verarbeitung gewahrleistet. r *' Nachricht auf Bildschirm ausgeben main { 0 r Hauptprogramm '/ printf ("hallo, ein kleiner Gruss von UNIX"); Bi/d 1-6 Beispiel eines >Mini<-C-Quel/-Programmes Bei jeder Programmiersprache sind bestimmte Regeln zu beachten, ahnlich der Grammatik und der Orthographie einer Sprache. Bei den meisten Programmier- 16
Programmiersprachen 1.4 sprachen ist es besonders wichtig, auf die richtige Reihenfolge von Sonderzeichen wie Semikolon, Punkte und Klammerungen zu achten. Doch das ist zunachst nicht unser Problem. Damit haben sich die Programmierer herumzuschlagen. Das in einer Programmiersprache entwickelte Programm (Quel/code) muB dann von speziellen Obersetzungsprogrammen (Compiler) in das Maschinenprogramm (Objectcode) umgewandelt werden, damit es vom jeweiligen Rechner (Prozessor) richtig interpretiert wird. Bei den Obersetzungsprogrammen wird das Quellprogramm auf etwaige formale Fehler (Syntaxfehler) untersucht und eine entsprechende Fehlerliste ausgegeben. Erst nach eriolgreichem, fehlerfreiem Obersetzen kann ein Programm (im Objectcode) gestartet werden. Ein gestartetes und gerade arbeitendes Programm wird auch als ProzeB bezeichnet. 17
Allgemeine EinfUhrung 1.5 Woher kommt UNIX? UNIX kommt aus Amerika von .Ma Bell<, wie die Bell Laboratories von Insidern mit dem Kosenamen genannt werden. Der korrekte Name ist Bell Laboratories der Firma AT&T (American Telephone and Telegraph). Die ·Bell Laboratories< sind ein riesiges Zentrum fOr Forschung und Entwicklung. Und wer waren die Vater von UNIX? Eine Gruppe von Programmierern, deren eigentliche Aufgabe darin bestand, groBe Softwareprojekte zu entwickeln. Um bessere Voraussetzungen hierfOr zu schaffen, entwarfen Ken Thompson und Dennis Ritchie ein eigenes Betriebssystem, mit dem sie interaktiv, im Dialog, arbeiten konnten. Ferner wirkten mit: S. Bourne (nach dem die gleichnamige Shell benannt wurde, S. Johnson, B. Kernighan, D. Mc llroy, J. Ossana, um nur einige zu nennen, die zusatzliche Hilfsprogramme (Utilities und Tools = Werkzeuge) entwickelten, um immer wiederkehrende Teilaufgaben schnell und einheitlich zu losen. Die wesentlichen Stadien und Versionen der UNIX-Entwicklung waren: 1969-1971 1973 1974-1976 1976-1982 1979 18 * Auf einer PDP-7* wurde die 1. Version von UNIX in Assembler (maschinennahe Programmiersprache) geschrieben. wurde UNIX umgeschrieben (ca. 10.000 Quellcode-Zeilen) in die hohere Programmiersprache C, die von Dennis Ritchie entwickelt worden war. Nur ein geringer Teil von ca. 1.000 Zeilen blieb in Assembler. UNIX wurde auf eine PDP11* Obertragen. UNIX konnte nun mit verhaltnismaBig geringem Aufwand auf all jene Rechner portiert (Obertragen) werden, die Ober einen CCompiler verfOgten. (Ein Compiler ist ein Obersetzungsprogramm, das den Quellcode einer hoheren Programmiersprache in den jeweiligen maschineninterpretierbaren Code umsetzt). entstand die Version UNIXN6. Ab hier spaltete sich die Weiterentwicklung von UNIX: o auf VAX*/Interdata die Version UNIXN32 und UNIXN7 o und UNIX fOr PWB (Programmer's Workbench); o parallel wurde an der Berkeley-Universitat (Kalifornien) UNIX unter dem Namen BSD weiterentwickelt. o Aufbauend auf der Version UNIXN7 haben auch eine Reihe von Firmen, wie Microsoft (XENIX), DEC (ULTRIX), Amdahl (UTS), Hewlett Packard (HP-UX), PCS (MUNIX) u.a. UNIX portiert und auf ihren Rechnern eingesetzt. Aile Portierungen, die nicht von AT&T vorgenommen wurden, muBten vertraglich einen anderen Namen tragen. wurden die unter AT&T unterschiedlichen Entwicklungen der UNIX-Versionen UNIXN7 und UNIX fOr PWB in UNIX System III PDP-7, PDP-11, VAA sind Rechner der Firma DEC (Digital Equipment Corporation)
Woher kommt UNIX? 1983 1984 1986 1987 1990 1'990 1992 1993 1994 1995 1998 1.5 zusammengefUhrt. Diese Version wies jedoch noch einige Mangel und Schwachen auf. kam dann die verbesserte Version System V.O auf den Markt. GrOndung der Gruppe BISON', die 1985 in XlOPEN umbenannt wurde. Sie vertritt die Interessen der UNIX-Anwender aus nichtenglischsprachigen Landern (Internationalisierung, erweiterter Zeichensatz, Spezifikationen von Standards). Die Erarbeitung der Richtlinien wird im XlOPEN Portability Guide (XPG) veroffentlicht. In USA werden die Interessen der UNIX-Anwender von einer Arbeitsgruppe innerhalb von IEEE vertreten, die 1985 die dort erarbeiteten Standards in dem sog. POSIX dokumentierten. erscheint UNIX System V Version 2 (V.2). erscheint UNIX System V Version 3 (V.3). UNIX auf Intel 386: SCO-UNIX, basierend auf der XENIX-Version von Microsoft, das von SCO Obernommen wurde. UNIX System V.4 entwickelt von USL (Unix Software Laboratories von AT&l) in enger Zusammenarbeit mit Sun. Hierbei wurden die wichtigsten UNIX-Systeme zusammengefaBt, um ein vereintes UNIX zu schaffen. Wegen der eng en Zusammenarbeit von SUN und AT&T wurde als Gegenpol die OSF (Open Software Foundation) von IBM, DEC und HP gegrOndet. Zahfreiche weitere Firmen traten als Mitglieder beL OSF entwickelte u.a. die graphische Oberflache Motif und ein neues UNIX: OSF/1. UNIX System V.4.2 kommt auf den Markt. Um dem starken Konkurrenzkampf von Microsoft (Windows-Nl) entgegenzuwirken, vereinbaren die fUhrenden UNIX-Anbieter einheitliche Schnittstellen, die unter dem Namen COSE (Common Open System Environment) zusammengestellt werden. DEC Obernimmt OSF/1 als Nachfolgeversion zu ULTRIX. Novell Obernimmt die AT&T Tochterfirma USL und bringt ein auf PC lauffahiges UNIX heraus: Unixware. Noveli/USL Obergibt das Warenzeichen UNIX an XlOPEN. Erganzung von XPG um eine weitere Vereinheitlichung von UNIX durch die sog. 1170-Spezifikation (Spec1170) und der CDE (Common Desktop Environment), einer gemeinschaftlichen grafischen Benutzeroberflache. SCO erMlt von Novell die Source-Lizenzen fUr UnixWare SCO und IBM entwickeln gemeinsam ein UNIX-System fUr IA-64 DEC und Compaq fusionieren * Bull, tCL, Siemens, Olivetti, Nixdorf 19
1 Allgemeine EinfUhrung Monterey/64 (UNIX-System von SCO/IBM) li3.uft auf Intel's Merced Chip Sun Obernimmt StarOffice 1999 1999 1.6 Die UNIX-Portierungen verschiedener Firmen UNIX gibt es unter verschiedenen Namen. In der nachstehenden Aufstellung sind nur einige UNIX-Portierungen aufgefOhrt. Falls Sie bereits mit Internet arbeiten, finden Sie unter den angegebenen Adressen, dort meist unter Produkte Software - Betriebssysteme (OS Operating Systems), Informationen zur aktuellen Version und auf welchen Rechnern/Prozessoren die UNIX-Derivate laufen. UNIX-Derivat Hersteller, Systemhaus oder Adresse im Web http:// Distributor" AIX IBM www.ibm.de BSD/ OS Berkeley Software Design University of California, Berkeley www.bsd.com HP_UX Hewlett Packard www.hp.com IRIX Silicon Graphics SGI www.sgi.com Ll NUX GNU (FSF Free Software Foundation) Debian' RedHat' Slackware· SuSe' u.a. www.gnu.org Monterey/64 IBM,SCO,Sequent,lntel www.sco.com/monterey UnixWare SCO SINIX Siemens SOLARIS Sun Microsystems ULTRIX. OSF/1 Digital UNIX True 64 UNIX COM PAC - DEC www.debian.com www.redhat.com www.slackware.com www.suse.de www.sco.com --1-- .- www.siemens.de www.sun.de www.dec.com www.compaq.com Bild 1-7 UNIX-Portierungen verschiedener Firmen LlNUX kann auch Ober Fachbuchhandlungen bestellt werden. z. B. JF Lehmanns, Tel. 0221/42 81 53 , Adresse im Web http://www.jfl.de 20
Was ist das Besondere an UNIX? 1.7 1.7 Was ist das Besondere an UNIX? Eine der wesentlichen und hervorstechenden Eigenschafien von UNIX ist die Portierbarkeit, die es zu einem weitverbreiteten, rechnerunabhangigen Betriebssystem werden lieB. Was bedeutet Portierbarkeit? Man bezeichnet ein Programm dann als >gut portierbar(, wenn es mit geringem Aufwand von einem Rechnersystem auf einen fremden Rechner Obertragen werden kann. Wir Anwender konnen natOrlich kein Betriebssystem auf einen anderen Rechner Obertragen; dies ist eine Aufgabe fOr Systemanbieter. FOr uns ist es wichtig, wenn wir bereits mit einem UNIX-Rechner arbeiten, daB wir Programmablauffolgen und Quelltextprogramme ohne groBen Aufwand Obernehmen konnen. Die Kompatibilitat zu den meisten UNIX-Versionen ist weitestgehend unter System V erreicht. Ab Version System VA ist auch eine Binarkompatibilitat (d. h. ausfOhrbare, kompilierte Programme) fOr Rechner mit gleichem Prozessor (z. B. fOr Intel oder MIPS) moglich. Weitere wichtige Eigenschafien von UNIX sind: D Multi-User-Betrieb (Mehrbenutzerbetrieb) Mehrere Benutzer konnen gleichzeitig am System arbeiten. Jeder Benutzer meldet sich mit einer eigenen Namenskennung und einem PaBwort an. D Multi-Tasking Jeder Benutzer kann mehrere Programme parallel ablaufen lassen, z. B. Editieren und gleichzeitig Texte ausdrucken. 1m Gegensatz zu MS-Windows laufen diese Prozesse gleichzeitig, d.h. sollte ein ProzeB abstOrzen, bleiben trotzdem die anderen Prozesse erhalten und der Rechnerbetrieb als solcher laufi weiter. D Timesharing Wenn mehrere Prozesse quasi gleichzeitig laufen, wird der Platz im Hauptspeicher oder im Prozessor abwechselnd den einzelnen Prozessen nach einem Prioritatsschema zugewiesen. D Dialogverarbeitung Jeder Benutzer kann von seinem Terminal dialogorientierte Programme aufrufen, Daten eingeben und erhalt die Ergebnisse am Bildschirm angezeigt. Er muB also nicht die Anweisungen erst in eine Datei schreiben. D Individuelle Zugriffsrechte fUr Dateien Ober Zugriffsrechte wird festgelegt, wer die Dateien, Gerate oder Directories ansehen (Iesen - read), verandern (schreiben - write) und ausfOhren (execute) dart. Hierbei unterscheidet man nach dem Benutzer (user), der die Datei angelegt hat, der gleichen Gruppe (group) und den anderen (others). D Shell - Benutzerschnittstelle und Kommandointerpreter Die Shell interpretiert und kontrolliert in einer alphanumerischen Umgebung die vom Benutzer eingegebenen Kommandos. Ober die Shell-Steuersprache, die ahnliche Funktionalitat wie eine hohere Programmiersprache hat, kann der Ablauf von Program men gesteuert werden. Sie enthalt Vergleiche, 21
1 Allgemeine Einfiihrung Verzweigungen, bedingte AusfUhrungen, Schleifen, Zuweisung von Parametern und Variablen. o Verfugbarkeit zahlreicher Sprachen Welche Programmiersprachen auf Ihrem Rechner zur VerfOgung stehen, hangt von der jeweiligen Portierung der Compiler abo Fragen Sie Ihren Systemanbieter, welche Compiler verfOgbar sind. Unter UNIX laufen z. B.: C, C++, BASIC, FORTRAN, COBOL, Pascal, LISP, PROLOG, Ada, APL, Modula-2, Smalltalk, Java u.v.a. mehr. o Eine Vielzahl von Dienstprogrammen (Software-Tools) Zwischen 300 und 1500 Kommandos stehen dem UNIX-Anwender bereits mit der Grundsoftware zur VerfOgung. o Netzwerkfahigkeit - Kommunikation 1m Client-Server-Umfeld hat sich UNIX deshalb so bewahrt, weil es hierfOr ausgezeichnete Voraussetzungen bietet. Sowohl fOr LAN als auch fUr WAN gibt es entsprechende Hard- und Software. (LAN: Local Area Network, d. h. Rechner, die in der Regel auf einem GrundstOck miteinander verbunden sind. WAN: Wide Area Network, Rechner oder Netze, die Ober 6ffentliche Vermittlungssysteme wie Telefon, DatexP u.a. kommunizieren.) An Software gibt es z.B.: uucp (unix to unix copy). Die einfachste (und billigste) Verbindung zwischen UNIX-Rechnern. Es war u.a. ursprOnglich die Grundlage von mail und kann auch heute noch hierfOr verwendet werden. TCP/IP (Transmission Control Protocol-Internet Protocolj, die bedeutendste Protokollfamilie, mit der die meisten Anbindungen zwischen UNIX-Rechnern und zahlreichen anderen System en in einem LAN oder z. B. Ober Internet verbunden sind. Auf diesem Protokoll basieren eine Reihe von Diensten, wie mail, telnet und rlogin. o 22 Grafische Benutzeroberflache - GUI (Graphical User Interface) Auf den meisten UNIX-Systemen wird als grafische Oberflache X-Window und Motif angeboten. Diese Software erm6glicht auf einem grafischen Bildschirm mehrere Fenster einzurichten und unterschiedliche Anwendungen innerhalb dieser Fenster aufzurufen. Aufbauend auf X-Window und Motif kann zusatzlich eine Desktop-Umgebung genutzt werden (z. B. VUE von HP, OpenWin von Sun). Directories und Dateien werden z. B. in Symbolen angezeigt und k6nnen Ober Mausfunktionen ge6ffnet oder anderweitig bearbeitet werden. FOr viele Befehle, die sie in diesem Buch noch >zu FuB< lernen, ben6tigen Sie dann nur noch ein Mausklicken. Seit 1995 wird von den fOhrenden UNIXAnbietern CDE (Common Desktop Environment) eingesetzt, das die bisher unterschiedlichen Desktop-Programme abl6st bzw. erweitert.
Wer setzt UNIX ein? 1.8 1.8 Wer setzt UNIX ein? Aus der Historie von UNIX geht hervor, daB UNIX ursprOnglich zur Bearbeitung von Softwareprojekten konzipiert und in der ersten Zeit auch hauptsachlich von Universitaten in Forschung und Lehre eingesetzt wurde. Heute wird UNIX nicht nur zur Softwareentwicklung und Weiterentwicklung von Sprachen und Compilern verwendet, sondern das Spektrum der unter UNIX ablaufenden Software reicht von technisch-wissenschaftlichen Anwendungen und im CAD/CAM-Bereich (Computer Aided Design - computerunterstOtztes Konstruieren, Computer Aided Machinery - computerunterstOtztes Produzieren) Ober Desktop-Publishing (DTP), BOroautomation, kommerzielle Software, Datenbanken und Informationssysteme, bis hin zum Bereich der KOnstlichen Intelligenz. Hier einige Beispiele der Anwendungsbereiche: o technisch-wissenschaftliche Anwendung und CAD/CAM Z. B. Manipulation von mathematischen Formeln, Statikprogramme, Diagnoseprogramme, Simulation, CAD fOr Elektrotechnik, Programme fOr Architektur und Maschinenbau. Beispiele sind hier u.a. die Pakete Mathematica*, CA TlA *, EUCLlD*, IDEAS*, ProEngineer*. o DTP - Desktop Publishing Professionelle Text- und Bildverarbeitungssysteme sowie Zeichenprogramme zur Erstellung von technischer Dokumentation, BroschOren, Prasentationen etc. Beispiele sind hier u. a. die Pakete Interleat', FrameMaker*, CorelDraw', Adobe Photoshop *. o Bi.iroautomation Integrierte Textverarbeitungssysteme (Serienbriefe, Dokumentationserstellung), Zeichenprogramme, Tabellenkalkulation mit Datenbanken, Mail-Anbindungen und Makroprogrammierung fOr automatische Ablaufe. Beispiele sind hier u.a. App/ixware*, Uniplex onGo*, Lotus Notes*, StarOffice. o Datenbanken Hiermit k6nnen z. B. Adressen von Kunden, Lieferanten, Artikel, Preise, Farben in Sekundenschnelle abgefragt werden, wobei mit Hilfe von wenigen Angaben Querverbindungen angegeben werden k6nnen. Wird z. B. bei einem Autohersteller ein bestimmtes Modell zum Austausch eines Teiles zurOckgerUfen, k6nnen die betroffenen Kunden durch eine gezielte Datenbankabfrage schnell ermittelt werden. Aber auch wissenschaftliche Daten werden auf diese Weise abgelegt und k6nnen nach verschiedenen Suchkriterien zusammengestellt werden. Zu den fOhrenden Datenbankanbietern gehOren Oracle*, Intormix*, Sybase* und Progres'. 23
1 Allgemeine EinfUhrung o Kommerzielle Software Lagerverwaltung, Finanzbuchhaltung, Warenstatistik, Fakturierung, Lohnund Gehaltsabrechnung, Produktionsplanung und Produktionssteuerung sowie Software fOr eine Reihe branchenbezogener L6sungen (Arzte, Verlage, Druckereien Speditionsbetriebe usw.), Beispiele sind hier u.a. die Pakete SAP-RI3*, OS-(FIBU, LOHNIGEHAL T) Orgasoft o KOnstliche Intelligenz Expertensysteme fOr Diagnose (z. B. Motoren- und Getriebediagnose, Blutbildanalyse) usw. HierfOr werden u. a. die Programmiersprachen PROLOG und LISP eingesetzt. In UNIX-Seminaren treffen sich Personen aus den unterschiedlichsten Branchen. So ergab sich bei einem meiner Seminare ein sehr illustrer Kreis aus folgenden Berufszweigen: Welt- raumforschung Industrie Die obigen Beispiele sind nur eine kleine Auswahl an der zur VerfOgung stehender Software. Die Hersteller, Systemhauser und Distributoren der UNIX-Derviate bieten in der Regel KatalogelWebseiten an, die meist nach Branchen gegliedert verfOgbare Software meist von Fremdfirmen (Third Party Software) enthalten. 24 * Handelsnamen und Warenzeichen der jeweiligen Hersteller
2 Konventionen und Begriffe zu diesem Buch Dieses Kapitel gibt Ihnen einige Hinweise, wie das Lehrbuch aufbereitet ist, was die einzelnen Darstellungen aussagen und was Sie vorab wissen so/lten, um mit UNIX zu arbeiten. Die einzelnen Themen: 2.1 Hinweise zum besseren Verstandnis 2.2 Tastatureingabe am Terminal 25 C. Wolfinger, Keine Angst vor UNIX © Springer-Verlag Berlin Heidelberg 2000
2 Konventionen und Segritfe zu diesem Such 2.1 Hinweise zum besseren Verstandnis Vorab einige Erlauterungen zu den einzelnen Darstellungen in diesem Lehrbuch, und welche Konventionen (Vereinbarungen, Regeln) benutzt werden: Aile neuen Kommandos (Befehle), die fOr diesen Kurs ausgesucht wurden, sind das erste Mal in einem Kastchen herausgehoben. Hier wird dargestellt, wie und nach welchen Regeln das Kommando aufgerufen wird (Syntax): Kommando [Option] [ Parameter} Is [-I J ] [ Directory oder Dateinamen I/ongformat Anzeige der wesentlichen Attribute einer Datei / is t (listen, anzeigen) Bild 2-1 Syntax der Kommandos In dieser Darstellung ist das Kommando und die moglichen Optionen in Fettschrift dargestellt, zusatzliche Angaben (Parameter), die durch einen anderen Namen ersetzt werden mOssen, in Kursivschrift. In dem obigen Beispiel wOrde das Kommando Is (listen von Dateinnamen und Directories) z. B. von einem Directory mit dem Namen >/usr/kurs< wie folgt aufgerufen werden konnen: Is -l/usr/kurs In diesem Lehrbuch werden nur die am haufigsten verwendeten Optionen der einzelnen Kommandos aufgefOhrt, also nicht aile unter UNIX verfOgbaren. Sind Parameter optional, d.h., sie dOrfen weggelassen werden, so sind sie in eckige Klammern [] gesetzt. Unterhalb der Kommandozeile werden die meist von englischen Begritfen abgeleiteten Kurznamen erlautert, die gewahlt wurden, um die Mnemonik (die Hilfe zum Einpragen) zu nutzen. Die Klammern [] dienen nur als Hinweis, daB das Kommando mit oder ohne Optionen und/oder weitere Parameter aufgerufen werden kann. Wenn Sie das Kommando eingeben, wird diese Klammer nicht geschrieben. Das oben angegebene Kommando konnte auch aufgerufen werden mit: Is oder Is -I oder Is lusr/kurs 26
Hinweise zum besseren Verstandnis 2.1 So wie Sie eine Sprache nur durch Sprechen erlernen, so ist es notwendig, auch an einem UNIX-Rechner zu arbeiten, um mit UNIX umgehen zu kennen. Versuchen Sie deshalb, die Beispiele an einem UNIX-Rechner nachzuvollziehen. Hierbei sind rechnerbedingt Abweichungen meglich. Samtliche in diesem Buch aufgefUhrten Beispiele und Obungen wurden ursprunglich auf einem CADMUSRechnersystem (MUNIX System V) der Firma PCS getestet. Fur die weiteren Auflagen wurden die Obungen u.a. auf Rechnern von IBM mit AIX, auf DECWorkstation mit Ultrix und Digital UNIX, auf Rechner von HP mit HP-UX und auf verschiedenen Workstations von Sun mit Solaris getestet. Beispiele von Dialogen mit dem Rechner erkennen Sie an einem symbolisierten Bildschirm. Die Eingabe des Benutzers ist durch Fettdruck hervorgehoben, Nachrichten (Ausgaben) des Rechners werden kursiv dargestellt und ErUiuterungen (meist auBerhalb des Bildschirms oder in weiBen Kastchen hervorgehoben) sind in - Normalschrift - gesetzt. Hierzu ein Beispiel: $ / r Is Fet1druck - Eingabe am Bildschirm -I ~drwxrwxr-x Kursivschrift Nachricht ./" vomSystem drw-rw-r--rw-rw-r-- $ 2 monika 1 monika 1 monika 32 Feb 7 117 Feb 7 12489 Feb 7 ~ befehle projektA ueb1 Datum der letzten Anderung I I Erlauterung in Normalschritt Bild 2-2 Beispiel eines Dialoges mit dem Rechner Die unterschiedlichen Schriftarten dienen dabei nur der Verdeutlichung zwischen der Eingabe des Benutzers und Ausgabe des Rechners. Bei der wirklichen Eingabe des Kommandos ,Is -Ie erscheinen dabei Eingabe und Ausgabe auf dem Bildschirm in der gleichen Schriftart. 1m fortlaufenden Text sind Kommandos und Dateinamen in Kursiv-Schrift dargestellt. I> Auf besondere Hinweise macht Sie dieses Symbol aufmerksam. 27
2 Konventionen und Begriffe zu diesem Buch 2.2 Eingabe an der Tastatur Wenn Sie mit einem UNIX-Rechner arbeiten, geben Sie an einem Terminal (Dialogstation) Ober die Tastatur die Befehle (Kommandos) ein. Am Bildschirm erhalten Sie dann eine Ausgabe vom Rechner als Ergebnis. Es gibt eine ganze Reihe von unterschiedlichen Terminals. Abgesehen von Farbe und GroBe des Bildschirms sind auch die Tastaturen unterschiedlich ausgelegt und mit unterschiedlichen Zeichensatzen versehen. So gibt es Zeichensatze, die mit ,United States<, ,United Kingdom<, >Spanish<, >French< oder >German< benannt werden. Sie entsprechen den jeweiligen Normen der in diesen Landern verwendeten Schreibmaschinen. Sollten Sie im Zehnfingersystem auf einer deutschen Schreibmaschine geObt sein und Ihr Terminal hat, wie die meisten Terminals, die Anordnung fOr den United States Zeichensatz, so werden Sie sich oft bei Wortern mit z oder y vertippen. Diese beiden Tasten sind gegenOber einer Tastatur mit deutschem Zeichensatz vertauscht. Doch auch Sie werden sich schnell umgewohnen und genauso flieBend an Ihrem Terminal schreiben, wie bisher auf der Schreibmaschine. Vielleicht sogar noch besser, da Sie jederzeit Geschriebenes leicht und ohne Radiergummi oder >Tipp Ex< korrigieren konnen. HierfOr gibt es eine Loschtaste. Aber auch ganze Zeilen konnen sie fOr ungOltig erklaren. DafOr werden oft Kombinationen von zwei Tasten verwendet, wie z.B. eine mit >Control< (CTRL) bzw. auf der deutschen Tastatur mit >Steuerung< (STRG) bezeichnete Taste und der Buchstabe X. Sie haben an Ihrem Terminal ebenso eine Umschalttaste fOr GroB- und Kleinschreibung wie an einer Schreibmaschine, eine Tabulatortaste, einen WagenrOcklauf (Return oder CR - Carriage Return) und/oder eine Taste fOr eine neue Zeile (NL - New Line), die oft auch als Enter-Taste bezeichnet wird. AuBerdem gibt es an den meisten Terminals sogenannte Cursortasten. Der Cursor ist meist ein blinkendes, kleines Rechteck, das Ihnen auf dem Bildschirm die Position anzeigt, an der Text geschrieben wird. Mit den Cursortasten konnen Sie mit dem Cursor nach oben, unten, rechts oder links wandern. Diese Tasten benotigen Sie meist bei bildschirmorientierten Editoren. Bei diesen Editoren nOtzen Sie den Bildschirm wie ein Blatt Papier, das an jeder beliebigen Stelle beschrieben werden kann. Ein Rechnersystem braucht noch einige zusatzliche Funktionen: Um Z. B. ein bereits gestartetes Programm abzubrechen (canceln), um Nachrichten vom System, den Text, am Bildschirm anzuhalten und wieder weiterlaufen zu lassen (Noscroll und Scroll) und um mitzuteilen, daB eine Eingabe beendet ist (Endezeichen). 28
Eingabe an der Tastatur 2.2 Das nachfolgende Bild gibt eine m6gliche Belegung einer englischen/amerikanischen Tastatur wieder. Auch die einzelnen Funktionen an einem Terminal k6nnen unterschiedlich bei verschiedenen Rechnerherstellern und der jeweiligen UNIX-Konfigurierung sein. BACKSPACE DELETE RETURN Bild 2-3 Beispiel einer englischen/amerikanischen Tastatur Mit der RETURN-Taste (Wagenrucklauf-Taste) wird eine Eingabezeile abgeschlossen und an den Rechner weitergeleitet. In den Obungs-Beispielen wird die Betatigung dieser Taste in der Regel nicht angezeigt, da normalerweise jede Eingabe am Bildschirm mit der Returntaste abgeschlossen wird. Haben Sie die Returntaste noch nicht gedruckt, kann innerhalb der eingegebenen Zeile, die am Bildschirm angezeigt wird, noch korrigiert werden. Werden bestimmte Funktionen das erste Mal erklart, so werden die Tasten grafisch dargestellt, wie z.B.: 1m obigen Beispiel werden diese Tasten gemeinsam gedruckt. 1m Text wird eine solche Kombination von Tasten in spitze Klammern gesetzt. Die Funktion fOr das Endezeichen wird mit <CTRL + d> beschrieben. Mit der Funktion Losche Zeichen (z.B. die BACKSPACE- oder DELETE-Taste) kann dann zeichenweise nach links korrigiert werden, oder mit der Funktion Losche Zeile (z. B. durch <CTRL + d> oder <CTRL + X> je nach System) die gesamte Zeile annulliert werden. Die SCROLL- und NOSCROLL-Taste sind haufig identisch und wirken dann wie ein Schalter. Einige der wesentlichen Funktionen sind in der folgenden Tabelle aufgefOhrt: 29
2 Konventionen und Begriffe zu diesem Buch Taste (bzw. Kombination von Tasten): Funktion: Ende der Zeile StandardUNIX Berkeley UNIX RETURN RETURN CADMUS- Losche Zelchen II Losche Zelle @ CTRL+x DELErE CTRL+c CTRL+d CTRL+ z Unterbnechung(canceQ Bines laufenden Programms DateiendelEnde der Eingabe (EOF - end of file) Ausgabe anhalten Ausgabe fortsetzen (stop) (quilt) IhrSystem: BACKSPACE BACKSPACE CTRL+s CTRL+s CTRL+s (NOSCROLL) (NOSCROLL) (NOSCROLL) CTRL+q (SCROLL) CTRL+q (SCROLL) CTRL+q (SCROLL) BUd 2-4 Be/egung der Funktionstasten Wenn die CTRL-Taste gleichzeitig mit den angegebenen Buchstaben gedrOckt werden soli, bedeutet dies, die CTRL-Taste drOcken und so lange gedrOckt lassen bis der zweite Buchstabe eingegeben wurde. Dann erst beide Tasten loslassen. Das gleichzeitige DrOcken der Tasten ist mit dem Pluszeichen + dargestellt. Am besten stellen Sie fest, welche Tasten an Ihrem Terminal fOr die oben genannten Funktionen belegt sind und tragen sie in die dafOr vorgesehene Rubrik im obigem Bild ein. UNIX gibt es auf einigen System en bereits in deutscher Sprache. In diesem Buch soli naturlich allen die bestmogliche Hilfe geboten werden, deshalb habe ich bewuBt bei den Beispielen die englische (bisher noch am meisten verbreitete Anwendung) zugrundegelegt und dann deutsch erlautert. Schauen Sie sich Ihr System einmal an - doch wie? Wie Sie einen Rechner starten oder besser, starten lassen, erfahren Sie im Kapitel 3.1. Hier wird auch gezeigt, wie Sie, falls Sie mit einer grafischen Oberflache arbeiten, mit der Maus umgehen und sich auf dem 'gedachten Schreibtisch< zurechtfinden. Viel SpaB bei Ihren ersten Schritten unter UNIX! 30
3 UNIX - praktisch angewandt In diesem Kapitel erfahren Sie, wie Sie einen UNIX-Rechner starten und welche Voraussetzungen erfOIlt sein mOssen, um mit dem Rechner zu arbeiten. Sie lemen, ihm Anweisungen zu erteilen, und lemen, welche Arbeiten Sie ihm Obertragen kennen. Das Ziel ist es, daB Sie UNIX sinnvoll nutzen kennen, daB Sie sich Zeit und Arger sparen und daB Sie sogar Freude und SpaB an Ihrem UNIX-System haben. Die Haupt-Themen: 3.1 Auf los geht's los ... 3.2 Es >shellt, eine EinfOhrung in die Shell, als Benutzerschnittstelle 3.3 Editoren unter UNIX 3.4 Kommandos zur Dateierstellung und Dateipflege 3.5 Sicher ist sicher! Sicherung von Dateien und Dateibaumen 3.6 Das Wesentliche uber Netze 3.7 Nun >shellt, es intensiver - Shellprozeduren 3.8 Nutzliche Erweiterungen der Korn-Shell 3.9 Unterschiede zur C-Shell 3.10 Noch ein paar hilfreiche Kommandos 31 C. Wolfinger, Keine Angst vor UNIX © Springer-Verlag Berlin Heidelberg 2000
3.1 Auf los geht's los ... Wagen Sie Ihre ersten Schritte! Schon nach diesem Unterkapitel werden Sie erfahren, wie schnell und leicht Sie mit UNIX arbeiten konnen. Die einzelnen Themen: 3.1.1 Wie wird ein UNIX-Rechner gestartet? 3.1.2 Wie melden Sie sich an einem UNIX-System an? 3.1.3 Wie arbeiten Sie mit einer grafischen Oberflache 3.1.4 Wer kann unter UNIX arbeiten? 3.1.5 Anmeldung und Eintrag des PaBwortes 3.1.6 Andern des PaBwortes 3.1.7 Abmelden vom System 3.1.8 Informationen zum Dateisystem Datumsanzeige Lesen des Online-Manuals Anzeige eines Datei-lnhaltes Slattern im Inhalt einer Datei Wer arbeitet am System? Anzeige des Terminalnamens Senden von Nachrichten an angemeldete Senutzer Senden von ,UNIX-Post, an Senutzer 3.1.9 Einige nOtzliche Kommandos 3.1.10 Ausschalten eines UNIX-Rechners 3.1.11 Zusammenfassung der ersten Kommandos 32
3.1.1 Auf los geht's los ... ~-~~--~- 3.1.1 Wie wird ein UNIX-Rechner gestartet? Nun, wie starten Sie ein Auto? Sie vergewissern sich, ob alles startklar ist, drehen den SchlOssel herum und fahren los. Bei einem Rechner ist dies sehr ahnlich. Statt Gas zu geben, versorgen Sie ihn mit Strom. Einige Rechner werden statt mit einem SchlOssel mit einer INIT-Taste gestartet (/nit von initialisieren). Wer darf einen Rechner starten? Eigentlich so lite nur der Systemverantwortliche, der Systemverwalter, auch Superuser genannt, den Rechner in Gang setzen. Autofahren darf ja auch nur derjenige, der auch einen FOhrerschein besitzt. Deshalb sollten Sie zu Beginn den Rechner starten lassen. Was geschieht beim Starten, beim Hochfahren eines Rechners? Ober ein sogenanntes BootstrapProgramm (dies ist ein im Rechner festge/adenes Programm) werden am Bildschirm Fragen ausgegeben und Ihre Anworten, die Sie Ober die Tastatur eingeben, gelesen. HierfOr ist meistens ein bestimmtes Terminal auserwahlt, die sog. Systemkonsole. Dieses Terminal sollte deshalb bereits vor dem Rechner eingeschaltet werden. Falls der Rechner nicht automatisch durch einen Knopfdruck oder Drehen eines SchlOssels gestartet wird, muB der Systemverwalter einen Boot-Befehl, meist boot, an der Systemkonsole eingeben. Ober entsprechend andere Boot-Befehle kann entschieden werden, ob der Rechner in den Multi-User-Modus oder in den Single-User-Modus gefahren werden soil. Was heiBt Multi-User-Modus? Mehrere Benutzer konnen an einem System arbeiten, d.h. an den Rechner sind mehrere Terminals angeschlossen, an denen jeweils ein Benutzer arbeiten kann. Unter UNIX kann jeder dieser Benutzer wiederum gleichzeitig mehrere Programme starten, also Aufgaben dem Rechner Obertragen. Sing/e-User-Modus bedeutet Ein-Benutzer-Betrieb. Entscheiden Sie sich fOr den Single-User-Modus, nimmt UNIX an, daB nur der Systemverwalter bestimmte Arbeiten am Rechner durchfOhren mochte. Bei den meisten Rechnern wird dann zunachst nur ein bestimmter Bereich von Dateien zur VerfOgung gestellt (z. B. nur das root-Dateisystem). Bei einigen Systemen werden beim Hochfahren des Systems entsprechende Fragen gestellt, die im Normalfall dann mit y (fOr yes) beantwortet werden. Hierzu gehoren z. B.: Soli in den Multi-User-Modus gefahren werden? 1st das Datum korrekt? Das Datum wird zunachst von einer rechnerinternen Uhr ausgegeben. Achten Sie darauf, daB dieses Datum richtig gesetzt ist, denn unter UNIX wird sorgtaltig buchgefOhrt, wann Z. B. eine Datei angelegt, verandert oder nur angesprochen wurde. Sie lernen spater, daB man auch im laufenden Betrieb das Datum jederzeit mit date abrufen kann. 33
3 UNIX - praktisch angewandt Warum ist das so wichtig? Nun, bei einer Reihe von Programmen konnen Sie auf dieses Datum hin abfragen und abhangig davon weitere Programme starten. Sie sichern z. B. Ihre Dateien, indem Sie diese auf ein Magnetband kopieren. Wenn Sie zu einem spateren Zeitpunkt von diesem Magnetband die Dateien auf die Platte zurOckkopieren wollen, konnen Sie angeben, daB nur Dateien kopiert werden sollen, die nicht zwischenzeitlich verandert wurden, d.h., auf der Platte weisen diese Dateien ein neueres Datum auf, als auf dem Magnetband. Stimmen das Datum oder die Uhrzeit nicht, so kann es nur der Systemverwalter andern. 1m Normalfall wird der Rechner in den Multi-User-Modus hochgefahren. UNIX startet dann einen InitialisierungsprozeB, der den Rechner so vorbereitet, daB mehrere Benutzer gleichzeitig mit ihm arbeiten konnen. Dieser ProzeB stellt u.a. fest, wieviele Terminals am Rechner angeschlossen sind, und auf jedem der eingeschalteten Bildschirme erscheint eine Nachricht, die so au sse hen konnte (von Rechner und Installation abhangig): Welcome to UNIX Bild 3 -1: Beispiel einer Nachricht des Systems nach dem Hochfahren in den Multi-User-Modus Diese Art von Anmeldung ist auf den meisten grafischen Benutzeroberflachen ahnlich, wie z. B. beim COE (Common Desktop Environment) oder xdm (DEC), mwm (IBM), openwin (sun) und HP VUE (HP) bzw. KOE bei LlNUX. 1st keine grafische Oberflache installiert, wird nur eine einfache Login-Meldung ausgegeben z.B.: LOGIN Bitte melden Sie sich an: 34
Auf los geht's los ... 3.1.2 Egal, ob Sie sich uber eine grafische Benutzeroberflache oder uber eine sog. ASCII-Eingabe anmelden, der Rechner muB Sie kennen. Wie erfahrt er Ihren Namen, und wer darf unter UNIX arbeiten? 1m nachsten Abschnitt erfahren Sie dazu mehr. 3.1.2 Wie melden Sie sich an einem UNIX-System an? Um sich anmelden zu k6nnen, ben6tigen Sie ein Terminal, d.h. eine Tastatur und einen Bildschirm. Dieses Eingabegerat kann direkt oder uber Netz mit dem Rechner verbunden sein. Hierbei k6nnen ASCII-Terminals (nur Zeichen, keine Grafik) oder komfortable Grafik-Terminals oder sog. X-Terminals angeschlossen sein, ja sogar PCs, die mit einer entsprechenden Software ein X-Terminal simulieren. X-Terminals haben einen eigenen Prozessor, der die Bildaufbereitung basierend auf X-Window' steuert, also Teilaufgaben selbstandig durchfUhrt, ein kleiner Rechner fUr sich. Das X-Terminal wird deshalb auch ahnlich wie ein eigener Rechner im Netz verwaltet. Deshalb muB, bevor Sie sich auf einem X-Terminal an einem UNIX-Rechner anmelden, zuerst die Verbindung zu diesem Rechner hergestellt sein. Dies erfolgt meist uber ein zusatzliches Auswahlmenu, das Ihnen die m6glichen Rechnerverbindungen anzeigt. Direkt angeschlossen: Ober Netz verbunden X-Terminal oder PC . - - - - - - - !. 0 ASCIITerminal ~~~m~rJI Grafik-Terminal wahlweise mit UNIX-Work- GrafikTerminal - 0 1r--------1 BUd 3-2: M6gliche Terminalverbindungen Arbeiten Sie ein an einem Terminal, das uber Netz angeschlossen ist, lassen Sie sich am besten von Ihrem Systemverwalter zeigen, wie Sie die Verbindung zu einem UNIX-Rechner herstellen k6nnen. Meist wird vorab nach dem Namen des betreffenden UNIX-Rechners gefragt. Die Verbindung zu einem bestimmten UNIX-Rechner k6nnte auch automatisch erfolgen. • grafische Benutzeroberflache, die am MIT, Massachusetts Institute of Technology, entwickelt wurde (siehe auch Seite 19) 35
3 UNIX - praktisch angewandt Auf den meisten UNIX-Rechnern ist heute eine grafische Oberflache (basierend auf X-Window mit OSF/Motif) installiert und wird beim Anmelden jedem Benutzer automatisch bereitgestellt. Deshalb ganz kurz das Wichtigste Ober grafische Oberflachen unter UNIX, damit Sie sich an jedem UNIX-Rechner zurechtfinden. Mehr Informationen Ober die grafische Oberflache finden Sie im Kapitel 4 CDE (Common Desktop Environment). 3.1.3 Wie arbeiten Sie mit einer grafischen Oberflache Wenn Sie MS-Windows vom PC her kennen, wird es Ihnen sic her leicht fallen, auch unter UNIX mit X-Window/Motif bzw. dem CDE zu arbeiten. Aber auch aile anderen werden sich bestimmt schnell daran gewehnen, mit Maus und Fenstern zu arbeiten. Hier eine kurze EinfOhrung: Was kennzeichnet eine grafische Oberflache? ~ " Eine Maus, real auf Ihrem Schreibtisch dI Die Arbeitsflache (Workspace, Desktop) - eine gedachte Schreibtischumgebung auf Ihrem Bildschirm Verschiedene Fenster (windows), Pull-Down-Menus, (herunterklappbare MenOs) .. Schaltflachen und Scroll-Balken (Rollbalken) --. und sog. Icons (kleine Bildchen - erlauben Sie mir, daB ich den englischen Ausdruck beibehalte, denn Ikone ist eben das Heiligenbild der Ostkirche) Eine Reihe neuer Begriffe. Die Bedeutung und was hierbei zu beachten ist, laBt sich schnell erlernen. Denn, das ist das Gute an einer grafischen Oberflache, es wird Ihnen grafisch und in MenOs gezeigt, was Sie tun kennen. Sie mOssen also nichts auswendig lernen! Wichtig ist nur, daB Sie Ruhe bewahren, die Mausta- 36 * OSF/Motif wurde von OSF, Open Software Foundation entwickelt (siehe auch Seite 19)
Auf los geht's los .•. ---------------------------------------- 3.1.3 sten nicht zu schnelilosiassen, sondern erst mal schauen, was z. B. bei den sog. Pull-Down-Menus angeboten wird. Nun zu den einzelnen Begriffen: Die Maus (Hier kommt die Maus ... ). Sie hat unter UNIX drei Tasten. Die einzelnen Benutzeroberflachen der verschiedenen UNIX-Anbieter hatten bisher hier leider nicht immer gleiche Bedeutungen. 1m CDE gilt einheitlich: ....1--- -- - RachIs· ...11+- - ---- Mitte '--_ _ _ _ __ Unks - Programm-Menu Sonderfunktion (z.B. zuletzt markierten Texl an aktueller Textposlion einfUgen) Zeigefinger - Markieren, Auswahlen. Positionieren Bild 3-3: Maus-Funktionen Wenn Sie die Maus bewegen, sehen Sie auf dem Bildschirm, wie sich ein kleines Symbol bewegt, der Maus-Cursor. Am Anfang ist es sicher ungewohnt, mit einer Hand die Maus zu bedienen und auf dem Bildschirm ein Objekt damit auszuwahlen. Oben Sie einfach ein biBchen. Sie werden feststellen, daB sich die Form des Maus-Cursors, meist ein kleiner Pfeil, verandert, je nach dem wo er sich befindet. So bedeuten: Normale Anzeige des Cursors (Das Symbol kann durch Voreinstellung verandert werden) I ~ , "'I, Jeweils am Rand eines Fensters verandert sich der Cursor in eines dieser Symbole und zeigt an, daB an dieser Stelle das Fenster mit gedruckter linker Taste nach links, rechts, oben oder nach unten vergroBert oder verkleinert werden kann. Jeweils an den Ecken eines Fensters zeigt dieses Symbol an, daB mit gedruckter linker Taste das Fenster jeweils diagonal verkleinert oder vergroBert werden kann Jeweils am auBersten Rand eines Fensters oder in der sog. Titelzeile konnen Sie mit diesem Symbol ein Fenster verschieben. In vielen Anwendungsprogrammen verwandelt sich der Maus-Cursor, sobald Man nennt Sie sich im Bereich von Texteingabe befinden, in einen Strich dieses Symbol Text-Cursor. I. 37
3 UNIX - praktisch angewandt Die Arbeitsflache oder Schreibtischumgebung. Die Arbeitsflache ist Ihr Bildschirm, auf dem sich verschiedene Objekte befinden kannen; Objekte wie Ordner, Notizblatter oder ein symbolisierter Bildschirm (Terminal). Man spricht deshalb auch von einer Schreibtischumgebung. Wenn nichts anderes voreingestellt wurde, wird der Schreibtisch so dargestellt, wie Sie ihn beim Abmelden am Rechner verlassen haben (fast wie im richtigen Leben). Das nachfolgende Beispiel zeigt z. B. meinen Arbeitsbereich unter CDE. Zuletzt hatte ich mit den Programmen FrameMaker und Applixware an diesem Buch gearbeitet. ... "/( - ... - ApplilrUllr@Sun I~~~s,l, ~ BiidschirmfTerminal fOr UNIX-Befehle l'~flltU41 ~"d... §<lIt 2Pd"" t'IObb1t(tI!a"r2. 1" . ~~-~----~ --~~~~- i'YF Bild 3-4: Beispiel einer Schreibtischumgebung unter CDE Wenn Sie sich das erste Mal anmelden, erscheint auf jeden Fall die Desktop-Anzeige (das front pane~, und je nach Voreinstellung bei der Konfigurierung des Rechners/des CDEs wird evtl. gleich der Dateimanager und ein Terminal mit geaffnet. 38
Auf los geht's los •.. 3.1.3 Verschiedene Fenster (Windows). Unter X-Window/Motif bzw. dem CDE k6nnen Sie mehrere Arbeiten gleichzeitig in unterschiedlichen Fenstern erledigen. Hier wird als Fenster (Window) z.B. das symbolisierte Terminal bezeichnet. Auf Ihrer Bildschirmschirmoberflache k6nnen Sie z. B. vier Bildschirm-Fenster erstellen und in jedem dieser Bildschirme eine andere Aufgabe starten, z. B. im 1. Fenster: Ihre Dateien sichern im 2. Fenster: Text eingeben Dber ein entsprechendes Programm im 3. Fenster: Sich die Manual-Seite eines bestimmten Kommandos ansehen im 4. Fenster: Einige UNIX-Kommandos eingeben Aile Prozesse laufen dann parallel und Sie k6nnen jeweils in dem einen oder anderen Fenster weiterarbeiten. Die einzelnen Fenster (Bildschirme oder andere Objekte) k6nnen Sie verschieben, vergr6Bern oder verkleinern, wie wir es eben beim Arbeiten mit der Maus gesehen haben. Fenster/Objekte k6nnen sich hierbei Dberlappen oder ganz Dberdecken. Um in einem Fenster zu arbeiten, wahlen Sie dies mit der Maus an und drDcken kurz die linke Maustaste. Der Rahmen von dem aktuellen Fenster/dem Objekt wird meist in einer kraftigeren Farbe deutlich hervorgehoben und kennzeichnet somit das aktuelle Fenster. Durch Voreinstellung kann allerdings auch eingestellt werden, daB, sobald die Maus ein Objekt berDhrt, dieses zum aktuellen Fenster wird. Unter CDE k6nnen Sie die Farbzusammenstellungen selbst definieren. Naheres dazu im Kapitel 4 CDE. Alternativ k6nnen Sie, um jeweils das nachste Fenster zu aktivieren, die Tastenkombination drDcken. [> Achten Sie darauf, daB Sie nicht versehentlich ein anderes Fenster aktiviert haben, z. B. daB die Maus verschoben wurde. Dann k6nnte passieren, daB Ihr Text pl6tzlich in einem anderen Dokument oder in einem anderem MenD eingesetzt wird und zu Fehlern fDhrt. 39
3 UNIX - praktisch angewandt Ein neues Terminal erhalten Sie unter dem CDE, wenn Sie in der Desktop-Anzeige (front panelj das entsprechende Menu auswahlen und das Terminal-Symbol kurz mit der linken Maustaste anklicken: ~~!>Ell!!q ~ Herausklappbare Bedientafel dann das Symbol fur das Terminal Zuerst den Pfeil anklicken , Desktop-Anzeige ... Bild 3-5: Neues Terminal-Fenster unter CDE Unter den verschiedenen Grafikoberflachen werden neue Fenster meist uber ein Pull-Down-Menu aufgerufen. Hierzu wird auf dem freiem Arbeitsbereich (Workspace) die rechte Maustaste gedruckt. Oft sind Untermenus anzuwahlen, unter denen dann das gewunschte Programm zu finden ist. Ais Beispiel sei hier Openwin von Sun angefiihrt: File Manager MaiITool ... Calendar Manager - - - ' 1 Clock Calculator Print Tool ... Snapshot ... Tape Tool ... Binder ... Icon Editor .. . Shell Tool .. . Tutorial ... Demos ... Properties Exit ... '--- Nachdem das Menu mit der rechten Maustaste eingeblendet wurde, bewegen Sie die Maus auf Programs, gehen dem Pfeil nach und ein Untermenu offnet sich. Bewegen Sie den Mauscursor auf das gewunschte Programm, fUr ein neues Terminal Command Tool, klicken nochmals die rechte Maustaste. Schneller konnen Sie auswiihlen, wenn Sie die rechte Maustaste gedrOckt lassen. Die von Ihnen angesteuerten Programme werden dann mit einem Balken markiert. Sobald Sie die rechte Taste loslassen, wird das markierte Programm gestartet. Bild 3-6: Beispiel Pull-Down-MenD Die Bedienung von Pull-Down-Menus, manchmal auch Pop-up-Menus genannt, ist uberall gleich. Die Inhalte der einzelnen Menus der Benutzeroberflachen sind jedoch unterschiedlich. Manche bieten eine Menuzeile am oberen Rand des Arbeitsbereiches an. Sie bewegen dann den Mauscursor auf die Menuzeile und wahlen dort den entsprechenden Menupunkt aus. Manchmal mussen Sie allerdings die linke statt der rechten Taste drucken, um die Untermenus zu bekommen. 40
Auf los geht's los •.. ------------------------------------------ 3.1.3 [> Sehen Sie sich ruhig die Menus an. Achten Sie jedoch darauf, daB Sie, wenn Sie kein Programm daraus starten wollen, die Maus einfach aus dem Bereich des Menus ziehen. Kopieren und Loschen innerhalb verschiedener Fenster mit CDE. Innerhalb der einzelnen Fenster konnen Sie z.B. Textbereiche mit der Maus markieren, d. h., Sie gehen mit dem Mauscursor vor den ersten Buchstaben, drucken die linke Taste und lassen Sie gedruckt und ziehen dabei Ober die gewunschte Flache. Hierbei wird der Text schwarz unterlegt und erscheint in welBer Schnft Lassen Sie linke Taste los und drucken Sie nun die rechte Maustaste. Es erscheint ein Pull-Down-Menu. In diesem Menu wird Ihnen u.a. angeboten zu 10schen oder zu kopieren (cut oder copy). So kopierten oder geloschten Text konnen Sie in ein anderes Fenster (z.B. in ein Text-Dokument) ubertragen. Um den Text dort einzusetzen, rufen Sie wieder das Menu auf (rechte Maustaste) und wahlen dann Einsetzen (bzw. paste). Unter CDE gibt es hierfur auch noch eine schnellere Methode. Sie markieren den Text wie beschrieben, gehen an die gewunschte Stelle im gleichen oder in einem anderen Fenster und drucken nur die mittlere Maustaste. Damit wird der zuletzt markierte Text an der Cursorposition eingesetzt. Unter dem CDE sind die Funktionen der Pull-Down-Menu bei allen Rechnern gleich. Die Menus werden angezeigt, wenn Sie die rechte Maustaste drOcken oder Schaltflachen mit der linken Taste anklicken (im Bild links oben): Mit der linken Maustaste anklicken, urn das Fenster an die gesamte BildschirmgroBe anzupassen . -------------------------- oder um das Fenster zu ikonisieren Scha'tflache---ilii~iii~~~~I~§~~~~~§z~ji1 fiir Menu: Restore Move Size Minimize Maximize Lower Close Rahmen, ..... um das Fenster zu verg roBernl verkleinern Rollbalken, um vor- und riickwarts zu blattem (scrollen) Tltelzeile, mit Hinweis, um welches Objekt es sich handelt. Mit der Maus kann hier angeklickt werden, um das Fenster zu verschieben und/oder in den Vordergrund zu stellen Bild 3-7: Wesentliche Funktionen eines Fensters Damit Sie nicht die Obersicht verlieren, sollten nicht zu viele Fenster geoffnet sein. Anwenderprogramme, wie Z. B. FrameMaker oder Applix benotigen fOr Ihre Dialogboxen und Menus auch noch erheblichen Platz - so daB ziemlich schnell ein Chaos auf Ihrer Arbeitsflache herrschen konnte und Sie, wie auf einem rich- 41
3 UNIX - praktisch angewandt tigen Schreibtisch, alles hin und herschieben mussen um ein bestimmtes DokumentiObjekt wieder zu finden. Um dies zu vermeiden, konnen Sie geoffnete Objekte uber die Schaltflache mit dem kleinen Punkt . (an der rechten oberen Ecke) als kleines Icon (icon) an den Rand Ihres Bildschirms legen. Um ein Fenster, das zu einem Icon verkleinert wurde, wieder in voller GroBe zu erhalten, klicken Sie kurz zweimal hintereinander (mit sog. Doppelklick) auf das Icon. Sie konnen auch mit der Maus auf das Icon gehen, drucken die rechte Maustaste und erhalten ein Menu, unter dem Sie Maximize (volle GroBe) auswahlen (siehe weiter unten bei Fenster schlieBen). Mit der Schaltflache neben dem Ikonisierungs-Punkt die volle BiidschirmgroBe angepaBt. werden Fenster auf Beinhaltet ein Fenster mehr als eine Seite Inhalt, konnen Sie mit dem RoUbalken zuruck und wieder vorwarts blattern (scrollen). Beim Terminal kann voreingestellt werden, wieviel Zeilen der Eingabe gespeichert werden, um sie uber den Scroll-Mechanism us nochmals anzusehen. Mit den Pfeilen konnen Sie zeilenweise blattern. Lassen Sie die Maustaste auf dem Pfeil gedruckt, wandert der Text automatisch je nach Pfeil vorwarts oder ruckwarts. Mit dem Schiebebalken konnen Sie ganze Bereiche schnell verschieben. I:-I =-. --- Urn eln Fenster zu schlle8en, wilhlen Sle dIe SchaJtfI'che auf der linken oberen Ecke. Es wird ein Menu angezeigt, in dem Sie das Pro.. 'gramm Close (schlieBen) anwahlen. Uber dieses Menu konnen Sie ebenfalls das Fenster ikonisieren mit Minimize bzw. auf die gesamte Bildschirmflache vergroBern mit Maximixe. Unter dem CDE werden Sie kennenlernen, daB Sie sogar auf verschiedenen Ebenen arbeiten konnen - sozusagen, sich fOr jede Arbeit an einen eigenen Schreibtisch setzen konnen - doch wie schon erwahnt, davon spater. If1l ~ Wenn Sie zwischendrin Hilfe benotigen, drucken Sie einfach die Taste, die Ihnen fOr die aktuelle Situation Oe nachdem wo Sie mit der Maus stehen) Hilfe-Menus anbietet. Mehr uber Hilfe im Kapitel 4. In diesem Buch lernen Sie erstmal UNIX pur. Erst am Ende des Buches erfahren Sie mehr uber angenehme Vereinfachungen mit dem CDE, u.a. uber den Dateimanager (file managef), wie Sie Ihre Arbeitsumgebung anpassen und wie Sie gezielt Informationen abrufen konnen. Aber vielleicht gehoren Sie dann schon zu den Insidern, die nach wie vor lieber Befehle uber die Tastatur eingeben, da sie so schneller ans Ziel kommen. Wir arbeiten vorerst mit dem meist gebrauchten Tool unter der grafischen Oberflache, dem Bildschirm bzw. dem Terminal. Bevor Sie nun alles selbst ausprobieren konnen, noch ein paar Information zum PaBwort, ohne das Sie nicht ins System kommen. 42
Auf los geht's los ... 3.1.4 3.1.4 Wer kann unter UNIX arbeiten? Unter UNIX gibt es (in der Regel einen) Systemverwalter oder Superuser und (normale) Benutzer. Es herrscht eine strenge Ordnung. Es kann niemand am System arbeiten, der nicht gemeldet ist. Sie mOssen also zu einer Art Einwohnermeldestelle gehen, um eine Namenskennung und eine Arbeitserlaubnis zu erhalten. Diese Aufgaben obliegen dem Systemverwalter. Der Systemverwalter selbst ist ebenfalls registriert. Er wird unter der intemen Kennummer ,0< gefOhrt und tragt den Namen root (von Wurzel). Mit dem Namen root meldet sich der Systemverwalter am System an. Er hat ubergeordnete Rechte. Nur er kann weitere Benutzer eintragen. Der Eintrag erfolgt normalerweise in der Datei /etc/passwd. In dieser Datei werden aile Benutzer des Systems eingetragen. FOr jeden Benutzer ist eine Zeile angelegt, in der getrennt durch Doppelpunkte folgende Informationen vorgesehen sind: o der Name des Benutzers, o ein verschlOsseltes PaBwort (Geheimwort, Code), das allerdings nur Ober ein spezielles Programm eingetragen und verandert werden kann, o o o eine Kenn-Nummer (fortlaufende Numerierung), eine Gruppennummer, ein Kommentarfeld, in dem der vollstandige Name des Benutzers, seine Adresse, Telefonnummer u.a. vermerkt werden konnte, Odie Angabe, unter welchem Zweig er im Dateisystem arbeitet, wo er zu Hause ist (dieses Directory wird als sein Home-Directory bezeichnet), o Angabe des Programms, das nach dem Anmelden gestartet wird. Werden die Benutzer netzweit gefOhrt und/oder sind zusatzliche SicherheitsmaBnahmen eingerichtet, so sind die Benutzerkennungen meist nur auf einem zentralen Rechner. Das PaBwort wird beim ersten Anmelden yom System angefordert. Der Benutzer oder der Systemverwalter konnen es danach nur mit dem Kommando passwd andem. Sollten Sie also Ihr PaBwort vergessen, kann nur der Systemverwalter Ihnen ein neues zuordnen, bzw. Ihr PaBwort aus der Datei letc/passwd loschen. Erst danach konnen Sie ein neues PaBwort eingeben. 43
3 UNIX - praktisch angewandt Wie konnte so eine Datei, die >Geheimakte der Benutzerc, aussehen? rootdsVLsXfnLk.sl:0:2::/: daemon:xxxx:1:1 ::/: bin:xxxx:2:2::/usrlsrc: sys:xxxx:3:3::/usrlsys: adm:xxxx:4:4::/usr/adm: ... 1 >_ ) Eintrag fOr den Systemverwalter (root) Die ersten etwa 10 Eintrage dOrfen nicht verll.ndert werden, sie sind fur die Ausfuhrung bestimmter Programme n6tig monika:: 101 : 100: Monika Schulze,Tel. 242:/usr/kurslmonika: hans::1 02:1 OO:Hans Mueller, Tel. 440:/usr/kurslhans: Ibinlksh --- Anga~ eines Programmes, das sofort nach dem Login ausgefuhrt werden soli (Hier die Korn-Shell Ibinlksh). Ohne Angabe wird die Bourne-Shell (lbin/sh) gestartet Login-Directory: Zuordnung des Home-Directories d.h. das Directory, in dem sich der Benutzer befindet, nach dem er sich angemeldet hat Kommentarfeld: z. B. fur Name und Anschrift des Benutzers Gruppennummer: Benutzer mit gleicher Gruppennummer werden zusatzlich in der Datei letc/group eingetragen Benutzernummer: Wird u.a. als Kennung von Dateien verwendet Platz fur das verschlOsselte PaBwort. Oas Pal3wort selbst darf nur Ober das Kommando passwd eingesetzl und geandert werden Login Name: maximalS Zeichen, keine Grol3buchstaben der Doppelpunkt .:. gilt als Trennungszeichen zwischen den einzelnen Angaben Bild 3-8: Beispiel der Datei letclpasswd Gehen wir also davon aus, daB Ihr Systemverwalter Sie als Benutzer eingetragen und Ihnen ein Directory zugeordnet und eingerichtet hat. Zusatzlich hat er Sie einer bestimmten Gruppe zugewiesen. Was es mit der Gruppenzugehorigkeit auf sich hat, erfahren Sie unter >Zugriffsrechtec im Kapitel 3.4 (Dateiverwaltung und pflege). 3.1.5 Anmeldung und Eintrag des PaBwortes Wurde der Rechner in den Multi-User-Modus hochgefahren, erscheint auf allen angeschlossenen Terminals eine Meldung. Wie Sie sich das erste Mal anmelden, sehen Sie auf dem nachfolgenden Bildschirmdialog. In unserem Beispiel meldet sich >Monikac an, die im Rechner als Benutzer >monikac (also mit Kleinbuchstaben) eingetragen wurde. 44
Auf los geht's los ... 3.1.5 Beim allerersten Anmelden haben Sie noch kein PaBwort und der Rechner weist Sie darauf hin. LOGIN Bitte melden Sie sich an: monika You dont have a password. Please choose one. Sie haben noch kein PaBwort. Bitte wahlen Sie eins: Retype password. Tippen Sie das PaBwort nochmal ein: Hier tippen Sie ein mindestens sechsstelliges PaBwort ein, das allerdings am Bildschirm nicht sichtbar 1st. Wurde das PaBwort richtig eingegeben, meldet sich der Rechner nochmals mit: Zur Sicherheit verlangt der Rechner eine Wiederholung des PaBwortes. LOGIN Bitte melden Sie sich an: monika Password: 1 Die Eingabe des PaBwortes ist nicht sichtbar Nun erst k6nnen Sie sich anmelden. $ Bereitzeichen der Shell, daB Sie nun Auftrage, Befehle erteilen k6nnen Bild 3-9: Erstes Anmelden Unter der grafischen Oberflache wird die erste Eingabe des PaBwortes Ober eine Dialogbox angefordert. 1m Grunde sind es die gleichen Eingaben, wie oben im ASCII-Terminal dargestellt, allerdings etwas komfortabler aufbereitet. Sie werden nach dem Elngeben aufgefordert, sich noch einmal anzumelden. Es k6nnte auch vorkommen, daB der Systemverwalter Ihnen schon von vornherein ein PaBwort zugewiesen hat, das er Ihnen dann vorgibt. Dieses PaBwort k6nnen Sie spater andern. Wie erfahren Sie gleich. Das PaBwort sollte mindestens aus sechs Buchstaben oder einer sechsstelligen Kombination von Buchstaben und Ziffern bestehen. Geben Sie nur Ziffern oder ein zu kurzes PaBwort ein, beschwert sich der Rechner. Aus SicherheitsgrOnden so lite das PaBwort auch kein Name einer Person (wie z. B. der Freundin, des Freundes) sein, und wenn man ganz sic her gehen will auch kein Begriff, der in einem Lexikon steht. Solche PaBw6rter lassen sich mit Programmen leicht knacken.lm Gegensatz zum Normalbetrieb erfolgt bei der Eingabe des PaBwortes kein Echo aut dem Bildschirm - jemand, der Ihnen Ober die Schulter schaut, kann somit das PaBwort nicht lesen. Der ganze Ablaut sieht am Bildschirm etwa wie tol9t aus (Das PaBwort ist hier in Fettschrift als Eingabe dargestellt, wenngleich es auf dem Bildschirm nicht sichtbar ist): You dont have a password. Please choose one: Please use a longer password: 160246 abc 1 - - - - 1 Bitte wahlen Sie ein lange- Please use at least one non numeric character: - res PaBwort. Bitte verwenden Sie mlndeslens ein nichl numerisches Zeichen. Bild 3-10: Beispiel Erste Eingabe des PaBworts 45
3 UNIX - praktisch angewandt Abhangig vom System und der Rechnerkonfiguration k6nnen an dieser Stelle einige Informationen oder auch dum me Spruche am Bildschirm erscheinen. Zum Beispiel eine Nachricht des Tages (aus der Datei /etc/motd - eine message of the day) oder die beruhmtberuchtigten cookies (Kekse) von der University of California in Berkeley (Ieider sind sie zwischenzeitlich auf den meisten Systemen verschwunden). Obrigens, vergessen Sie Ihr PaBwort nicht! Nur der Systemverwalter kann Ihnen dann weiterhelfen. Sie k6nnen natOrlich jederzeit Ihr PaBwort selbst andern: 3.1.6 Andern des PaBwortes Nun lernen Sie bereits Ihr erstes Kommando: passwd password PaBwort (Geheimwort, Geheimcode) passwd - Kornrnando, urn das PaBwort zu andern Und wie sieht die Eingabe am Bildschirm aus? Haben Sie ubrigens schon bemerkt, wann UNIX bereit ist, Kommandos entgegenzunehmen? Erscheint das Bereitzeichen (hier $), so k6nnen Sie das nachste Kommando eingeben. In unserem Fall ist dies der Befehl passwd. Nun fragt Sie der Rechner zur Sicherheit nach dem alten PaBwort. Wenn Sie es korrekt eingegeben .haben, werden Sie aufgefordert, das neue PaBwort einzugeben. Damit Sie sich das neue PaBwort merken und sich auch nicht bei der ersten Eingabe vertippt haben, mussen Sie es ein zweites Mal eingeben. $ passwd old passwd: 123gsuffa- Die PaBwOrter werden am - - altes PaBwort - - neues PaBwort Bildschirm nicht angezeigt new passwd: geheirn95 - retype new passwd: geheirn95 - - - - - - - - + Wiederholen Sie das $-------------------+ neue PaBwort Bereitzeichen der Shell, Auftrage entgegenzunehmen Bild 3 -11: Andern des PaBwortes 46 Das PaBwort dient Ihnen als Schutz, damit sich nicht jemand anderer unter Ihrem Namen anmelden kann, Ihre Dateien verandert oder gar 16scht oder sonstigen Unfug treibt. Auch aus Grunden des Datenschutzes und der Sicherheit ist es
3.1.7 Auf los geht's los ... besonders wichtig, die Daten vor fremdem Zugriff zu schOtzen. Falls Sie fOr Rechnerzeit bezahlen mOssen oder gar jemand auf Ihre Kosten im Internet surft, k6nnte durch Unachtsamkeit sogar finanzieller Schad en entstehen. Achten Sie also darauf, daB Ihr PaBwort auch geheim bleibt. Damit Sie aber selbst Ihr PaBwort nicht vergessen, Oben Sie am besten gleich noch einmal das Anmelden. Aber wie kommen Sie aus dem System wieder heraus? 3.1.7 Abmelden yom System 1m Kapitel 2 wurde die Tastaturbelegung erklart. Erinnern Sie sich noch an die Tastenkombination, um ein Ende zu setzen (EOF end of file)? Geben Sie ein Endezeichen ein, so bedeutet dies fOr das System das ,Ende der Sitzung<. Ais Sitzung bezeichnet man die Zeit wahrend der Sie am System angemeldet sind, sozusagen vor dem Bildschirm sitzen. Mit der Kombination aus den Tasten (beide Tasten werden gleichzeitig gedrOckt) ICTRLI+0 melden Sie sich somit abo Sie k6nnen stattdessen auch ein Kommando eingeben: exit l Ode, logout L-.._ _ _ _----' exit, logout - Kommandos, um eine Terminalsitzung zu beenden Am Bildschirm wird sofort wieder ein neues Login: angezeigt, und das Terminal ist fOr die nachste Sitzung bereit. Arbeiten Sie mit dem CDE, wird mit exit nur das ge6ffnete Terminal geschlossen. Um sich vollstandig abzumelden, klicken Sie in der Hauptanzeige auf die Schaltflache EXIT. Wenn Sie nur kurz Ihren Arbeitsplatz verlassen, sollten Sie stets den Bildschirm vor unbefugten Zutritt schOtzen. HierfOr ist das kleine SchloB gedacht. Nur mit Ihrem PaBwort kann dann der Bildschirm wieder ge6ffnet werden. , Bildschirm abschlieBen Abmelden vom System (EXIl) BUd 3-12: Abmelden vom System unter CDE 47
3 UNIX - praktisch angewandt FOr LlNUX-Anwender hier zum Vergleich das Panell der KDE-Oberflache, das in seinen Funktionen dem Panell vom CDE sehr ahlich ist. Abmelden vom System (EXIT) Bildschirm abschlieBen FOr das Ein- und Ausschalten des gesamten Systems ist der Systemverwalter zustandig. Wie UNIX-Rechner >runtergefahren< und ausgeschaltet werden, erfahren Sie am Ende dieses Kapitels. Kurze Zusammenfassung Wiederholung An- und Abmelden: o o o Foigende Voraussetzungen mOssen erfOllt sein, um an einem UNIX-Rechner zu arbeiten: • Der Rechner ist in den Multi-User-Mode hochgefahren. • FOr Sie ist ein Benutzername in der Datei /etc/passwd (und evtl. in /etc/group) eingetragen. • Ihr Login-Directory ist im Dateisystem eingerichtet. • Auf Ihrem Terminal erscheint die Login-Anzeige. 1st diese nicht da, so versuchen Sie zunachst nur die Return-Taste zu drOcken. Danach sollte LOGIN erscheinen. Was geben Sie ein? • Benutzernamen, • PaBwort (es wird nicht am Bildschirm angezeigt). Wie erkennen Sie, ob das System bereit ist, Befehle entgegenzunehmen? • Auf dem Bildschirm erscheint das Bereitzeichen: $ Also auf ein Neues. Melden Sie sich nochmals an. Den ersten Schritt haben Sie bereits getan. Lernen Sie nun, sich unter UNIX zu bewegen. Die Abenteuerreise kann beginnen. Wagen Sie sich vor in die UNIX-Welt! 48
Auf los geht's los ... 3.1.8 3.1.8 Informationen zum Dateisystem Stellen Sie sich vor, Sie sind in einer fremden Stadt. Was tun Sie, um sich zurechtzufinden? Sie kaufen sich einen Stadtplan. Hat man einen Stadtplan, so findet man sich erst zurecht, wenn man weiB, wo man sich befindet. Genauso ist es in unserem UNIX-System. Das System hat uns nach dem Anmelden irgendwo in dem Dateibaum unseres Systems plaziert - und zwar in unser sog. >Home-Directory'. Wo wir uns gerade in dem graBen Dateibaum des Systems befinden, verrat das Kommando pwd. pwd I print working directory zeigt das aktuelle Arbeits-Directory an pwd - Kommando, um das aktuelle Arbeits-Directory anzuzeigen In dem bisher beschriebenen Beispiel wOrde der Benutzer Monika sich nach dem Anmelden in dem Directory lusr/kurs/monika befinden (siehe Pfeil im Bild des Dateibaumes). ( root-Directory) <==) o Directories Datei Bild 3 -13: Beispiel eines Dateibaumes mit Benutzerdateien 49
3 UNIX - praktisch angewandt Das Dateisystem Ihres Rechners dOrfte etwas anders aussehen - die Struktur wird jedoch ahnlich sein. Nun schauen wir uns die nachste Umgebung an. Dabei hilft uns das Kommando Is, das in der einfachsten Form den Aufbau hat: I Is /1st I listen, anzeigen Is - Kommando, um Dateien in dem aktuellen Directory anzuzeigen Ohne weitere Angaben liefert uns das Kommando Is die Dateien unserer nachsten Umgebung. In unserem Beispiel waren dies: $pwd lusr/kurslmonika $Is befehle projektA ueb 1 Das Is-Kommando zeigt uns dabei nicht den Inhalt der Dateien, (der Inhalt ist das, was in der Datei steht), sondern listet nur die Namen der Dateien auf. Unter diesen Namen k6nnen die Dateien angesprochen werden. Dateien k6nnen mit ihrem vollstandigen Pfadnamen angesprochen werden, dem sog. absoluten Pfadnamen (beginnend ab dem root-Directory) oder yom jeweils aktuellen Directory mit dem relativen Namen. Das Is-Kommando gibt dabei in der oben beschriebenen Form den relativen Namen der Dateien aus. Die Datei ueb1 kann also angesprochen werden mit: oder lusr/kurs/monika/ueb1 absolut (gesamter Pfadname): ueb1 relativ (ab Directory monika): Bei dem absoluten Pfadnamen bezeichnet der erste Schragstrich I das rootDirectory, die weiteren Schragstriche trennen jeweils die einzelnen Directoryund Dateinamen voneinander. Die Directories sind Inhaltsverzeichnisse, die Verweise auf Dateien und weitere Directories enthalten k6nnen. Sie wirken im Dateibaum wie Kreuzungen oder Knotenpunkte. Letztlich sind fOr uns aber nur die Dateien interessant. Wozu also Directories? 50
Auf los geht's los ... ------------------------------------------ 3.1.8 Mit Hilfe der Directories k6nnen Sie Ihre Dateien ordnen, strukturieren. Ihre Privatunterlagen haben Sie sicher auch geordnet, z. B. Ihre Versicherungsunterlagen in einem Ordner abgelegt, unterteilt nach Unfall, Haftpflicht und Krankenversicherung; einen weiteren Ordner evtl. fOr Ihre Mietangelegenheiten, unterteilt nach Vertragen, Heizkostenabrechnung usw. Die Ordner und Register entsprechen in etwa den Directories, die einzelnen Dokumente (Vertrage, Briefe, Abrechnungen) den Dateien. Wenn Sie nun einen bestimmten Haftpflicht-Versicherungsvertrag nachsehen wollen, wissen Sie genau, wo dieser Ordner steht, und welches Register Sie aufschlagen mOssen. Ihr Weg dahin: Arbeitszimmer, Versicherungsordner, Register Haftpflicht. Obertragt man dies auf ein UNIX-Dateisystem, so k6nnte dies so aussehen: Arbeitszimmer Versicherungen Mietangelegenheiten Bild 3 -14: Beispiel Hierarchie - Vergleich Arbeitszimmer Unser Weg im UNIX-Dateisystem Ober die einzelnen Directories zu der gewOnschten Datei wird als Pfad bezeichnet. Er beginnt mit der root. Die root hat als Directory den Namen I. I> Der Schragstrich am Anfang eines Pfadnamens bedeutet also immer, daB der Pfad im root-Directory beginnt. ZiNischen den weiteren Directories wird der Schragstrich als Trennungszeichen verwendet. Nehmen wir als Beispiel wieder unseren Benutzer Monika. Das Login-Directory ist lusrlkurslmonika. Hier sind bereits einige Dateien und Unterdirectories angelegt. Um ein Inhaltsverzeichnis der Dateien eines Directories zu erhalten, haben wir Is kennengelernt. Etwas erweitert hat es die Form: 51
3 UNIX - praktisch angewandt Is [-IFA] [Directory oder Dateinamenj Rekursiv liste eines Dateibaumes Format short Kurzformat, Directories sind mit .f. gekennzeichnet, Kommandostrings mit· long Format Anzeige der Dateien mit Attributen list (listen, anzeigen) Is - Kommando, um Dateien mit zusatzlichen Merkmalen anzuzeigen Die Optionen -I, -F, -R oder in den Kombinationen -IR oder -FR steuern dabei, welche Angaben das Is-Kommando zu den Dateien machen soli (eine Kombination -IF ware unsinnig, denn entweder soli das Kommando im Kurz- oder Langformat ausgegeben werden). Vorlaufig reichen uns die Optionen -IFR. Geben Sie beim Aufruf keinen Namen (Directory oder Dateij an, so wird ein Inhaltsverzeichnis vom aktuellen Directory, in dem Sie sich gerade befinden, ausgegeben. Das Kommando Is wird nochmals im Kapitel 3.4 (Dateiverwaltung und -pflege) ausfOhrlicher behandelt. Sehen wir uns die unterschiedlichen Aufrufe von Is fOr unser obiges Beispiel an: Is -I vom aktuellen Directory lusrlkurslmonika: FOr uns sind vorerst nur die in Fettschrift hervorgehobenen Informationen von Bedeutung. $ Is -I v~~r;_~ ¥ r - - '""" _ _ rw- r- u 9 0 2 monika 1 monika 1 monika I I kurs kurs kurs 32 117 12489 (Zugriffsrechte Modus) u -user Benutzer 9 -group Gruppe o - other Rest der Welt Feb 7 Feb 7 Feb 7 befehle projektA ueb1 I I Name der Datei r-read lesen w-write schreiben x-execute ausfOhren d = Directory - = normale Datel I Referenzzahler 52 I Benutzer- Gruppe GrOBe name in Bytes Datum der letzten Anderung Bild 3 -15: Beispiel listen, anzeigen von DirectorieslDateien (Is -0 I
3.1.8 Auf los geht's los ... Die erste Spalte der Ausgabe von Is -I zeigt an, ob es sich um eine normale Datei (Anzeige '-1 oder um ein Directory (Anzeige ,d1 handelt. Unter UNIX wird alles als ,Datei. bezeichnet, nur durch die Kennzeichnung wird unterschieden nach Directories, Gerate und die sog. normal en Dateien. Die Inhalte von normalen Dateien konnen Sie sich z. B. ansehen oder verandern. Directories konnen Sie dagegen nicht direkt verandern, sondern in den Directories nur weitere Dateien oder Unterdirectories anlegen, kopieren oder loschen. Die Kommandos hierfOr werden wir spater lernen (KapiteI3.3 und 3.4). Mit dem Kurzformat Is -FR sieht die Liste des gesamten Dateibaumes von lusrlkurslmonika wie folgt aus: $ Is -FR befehlel projektAl ueb 1 befehle: I Kennzeichen von Directories sichem . Kennzeichen von ausfOhrbaren projektA: bsp.c io.c Dateien (Kommandos) -' pro.c $ Bild 3 -16: Beispiel listen, anzeigen vom aktuel/en Directory mit Is -FR Wenn Sie sich andere Dateien oder Directories auflisten wollen, so geben Sie das Is-Kommando mit Namen an. Mochte z. B. Monika wissen, welche Dateien Hans hat, so kann sie aufrufen: $ Is -FR lusr/kurs/hans befehlel projektBI projektB: bSp.c io.c pro.c $ Bild 3 -17: Beispiel listen, anzeigen von DirectorieslDateien (Is -FR) 53
3 UNIX - praktisch angewandt Bei lang en Pfadnamen kann man sich leicht vertippen und muB recht viel schreiben. Deshalb stehen unter der Shell folgende Sonderzeichen zur Verfugung, um vom aktuellen Directory die umliegenden Dateien und Directories relativ ansprechen zu kennen: Ein Punkt bedeutet das aktuelle Directory, in unserem Fall lusrlkurs/monika Zwei Punkte •• bedeuten das dariiberliegende Directory, hier lusrlkurs, also die nachst hOhere Generation, das >Eltern-Directory< Um sich den Inhalt des Directories lusrlkurslhans anzuzeigen, kann Monika das Kommando mit dem relativen Pfadnamen aufrufen: Is . .Ihans befehle projektB Bild 3 -18: Beispiel /isten, anzeigen mit relativem Pfadnamen (..) Mit zwei Punkten kommen Sie jeweils um ein Directory heher. Will Monika sich z. B. das Inhaltsverzeichnis vom Directory lusrlman ansehen (sie befindet sich immer noch in lusrlkurs/monika), ruft sie auf: 54
3.1.8 Auf los geht's los ... Is ..t../man II Vusr) Vusrlkurs) - das nachst hohere Directory man 1 man8 Bild 3-19: Beispiel relative Pfadangabe (../../) Mit der Option -R erhalten Sie ein rekursives Inhaltsverzeichnis von einem gesamten Teilbaum, ausgehend vom jeweiligen Directory. Wenn Sie das Kommando Is -IR / aufrufen (/ bedeutet ab dem root-Directory), erhalten Sie damit eine Uste, die aile Dateien und Directories Ihres Systems aufweist. Nach dieser Uste konnten Sie sich Ihren Dateibaum zeichnen, einen Plan fOr Ihr UNIX-System. Unter UNIX sind einige Directories und Dateien fest zugeordnet. Was unter den einzelnen Directories aufbewahrt wird, zeigt Ihnen die nachfolgende Grafik: 55
UNIX - praktisch angewandt 3 UNIX-Dateibaum mit einigen Directories und Dateien ROOT - DATEISYSTEM ~ auslOhrbares UNIX Programm weitere Dienstprogramme (vi, more) bin etc Geri1teeintri1ge special files leeres Directory games man Spiele, wie chess, rogue, backgammon u.a. Online-Dokumentation man1 - man8 Directory fur die 8enutzer (ubergeordnet) Systembibliothek, Compiler, Makros (libraries) Di rectory fOr die einzelnen Kursteilnehmer kundenspezifische Kommandos Systemverwaltungsprogramme u. -dateien Ablage nicht zuzuordnender Dateien durch letclfsck wlchtigste Dienstprogramme (binaries) local Dateien und zur Systemgenerierung Ablage nicht zuzuordnender Dateien durch letclfsck weitere gramme (binaries) Die Dateien und Directories, die mit dieser Schraffur gekennzeichnet sind, wurden hier als Beispiel verwendel, d. h., diese Dateien und Directories im Original-UNIX AT&T enthalten. Auch k6nnen je Rechnerkonfiguration auch andere Directories und Dateien enthalten sein. BUd 3-20: Dateibaum des Seminarrechners 56 )
Auf los geht's los ... ------------------------------------------ 3.1.8 Ein kurzer Blick in den Dateimanager im CDE und KDE Hier wird sehr schon als Orientierung angezeigt, wo man sich im Dateibaum befindet. Durch Anklicken der Ordner (Directories) werden im darunter liegenden Bereich die Inhalte des Ordners angezeigt. Weitere Details Ober den Dateimanager finden Sie im Kapitel 4. ~ ____________~F~I~le~M~a~na~g~e~r_-~te~m~p~l~r2~____________11_'J'=t~ f,lIe ~elec ed ~Iew I ~-~-:J / ho e tempir2 /home/temp I r2 !:!.elp Pfadanzeige im CDR ab dem Root-Directory Der durchgestrichende Bleistift weist daraufhin, daB Sie in diesen Directories keine Schreiberlaubnis haben if I 58 Items 38 Hidden jp,jI ~ Eilll ~ ~ Ecil ~ :'01 ~J luu\.n ~.~, J:<O,;hw QpUUII~ ;:j~I~ ,~ ~ .OGalion. r---------------~ fIIeJr:)'.'CE!I~op;T~ " p.:E' I> r.)ol Darstellung im KDE ab dem Root-Directory I> I.' ') elllplal9' la,h Bild 3-21: Darstellung der Baumstruktur im Dateimanager Vorab wenden wir uns erst mal wieder der direkten Eingabe von UNIX-Befehlen unter ASCII-Terminals zu. So einfach es ist, nur mit Maus-Klick ein Directory zu wechseln, so haben auch die Kommandos, die wir bei der ASCII-Eingabe kennenlernen werden, einige Vorteile. Wenn Sie sich die wichtigsten Kommandos mit ein paar Optionen merkel"l, werden Sie gezielt und somit schneller bestimmte Informationen abrufen konnen. 57
3 UNIX - praktisch angewandt Wie arbeiten Sie mit Directories unter ASCII-Terminals? Wollen Sie sich die einzelnen Inhaltsverzeichnisse der in unserem Beispiel aufgefUhrten Directories anzeigen lassen, so haben Sie bisher zwei M6glichkeiten kennengelernt, das Is-Kommando aufzurufen: OMit Angabe des absoluten Pfadnamens (beginnend ab der root) / o oder mit dem relativen Pfadnamen (beginnend ab Ihrem aktuellen Directory) wobei Sie mit ..I jeweils zum nachst hOheren Directory gelangten. 1st Ihnen das Aufzahlen und vor allem das Eintippen der Pfadnamen zu umstandlich? (Das Aufzahlen der Generationen klingt ja fast wie bei Karl May: Hadschi Halef Dmar Ben Hadschi Abdul Abbas Ibn Hadschi Dawud al Gossarah ... ) Dann wechseln Sie am besten in das jeweilige Directory und k6nnen sich von dort die nahere Umgebung ansehen. Das Kommando, um in ein anderes Directory zu wechseln, lautet: cd { Directory} change directory (wechsel Directory) cd - Kommando, um in Directories zu wechseln Das Directory geben Sie entweder mit relativen oder absoluten Pfadnamen an. Es ist dann Ihr neues aktuelles Directory. Eine Reihe von Kommandos setzt, falls kein Parameter angegeben wird, einen Standardwert ein (default). Beim Is-Kommando ist dies das aktuelle Directory. Db Sie allerdings in diesem .neuem Directory< Dateien ansehen, (Iesen - read) oder neu anlegen (schreiben - write) oder Kommandos ausfUhren (execute) dOrfen, richtet sich nach den vorgegebenen Zugriffsrechten. Mit dem Kommando Is -I werden die Zugriffsrechte anzeigt (siehe auch Bild 3-15 auf Seite 52). Dabei gilt: Typ Directory normale Dateien - f- d c- - - Zugriffsrechte (Modus) eingeteilt nach: Besitzer Gruppe andere rwx rw - rwx rw- r-x r-- Irvr~ rw- r-- II x-e~ecute w-wn te r-read 58 ausfOhren schretben lesen Bild 3-22: Zugriffsrechte - Anzeige mit Is-I
3.1.8 Auf los geht's los .. . ------------~~~--------------------- Die Zugriffsrechte werden detailliert im Kapitel 3.4.6 auf Seite 176 behandelt. Vorab ist fOr Sie wichtig zu wissen, daB Sie nur dann in ein Directory wechseln konnen, wenn die fOr Sie geltenden Zugriffsrechte (je nachdem ob Sie Besitzer sind, der gleichen Gruppe angeh6ren, oder zu den anderen zahlen) mit einem x versehen sind. Ohne Angabe eines Directories kommen Sie mit dem Kommando cd immer in Ihr Login- bzw. in Ihr Home-Directory zuruck. Das ist eine sehr schone, sichere Funktion. Um sicherzugehen, wo Sie gelandet sind, gibt Ihnen das bereits bekannte Kommando pwd (print working directory) Auskunft, wo Sie sich befinden. Wechselt Monika z. B. in das Directory von Hans, so gibt sie ein: absolute Pfadangabe: $ cd lusr/kurslhans $ pwd /usrlkursl hans $ relative Pfadangabe: oder $ cd ../hans $ pwd l usrlkurs/hans $ bisheriges aktuelles Directory Bild 3-23: Beispiel cd Directory / pwd Monika wechselt zwar in das Directory hans, erhalt damit jedoch keine neuen Zugriffsrechte und kann dort nur dann Dateien ansehen oder verandern, wenn Hans es ihr erlaubt hat, also die Zugriffsrechte entsprechend gesetzt hat. Mit dem Wechsel des Directories werden nicht die Besitzerrechte geandert! 59
3 UNIX - praktisch angewandt Kurze Zusammenfassung Relative und absolute Pfadnamen, Kommandos: Is, cd, pwd o Welche Pfadbezeichnungen und Kennzeichen kennen Sie? I Absolute Pfadnamen beginnen immer mit dem Schragstrich der root z. B.: lusrlkurs/monika Der Schragstrich zwischen den Directories/Dateien gilt als Trennungszeichen, z.B. ist ,monika< im obigen Beispiel ein Unterdirectory vom Directory ,kurs<, dieses wiederum ein Unterdirectory vom Directory ,usr<. Bei relativen Pfadnamen als Kennzeichnung fUr das aktuelle Directory z. B.: Is -I . (Ohne Angabe des Punktes, wird bei beim Is-Kommando das aktuelle Directory angenommen - Default Wert). •• Ais Kennzeichnung fUr das daruberliegende Directory z.B. von lusr/kurs/monika: Is •.Ihans o Wie kennen Sie sich den Inhalt eines oder mehrerer Directories ansehen? Mit dem Kommando Is [-IF] [Directories, Dateien] o Wo befinden Sie sich nach dem Anmelden? In Ihrem Home-Directory. Mit dem Kommando pwd kennen Sie sich den Pfadnamen Ihres aktuelien Directories anzeigen lassen. o Wie kennen Sie in einen anderen Zweig des Dateibaumes gelangen? Mit dem Kommando cd [relative oder absolute Pfadangabe des Directories} z.B. cd lusrlkurslhans Sind Sie bereits in den Bann des Rechners geraten? Haben Sie gar die Zeit vergessen? Wie spat ist es? - Fragen Sie Ihren Rechner! Doch bevor Sie nun einige nutzliche Kommandos kennenlernen, gennen Sie sich zwischendurch eine Kaffee- oder Teepause. 60
3.1.9 Auf los geht's los ... 3.1.9 Einige nutzliche Kommandos Datumsanzeige Zu Beginn wurde schon darauf hingewiesen, wie wichtig es unter UNIX ist, mit dem richtigen Datum zu arbeiten. Jedes System hat eine Uhr und unter UNIX kennen Sie Datum und Uhrzeit mit dem Kommando date abfragen. Nur der Systemverwalter kann das Datum andem. Wie spat ist es? [ +" Formatangaben" 1 II I Datum .A.nderung der Ausgabe date - Kommando, um Datum und Uhrzeit anzuzeigen Geben Sie das Kommando ohne Parameter (zusatzliche Angaben) ein, wird Ihnen das Datum in der Standardform (meist amerikanische Art) angezeigt, z. B. >Tue Mar 27 13:48:21 MET 1996,. WOnschen Sie eine individuelle Datumsanzeige, so kennen Sie das Format andern. $ date Thu $ $ Ohne Angaben oder Voreinstellung durch Variable wird das Datum in amerikanischer Form angezeigt Mar 27 13:48:21 MET 1996 date +"heute ist der: %d. %m. °/oy" heute ist der: 27. 03. 96 $ r\ Formatangaben fUr: I I Tag I Monat Jahr Bi/d 3-24: Beispiel von date (Datumsanzeige) Ab Version V.3 kann Ober die Variable LANG die nationale Sprache eingestellt werden. Soweit entsprechende Software und entsprechende Dateien (wie z. B. das Online-Manual) zur VerfOgung stehen, werden dann Informationen in der zugeordneten Sprache ausgegeben und die jeweilige nationale Schreibweise fOr bestimmte Kommandos, wie z. B. auch fOr date, zugrundegelegt (naheres Ober Variablen in Kapitel 3.6). 1m CDE haben Sie natOrlich Uhrzeit und Datum immer griffbereit. In der Desktop-Anzeige finden Sie links eine kleine Uhr und daneben das Kalenderblatt. 61
3 UNIX - praktisch angewandt Trotzdem werden Sie bald erkennen, daB sogar das Kommando date nach wie vor benetigt wird, namlich dann, wenn Sie es z. B. in Dateien umleiten wollen (das lernen Sie im nachsten Kapitel). Die eigene Aufbereitung der Ausgabe kann hierbei dann wichtig sein. Mechten Sie weitere Formatangaben kennenlernen, so kennen Sie mit Hilfe des Online-Manuals die genaue Beschreibung des Kommandos date am Bildschirm lesen. Das Online-Manual ist eine auf dem Rechnersystem vorhandene Beschreibung der verfOgbaren Kommandos. Lesen des Online-Manuals Unter dem Directory lusr/man sind nach Kapiteln getrennt (man1 - man8) die Beschreibungen (Manua/seiten) der Kommandos abgelegt. Die einzelnen Dateien enthalten neben dem beschreibenden Text Formatierungsanweisungen fOr das UNIX-Textverarbeitungspaket nroff/troff. Mit dem Kommando man kennen Sie sich diese Seiten am Bildschirm ansehen. man Kommando I manual man - Kommando, um die Beschreibung von Kommandos (Manualseiten) anzusehen Das Formatieren (Erstellen von Kopfzeilen, automatischer Seitenumbruch, Seitenzahlen, eingerDckte oder zentrierte Texte) der Manualseite(n) kann einige Zeit dauern. Deshalb verlieren Sie nicht die Geduld, wenn die erste Seite nicht sofort auf dem Bildschirm erscheint. $ man date DATE (1) UNIX 3.0 DATE(1) NAME date - print and set the date SYNOPSIS date [mmddhhmm[yy]]{+formatj DESCRIPTION $ 62 Bild 3-25: Beispiel von man (Anzeige von Manualseiten - date)
3.1.9 Auf los geht's los ... --------~--~------~--~ Die Manualseiten werden seitenweise ausgegeben. Dabei wartet das Programm nach der Anzeige einer Seite, bis Sie diese gelesen haben. Um jeweils die nachste Seite am Bildschirm zu lesen, drOcken Sie die Leertaste Wie sind die Manualseiten gegliedert? KOPFZEILE: Name des Kommandos mit Kapitel-Nr. Die Kommandos sind hier in GroBbuchstaben geschrieben und stehen jeweils am linken und rechten Rand der Kopfzeile, damit bei den ausgedruckten Seiten die alphabetisch sortierten Kommandos innerhalb der Kapitelleicht auffindbar sind. NAME: Name des Kommandos (richtige Schreibweise groB/klein). AnschlieBend wird kurz die Funktion des Kommandos erkiM. SYNOPSIS: (knappe Zusammenfassung) Das Kommando wird so angezeigt, wie es eingegeben wird, wobei aile moglichen Optionen und Parameter aufgefOhrt sind (Syntaxregelj. Aile zusatzlichen Angaben, die nicht zwingend sind, sondern wahlweise verwendet werden konnen, sind in eckige Klammern gesetzt []. DESCRIPTION: (Beschreibung) Hier wird ausfOhrlich beschrieben, wie Sie das Kommando verwenden konnen, welche Parameter, Optionen bestehen und was sie bewirken. FILES: Die angegebenen Dateien werden benotigt, um das Kommando auszufOhren. DIAGNOSTICS: An dieser Stelle stehen besondere Hinweise, z. B. >use help for explanations' (fOr Erklarungen verwende help) und evtl. auftretende Fehlermeldungen. WARNING: Hinweise auf mogliche Fehlermeldungen. EXAMPLE: (Beispiel) Leider werden hier nur selten Beispiele der Kommandoaufrufe angefOhrt (nur von einigen Firmen erganzt). SEE ALSO: Existieren Kommandos mit ahnlicher Funktion, so wird hier darauf verwiesen. Sehen Sie zwei weitere Ausschnitte der am Bildschirm angezeigten Manualseiten fOr das Kommando date: 63
3 UNIX - praktisch angewandt $ ... man date DESCRIPTION ... Field Descriptors. Feldangabe n t m d fUge das Zeichen .NeueZeile. ein tOge ein Tabulator-Zeichen ein Monat in Ziffem 01 - 12 Tag des Monats 01 - 31 letzte 2 Ziffem des Jahres Datum in Form MMm/JJ Stunde 00 - 23 Minute 00 - 59 Sekunde 00 - 59 Zeitangabe hh:mm:ss Tag des Jahres 001 - 366 Tag der Woche Sonntag =0 abgekOrzter Wochentag abgekOrzter Monatsname Zeitangabe in 12 Stunden Kennung AM - vormittag PM - nachmitag w a Insert a new line character insert a tab character month of year - 01 t012 day of month - 01 to 31 last two digits of year- 00 to 99 date as mmlddlyy hour - 00 to 23 minute - 00 to 59 second - 00 to 59 time as HH:MM:SS day of year - 001 to 366 day of week - Sunday =0 abbreviated weekday - Sun to Sat r h abbreviated month - Jan to Dec time in AM/PM notation Y D H M S T j ... DIAGNOSTICS No permission bad conversion bad formal character FILES /dev/kmem - -- if you aren't the super-user and you try to change the date; if the date set is syntactically Incorrect; if Ihe field descripter is not recognizable WARNING It is a bad practice to change the date while Ihe system is running mulli user. DIAGNOSE Keine Erlaubnls Falsche Umwandlung Falsches FormatZeichen DATEIEN /dev/ kmem wenn Sle n cl ht Systemverwalter sind und versuchen , das Datum zuilndem; wenn das Datum falsch eingegeben wurde (nicht den Regeln entsprechend); wenn das Zelchen fOr die Feldangabe unbekannt ist. Dateien, die das Kommando benutzt. Wamung Es empfiahlt sich nicht, das Datum zu ilndern, wilhrend das System 1m multi-user Modus arbellat. Bild 3-26: Beispiel von man (Anzeige von Manua/seiten) Fortsetzung 64
3.1.9 Auf los geht's los ... --------------------------------~ Die ausfUhrliche Beschreibung von date soli hier nur als Beispiel fOr das Kommando man dienen. Gleichzeitig soli es Sie ermuntern, nach diesem EinfUhrungskurs mit Hilfe der UNIX-Dokumentation die eine oder andere interessante Option und weitere Kommandos allein kennenzulernen. Wenn Sie nur wissen wollen, fOr was ein bestimmtes Kommando genutzt werden kann, geben Sie ein: whatis Kommando whatis - Kommando, um eine Kurzinformation uber ein Kommando zu erhalten Welche Dokumentation AT&T zu UNIX System V liefert, ist u.a. im Literaturverzeichnis enthalten. Mit Hilfe der UNIX-Dokumentation konnten Sie sich nun Tage und Nachte beschaftigen, doch gerade das wollten Sie ja sicherlich nicht. In diesem Buch werden, wie in der Einleitung schon gesagt, nur die wesentlichen Optionen besprochen, die in der Praxis am meisten benotigt werden, um Ihnen den Einstieg in UNIX zu erleichtern. Sie wissen bereits, wo Sie sich befinden (pwd), wie Ihre nahere Umgebung aussieht (Is -I), Sie konnen sich im gesamten Dateibaum bewegen (cd), aber Sie wollen sicher auch wissen, welche Informationen in den Dateien verborgen sind. Anzeige eines Datei-Inhaltes Bisher haben wir uns mit dem Kommando Is nur die Namen und einige Merkmale von Dateien angesehen. Um zu sehen, welchen Inhalt eine Datei hat, gibt es das Kommando cat. cat Dateiname concatenate (zusammenfOgen) cat - Kommando, um sich einen Dateiinhalt anzusehen Warum >concatenate - zusammenfOgen<? Sie werden spater bei dem Kapitel Shell-EinfUhrung lernen, wie Sie dieses Kommando verwenden konnen, um eine Datei an eine andere anzuhangen. Hier erst einmal die Grundfunktion des Kommandos: die Ausgabe eines Dateiinhaltes. Allerdings konnen Sie sich nur Dateiinhalte ansehen, wenn sie in ASCII (American Standard Code for Information Interchange - Amerikanischer Standardcode fOr Informationsaustausch) abgespeichert sind. AusfUhrbare Programme' sind in Binarformat abgespeiO , o EinProgramm wird in einer Programmiersprache geschrieben (Source oder Quelldatei) und in die vom Rechner interpretierbare Maschinensprache umgewandelt - (compiliert) Ziffern werden in Binarform nur mit 0 und 1 dargestellt: 1 =00001, 2=00010, 3=00011 usw. 65
3 UNIX - praktisch angewandt chert und nicht lesbar. Ebenso k6nnen Inhalte von Directories nicht gelesen werden, sondern nur mit dem Is-Kommando angezeigt werden. $ cat lusr/lib/cookies It's never too late to learn Haste makes waste To be is to do I. Kant To do is to be J.P. Sartre Do be do be do F. Sinatra Bild 3-27: Beispiel von cat (Anzeige des Inhalts einer Datei) Wenn die Datei lusrllib/cookies auch auf Ihrem Rechner vorhanden ist, so hatten Sie vielleicht nach dem Kommando cat lusrlliblcookies Schwierigkeiten, den Text so schnell zu lesen; denn mit cat rauscht der Text, wie im Kino oder Fernsehen der Vorspann, viel zu schnell Ober den Bildschirm. Sic her, Sie wissen bereits, wie Sie ihn stoppen und wieder zum Laufen bringen k6nnen: und Zum Anhalten Zum Wiederstarten (stop) (quittieren) SCROLL oder falls an Ihrem Terminal vomanden : NOSCROLL Doch ist dies etwas lastig. Lernen Sie deshalb ein komfortableres Kommando: Slattern im Inhalt einer Datei Um einen Dateiinhalt seitenweise am Bildschirm anzusehen, gibt es zwei sehr ahnliche Kommandos: more und pg. Sehen wir uns zuerst das Kommando more an: more Dateiname(n) (mehr) 66 more - Kommando, um einen Dateiinhalt seitenweise anzuzeigen
Auf los geht's los ... ---------------------------------------- 3.1.9 $ more lusr/man/man1/date.1 .\"pltroff -manl $1 .THDATE 1 .SHNAME date \-print und set date .SH SYNOPSIS .B date [mmddhhmm[yy] ] 1f no argument is given, or if the argument begins with VB+ VR, the current date and time are printed Bild 3 -28: Beispiel von more (Blattern in Dateien) mit Teilanzeige der Manualseite ,date. 1, Dies ist der Originaltext der Manualseite, wie sie auf dem Rechner abgespeichert ist. Sie sehen, der Text ist mit sog. Makros fUr die Formatbearbeitung mit dem Programm nroft versehen, z. B. . TH fUr Title Header (Titel der Kopfzeile), .SH Section Header (AbschnittsOberschrift), .B fOr bold (Fettschrift). Auf vielen Rechnern werden allerdings die Manualseiten nicht mehr in dieser Form abgespeichert, sondern sind bereits vorformatiert (damit geht das Laden der Seiten wesentlich schneller). Ahnliche Formatangaben finden Sie aber auch in den ASCIITexten vielerTextprogramme oder auch bei den HTML-Dateien (Hypertext Markup Language) fOr die WWW-Seiten (World Wide Web), nur daB Sie dort meist nicht mehr direkt eingetippt werden mOssen, sondern komfortabel Ober entsprechende Programme mit MenOleisten, Buttons (Schaltflachen) und/oder Funktionstasten (Tasten, denen bestimmte Funktionen zugeordnet sind) erstellt werden (wie mit Applixware, FrameMaker u.v.a.). Doch zurOck zu unserem Programm more. DrOcken Sie z.B. die Leertaste, so kennen Sie seitenweise in der Datei vorwarts blattern. Hier die wichtigsten Funktionen: Leertaste I Returntaste ~ GJ Seitenweise vorwarts blattern Zeilenweise vorwarts gehen Aufruf eines HilfsmenOs (help) Beenden des Programmes (quit) 67
3 UNIX - praktisch angewandt In der Kommandozeile von more sehen Sie ubrigens, wieviel Prozent der gesamten Datei bereits angezeigt wurde. An dieser Stelle steht auch der Cursor (Schreibmarke). Ein ahnliches Kommando mit mehr Such- und Positionierungsmoglichkeiten ist pg, das ebenfalls den Inhalt einer ASCII-Datei seitenweise ausgibt. pg Dateiname(n) page (Seite) pg - Kommando, um Dateiinhalte seitenweise anzuzeigen Das pg-Kommando ist etwas komfortabler als das Kommando more . Sie konnen mit pg z. B. auch auf die 1. Zeile einer Datei zuruckgehen, indem Sie als Funktion die >1 < eingeben (fOr: gehe zur Zeilennummer 1). Die verschiedenen Funktionen konnen Sie sich anzeigen lassen, wenn Sie den Buchstaben h (help) tippen. HilfsmenO aufrufen Sehen wir uns hierzu ein Beispiel an: / $ pg text1 Herzlich Willkommen zum UNIX-Einfuehrungskurs h Hilfsfunktion !pattern I help quit next page next line display half a page more redisplay current page skip the next page forward next file previous file last page save current file in savelist search forward for pattern ?pattern? or Apattern A /command number execute command linenumber fUhre das Kommando aus gehe nach Zeile n (n fUr Zahl) h qorQ <.blank> or \n I dorAD . orAL f n p $ s savelist 68 Beenden des Programms nachste Selte (LeertasteJReturn) nlichste Zelle nlichste halbe Seite aktuelle Seite nochmal uberspringe nachste Seite nachste Datei vorhergehende Datei letzte Seite sic here aktuelle Datei in savelist suche nach dem Muster vorw!i.rts search backward for pattern suche nach dem Muster riickwarts Bild 3-29: Beispiel von pg (page - Blattern in Dateien) j
3.1.9 Auf los geht's los ... Die wichtigsten Funktionen, die Sie benotigen werden, sind: Leertaste I Seitenweise vorwarts blattern oder Returntaste o Anzeige der letzten Seite (Ende des Textes) 8 lurOck zur leile 1 GJ Gehe zur leile n (z. B. fOr n=21: zur Zeile 21) GJ Beenden des Programmes (quit) Wer arbeitet am System? Arbeiten Sie allein an dem Rechner oder leisten Ihnen einige Kollegen Gesellschaft? Mit dem Kommando who erfahren Sie, wer auBer Ihnen noch am System arbeitet. Sie sehen, mit welchem Namen er im System angemeldet ist, an welchem Terminal er arbeitet und um wieviel Uhr er sich angemeldet hat. who (wer) who - Kommando, um zu sehen, wer noch am System arbeitet Auch hierzu gleich ein Beispiel: $ who monika tty11 Apr hans tty12 Apr bemd tty 13 Apr I I Benutzemame r I Name des Terminals 07 07 07 08:12 08:15 08:35 I I Datum und Uhrzeit der Anmeldung (Login) Bild 3-30: Beispiel von who (Wer arbeitet am System) 69
3 UNIX - praktisch angewandt Sollten Sie nach all dem bisher Gelernten nicht mehr wissen, wer Sie sind, UNIX gibt Ihnen gerne Auskunft. Fragen Sie: who am (wer bin ich) Wie Sie an dem folgenden Beispiel sehen, kann UNIX keine psychologische Analyse durchfUhren, sondern sagt Ihnen nur, was es von Ihnen weiB: Ihre Benutzerkennung (Namen, mit dem Sie sich angemeldet haben), den Namen des Terminals, an dem Sie arbeiten und das Datum und die Uhrzeit Ihrer Anmeldung: $ who am i monika tty11 Apr 07 08:12 Bild 3-31: Beispiel von who am i (wer bin ich) Um netzweit Informationen tiber Benutzer zu eriragen, gibt es das Kommando finger [Benutzernamen@Rechnername] finger - Kommando, um Benutzerinformation zu erhalten Dieses Kommando zeigt Ihnen wie who Namen Terminalnamen, Anmeldezeit und noch einige zusatzliche Informationen. Wie Sie bei den letzten Kommandos gesehen haben, werden auch Terminals unter eigenem Namen gefUhrt. Unter UNIX werden Gerate ahnlich wie Dateien behandelt. Sie sind unter dem Directory /dev (fOr device - Gerat) eingetragen. Unter vielen UNIX-Systemen beginnen die Namen der Terminals mit tty (fur terminal type) und sind fortlaufend entsprechend der Steckplatze fUr die Terminalleitungen numeriert. Anzeige des Terminalnamens Sollten Sie Schwierigkeiten mit Ihrem Terminal haben, z. B., Sie k6nnen pl6tzlich keine weiteren Eingaben mehr machen oder erhalten kein Login, um sich anzumelden, dann ist es fUr den Systemverwalter von Vorteil, wenn er den Namen Ih- 70
Auf los geht's los ... 3.1.9 res Terminals weiB. Solange IhrTerminal noch funktionsfahig ist, zeigt Ihnen das Kommando tty den Namen Ihres Terminals an: tty t erminal type (x Typ) tty - Kommando, um den Terminalnamen (Typ) anzuzeigen $ tty Idevltty11 Bild 3 -32: Beispiel von tty (Terminal-Typ) Arbeiten Sie mit einer graphischen Oberflache, wird jedem geoffneten Fenster (Terminal) ein eigener Name zugewiesen. Meist wird es als Pseudo-Terminal mit Idevlptsln bezeichnet (n steht fOr die Nummer, 1 fOr das erste geoffnete Fensters, 2 fOr das zweite usw.). UNIX kommt von AT&T (American Telephon and Telegraph) und deshalb ist es nicht verwunderlich, daB unter UNIX ein eigenes Kommunikationsnetz besteht. So konnen Sie statt zu telefonieren Ihrer Kollegin (Ihrem Kollegen) eine Nachricht schicken, die dann auf ihrem (seinem) Bildschirm erscheint. Allerdings muB die Kollegin, der Kollege am System angemeldet sein. Sollten sie an mehreren Terminals arbeiten (dies ist immer der Fall, wenn mit einer grafischen Oberflache gearbeitet wird) benotigen Sie zusatzlich auch den Namen des Terminals, an dem sieler arbeitet. Senden von Nachrichten an angemeldete Benutzer Mit dem Kommando write schicken Sie an Benutzer, die am gleichen System oder im Netzverbund angemeldet sind, eine Nachricht (message). write Benutzername[@Rechner] [Terminalnamen] (schreiben) write - Kommando, um Benutzern, die am System angemeldet sind, eine Nachricht zu senden 71
3 UNIX - praktisch angewandt So kann Monika Hans fragen: $ write hans Treffen wir uns um 10:30 zum Kaffee in der Kantine? <CTRL+ d> $ J I Urn die Nachricht abzuschlie6en, wire! das Zeichen fur Dateiende eingegeben Bild 3-33: Beispiel write (Nachrichten senden) I> Achten Sie darauf, daB Sie das Endezeichen in einer neuen Zeile beginnen, sonst wird der Text der gleichen Zeile nicht Obermittelt. Auf dem Bildschirm von Hans erscheint (oft verbunden mit einem Klingelton): $ Message from monika tty11 {Mon Apr 7 10:07:00] Treffen wir uns um 10.30 beim Kaffee in der Kantine? $ Bild 3-34: Beispiel write (Nachrichten empfangen) Hans kann, sobald er die Nachricht erhalt, ebenfalls das Kommando write monika aufrufen. Damit kennen abwechselnd Nachrichten ausgetauscht werden. Ein etwas komfortableres Kommando als write ist das Kommando talk Benutzername[@Rechner] [Terminalnamen] talk - Kommando, um ein Gesprach uber Bildschirm zu fuhren Hier werden auf dem Bildschirm zwei Bereiche markiert. In einem werden die Nachrichten des Partners aufgezeichnet, in dem anderen die eigenen Mitteilungen. (In der Praxis hat sich sowohl write als auch talk wenig bewahrt; hier greift man doch lieber zum Telefon oder schreibt eine e-mail.) Denn solche Nachrichten Ober Bildschirm kennen oft sterend sein. Falls Ihnen doch jemand eine Nachricht schicken will und Sie ungestert arbeiten wollen, 72
3.1.9 Auf los geht's los ... ------------------~--~--~~~-------- verschlieBen Sie Ihr Terminal anderen Benutzern gegenOber. Das Kommando hierzu lautet: mesg [n] [ y] message - Nachricht r r yes Ihr Terminal ist wieder frei und Sie konnen Nachrichten empfangen no Andere Benutzer dOrlen Ihnen keine Nachrichten send en mesg - Kommando, um den Bildschirm fur Nachrichten zu sperren bzw. wieder zu offnen Dagegen wird das nachste Kommando, um Nachrichten (Post) zu versenden, sehr haufig genutzt. Nicht nur an Rechnern innerhalb einer Firma, sondern weltweit Ober sog. Provider. Dies sind Firmen, die Dienste im Internet oder anderen Netzen anbieten. Zu diesen Diensten geh6rt u.a., die elektronische Post weiterzuleiten und fOr Sie zu empfangen. Provider sind Z. B. im Internet EUnet, NTG/xlink oder fOr andere Netze CompuServe, T-Online, America Online u.v.a. Die verschiedenen Netze sind wiederum miteinander verknOpft. Doch davon mehr im Kapitel 3.6 (Wissenswertes Ober Netze). Die elektronische Mail Um Benutzern eines Systems (oder Z. B. Dber Modem weltweit) eine Nachricht zu versenden, gibt es das Kommando mail Benutzemame(n)[@Rechner] (post) mail - Kommando, um Nachrichten (Post) elektronisch zu senden 73
3 UNIX - praktisch angewandt Statt Ober herk6mmliche Art Aktennotizen zu schreiben, die evtl. nicht mehr rechtzeitig mit der Hauspost ausgetragen werden, kann z. B. Monika eine 'elektronische Aktennotiz' senden: $ mail hans Subject: Abteilungsmeeting Am Freitag urn 16.00 h ist Abteilungsmeeting. Bitte punklich erscheinen <CTRL + d> Endezeichen auf neuer Zeile Gc: bernd iris $ Bild 3-35: Beispiel von mail- versenden In obigem Beispiel wird die Aktennotiz an den Benutzer hans geschickt. Ais Subject (Betreff) wird kurz angegeben, um was es sich handelt. Dieser Betreff wird spater im sog. Header (Kopfzeile) angezeigt. Nachdem mit <Gtrl + d> (End of File) die Nachricht beendet wird, erscheint die Anzeige Gc: Hier kann noch angegeben werden, wer alles eine Kopie erhalten soli. In diesem Fall bernd und iris. Aile Benutzer, die eine Mitteilung mit mail geschickt bekamen, erhalten automatisch yom System den Hinweis ,you havemail•• sobaldsiesichanmelden*.Um die Post zu lesen oder selbst nachsehen, ob im UNlX-Briefkasten Post da ist, rufen Sie das Kommando mail ohne weitere Angaben auf. Es erscheint dann eine Liste mit allen Briefen, die eingegangen sind. Neue Nachrichten sind mit N (New) gekennzeichnet. Um die Nachrichten zu lesen, geben Sieein: t (type) um die neueste Nachricht anzuzeigen tn (n fOr die fortlaufende angezeigte Nummer z. B. die Nummer 1) Haben Sie keine Post erhalten, erscheint die Nachricht ,No mail, . Bild 3 -36: Beispiel von mail (Briefe empfangen) Was soli mit der Post geschehen? Diese Frage drOckt das Fragezeichen aus, das nach der Anzeige eines Briefes gezeigt wird. ahnlich wie bei more und pg k6nnen Sie Ober bestimmte Tasten weitere Funktionen ausl6sen. 74 * Es kann z. B. in der Datei .profile voreingestellt werden , daB Sie immer benachrichtigt werden soli en, sobald neue Post eintrifft (Kommando biff)
3.1.9 Auf los geht's los ... Die wichtigsten Funktionstasten von mail sind: (delete) - leschen, ab in den Papierkorb Beenden des Programmes Q nachster Brief D nochmalige Anzeige des vorherigen Briefes Geben Sie selbst ein ? ein, dann erhalten Sie ein HilfsmenO, das Ihnen die meglichen Funktionen anzeigt: ?? ----------------------- Anzeige dieses Hilfemeniis Programm beenden Brief nochmals Anzeigen q quit p r print reply - - - - - s [file] save (default mbox) w [file] same without header wie unter 'S', jedoch ohne Absender- Antwort an Absender schicken der gesamte Text (mit Angaben von wem die Post kam) soli in die angegebene Datei (file) geschrieben werden. Angaben print previous vorhergehenden Brief anzeigen d de/ete - - - - angezeigten Brief loschen + next (no delete)- m [user] mail to user--- nachsten Brief anzeigen (statt + kann auch die Retumtaste gedriickt werden) weiterteiten an Benutzer !cmd execute cmd - - Kommando ausfiihren ? get help - - - Hilfemenii anzeigen Bild 3-37: Beispiel des Hilfsmenii von mail Mit mail konnen Sie, wie schon erwahnt, mit weltweit entfernten Rechnern Informationen austauschen, wenn Sie an dem UNIX-Rechnernetz EUnet (European User Network) oder Internet angeschlossen sind. Wenden Sie sich fOr weitere Informationen an die EuNet Deutschland GmbH, Emil-Figge-Str. 80, 44227 Dortmund, Telefon 0231/9720-0 oder an die GUUG (German UNIX User Group, Elsenheimerstr 43, 80687 Miinchen, Tel. 089/5 70 7697, Fax 089/5 70 76 07). 75
3 UNIX - praktisch angewandt 3.1.10 Ausschalten eines UNIX-Rechners In diesem Kapitel haben Sie bereits gelernt, wie Sie sich an- und abmelden und welche Voraussetzungen erfOlit sein mOssen, um mit einem UNIX-Rechner zu arbeiten. FOr den Start des Rechners ist der Systemverwalter zustandig und eben so fOr das Herunterfahren und Ausschalten des Systems. Wurde ein Rechner in den Multi-User-Betrieb hochgefahren, wird ein hOflicher Systemverwalter vor dem Ausschalten erst alien Benutzern die Nachricht senden, daB sie sich z. B. alie innerhalb von einer Minute abmelden solien. Mit einem spezielien Kommando (z. B. shutdown), das er an der Systemkonsole eingibt, werden nach Ablauf dieser Frist alie noch laufenden Prozesse abgebrochen (gekillt - so hart sind hier die Brauche!) und das System in den Single-User-Modus zurOckgefahren. Der Systemverwalter gibt dann noch das Kommando sync ein. Damit werden alie noch gespeicherten Datei-Informationen auf die Platte(n) zurOckgeschrieben - und erst dann kann der Rechner ausgeschaltet werden. Auf manchen Systemen wird hierfOr das Kommando halt eingegeben. sync und/ oder halt (synchronisieren) und ausschalten sync - Komrnando, urn Datei-Inforrnationen auf die Platte zuruckzuschreiben und den Rechner auszuschalten [> Wichtig fOr Sie ist zu wissen: Schalten Sie niernals den UNIX-Rechner einfach aus! Es konnen Inkonsistenzen (Unbestandigkeit, Ungleichheiten) im Dateisystem auftreten. Solite es doch einmal passieren bzw. einmal notwendig werden (z. B. an einer Workstation, an der Ihr Eingabe-Terminal auch gleichzeitig die Systemkonsole ist und durch einen Programmabsturz nichts mehr geht), dann inforrnieren Sie den Systernverwalter, damit er den dann unbedingt notwendigen Plattencheck (fsck) durchfOhrt! 76
Auf los geht's los ... ---------------------------------------- 3.1.11 3.1.11 Zusammenfassung der ersten Kommandos Um den Umsteigern von DOS auf UNIX eine kleine Lernhilfe zu geben, ist unter Kommandoeingabe auf ahnliche Kommandos unter DOS hingewiesen. Kommandoeingabe Funktion passwd {Benutzemame] Andert das PaBwort Das Paf3wort wird nicht angezeigt und so lite mindestens 6 Zeichen enthalten. Is [-FIR] list Zeigt den Inhalt von Directories bzw. Attribute von Dateien -F Format short Directories sind mit "/" gekennzeichnet, ausfUhrbare Kommandos/Programme mit ,'( -I long format Anzeige mit Attributen -R Rekursiv Der Dateibaum mit samtlichen Unterdirectories wird angezeigt Unter DO: dir,lree cd [Directory) Wechsel in das Home- oder angegebene Directory Ohne Angabe kehrt man immer ins Home-Directory zurilck wechselt in ein Directory nach oben Beispiele: cd cd .. UntcrDO : change directory cd pwd Iprint working directory Zeigt das aktuelle Directory mit absolutem Pfadnamen an date {+"Formatangaben'1 Beispiel: date +"%d.%m. %y" Unter DO: date/time Zeigt das Datum an ------------ + Kennzeichen fUr eigene Formatierung %y fUr Jahr YY %m fUr Monat MM fUr Tag TT %d %H- hour 00 - 23 %M- minute 00 - 59 %S- second 00 - 59 %T- time HH:MM:SS %w- day of week - (Sunday=O) %h- abgek. Monat - z.B. Jan - Dec 77
3 UNIX - praktisch angewandt Kommandoeingabe man [Kapitel-Nr) Kommando Unler DO: ber"hl n whatis Kommando cat Dateiname(n) Unler DO; IMuster ?Muster Leertaste q more who who am i finger [Benutzer) tty 78 mehr Zeigt den Inhalt von Dateien seitenweise an h help zeigt die moglichen Kommandos, u.a.: sucht vorwarts nach Muster sucht ruckwarts nach Muster zeigt die nachste Seite an quit beendet more more pg Dateiname Unler DO: was ist das Kommando Gibt eine Kurzinformation des angegebenen Kommandos aus concatenate - zusammenfugen Zeigt den Inhalt von Dateien type more datei(en) Unler DO: Funktion manual Gibt eine Beschreibung des angegebenen Kommandos ;n Ve"';ndung m;' I more aus page Zeigt den Inhalt von Dateien oder einer Ausgabe seitenweise an Etwas komfortabler als more; z. B. Angabe der Zeilennummer 1 um zur 1. Zeile zuruckzugehen. Returntaste - nachste Seite Wer arbeitet am System? Zeigt die angemeldeten Benutzer und Terminals Es wird der Benutzernamen, die Terminalbezeichnung und die Anmelde-~ zeit angezeigt --Zeigt Benutzerinformation an mit Namen@Rechner, Terminal und Anmeldezeit I I terminal type Zeigt den aktuellen Terminalnamen J
3.1.11 Auf los geht's los •.• Kommandoeingabe Funktion write Benutzername@Rechner schreiben Einem anderen Benutzer Mitteilungen auf den Bildschirm schicken talk Benutzername sprechen Mit einem anderen Benutzer Mitteilungen fiber Bildschirm austauschen, Verbindung eroffnen bzw. sich dazuschalten mesg [y] [n] messages Verhindert oder er1aubt Mitteilungen von anderen Benutzern mit write (Schreibrecht fur Terminal) n keine Schreiberlaubnis (no) y wieder freigeben (yes) Ohne Angabe wird der jeweilige Serechtigungszustand angezeigt (is Yon) mail [benutzer[@rechner]} Post versenden benutzer. .. ] Verschickt an einen oder mehrere Benutzer Post (mail) (elektronische Post - e-mail) Setreff eintragen, der in den Headerzeilen erscheint Subject: Eingabe der Nachricht uber Tastatur Seenden mit CTRL+d copy - an: z.S. den eigenen Namen Cc: als Sicherungskopie Ohne Angabe wird die eingegangene mail Post angezeigt oder "no mail" Auswahl: Befehle innerhalb von mail: ? zeigt die moglichen Sefehle von ? mail t [n] type zeigt die aktuelleln-te Nachricht d delete loscht die aktuelle Nachricht h header zeigt eine Liste aller eingegangener Mail r reply erstellt eine Antwort an den Abm benutzer sender mail leitet die Nachricht an den angegebenen Senutzer we iter s dateiname save sichert die Nachricht mit Kopfzeilen in die angegebene Datei w dateiname write schreibt die Nachricht ohne Kopf________________________Lzeilen -_ in die angegebene Datei ~ 79
3 UNIX - praktisch angewandt Kommandoeingabe Kommandos nur fur Systemverwalter: Funktion boot Hochfahren des Rechners shutdown Herunterfahren des Rechners An der Systemkonsole und als Benutzer root einzugeben synchronisieren anhalten - ausschalten sync halt 80
3.2 Es )shellt< In diesem Kapitel lemen Sie, daB Sie zwar unter UNIX arbeiten, aber Ihr direkter >Ansprechpartner' nicht UNIX, sondem die Shell ist. Sie ist das Programm, das Ihre Kommandos entgegennimmt, vorverarbeitet und danach weiterleitet. Zusatzlich bietet die Shell Ihnen eine Reihe von Hilfen an. Vertrauen Sie Ihre WOnsche der Shell an! Die einzelnen Themen: 3.2.1 Aufruf von Kommandos und die Aufgaben der Shell 3.2.2 Ein- und Ausgabe der Shell 3.2.3 Verkettung von Kommandos 3.2.4 Der Pipe-Mechanismus unter der Shell 3.2.5 Metazeichen zur Expansion von Dateinamen 3.2.6 Ersetzungsmechanismus der Shell 3.2.7 Vordergrund- und Hintergrundprozesse 3.2.8 Zusammenfassung der in diesem Kapitel verwendeten Kommandos 3.2.9 Obersicht der bisher kennengelernten Sonderzeichen 81
3 UNIX - praktisch angewandt Es >shellt< - eine EinfOhrung in die Shell ,Shell, hat nichts mit schellen oder klingeln zu tun, sondern Shell kommt aus dem Englischen und bedeutet Muschel oder Schale. Sie legt sich wie eine Schale um den Betriebssystemkern und ermogJicht dem Benutzer, im Dialog seine Anweisungen an UNIX zu geben. Welche Aufgaben erfOllt die Shell? ! Steuerung der Ein- und f3\ Ausgabe V:V Pipe-Ver- ® Ersetzen von Sonderzeichen Bild 3-38: Shell als Schale des Betriebssystemkerns 82
3.2.1 Es .shellt. 3.2.1 Aufruf von Kommandos und die Aufgaben der Shell Ais Sie Ihre ersten Kommandos aufgerufen haben, waren Sie sicher erfreut, daB sie so prompt ausgefUhrt wurden. Wo wird man denn heute noch so schnell bedient? Das Team, bestehend aus der Shell und UNIX, haben dafOr gesorgt. Welche Vermittlerrolle zu UNIX hat hierbei die Shell gespielt? Verfolgen wir einen Kommandoaufruf. CD ® ® Was wurde eingegeben? Die Shell analysiert Ihre Eingabe wie folgt: Was soli getan werden? Is Wie? -I 11.wort = Kommandol I Option I Was soli bearbeitet werden? •.Ihans I Parameter I Die Shell nimmt das 1. Wort der eingegebenen Zeile als Kommando und sucht das dazugeherige Programm. Diesem Obergibt es den Rest der Zeile als Anweisung. 1m obigen Beispiel wird Is gesucht und das gefundene Is-Programm mit den Parametern -I . .lhans aufgerufen. An dem vorangestellten - bei -I erkennt das Is-Programm, daB der erste Parameter eine Option ist. Aile nicht mit - beginnenden Parameter werden von Is als Dateiname oder Directory betrachtet. Zwischen dem Kommando, der Option und dem Parameter mOssen als Trennung mindestens 1 Leerzeichen oder Tabulatorzeichen stehen. Wo findet nun die Shell das Is-Programm? Gibt es das Kommando Oberhaupt? Die Shell sucht in bestimmten Directories nach ,ausfUhrbaren< Dateien mit dem angegebenen Namen. FOr jeden Benutzer ist ein PATH (ein Suchpfad) eingerichtet, der die Namen der Directories enthalt, die dabei durchsucht werden sollen. Die zumeist unter PATH vorgegebenen Directories sind: Ibin lusr/bin lusr/ucb lusrllocal Unter diesen Directories sind die Kommandos fUr den ,normalen< Benutzer abgelegt. Dieser Suchpfad kann fOr jeden Benutzer abgeandert werden. Sie heren mehr darOber im Abschnitt 3.7.3 (Vordefinierte Shell-Variable). Das UNIX-System ist als Dialogsystem konzipiert, d.h., jeder Benutzer kann direkt von seinem Arbeitsplatz (dem Terminal) Kommandos aufrufen, und das Ergebnis wird in der Regel auf seinem Bildschirm angezeigt. Die Standardein- und -ausgabe ist das Benutzerterminal Durch einfache Steuerzeichen in der Shell kann die Ein- und Ausgabe umgeleitet werden. So bedeutet das GreBer-Zeichen > .Umleitung nach<, das Kleiner-Zeichen < .Umleitung von<. Soli die Liste der Dateien von lusrlkurslhans nicht am Bildschirm angezeigt werden, sondern in eine Datei auf der Platte mit dem Namen inhalt geschrieben werden, heiBt der Aufruf: Is -I •.Ihans > inhalt 83
3 UNIX - praktisch angewandt @) Die Shell erleichtert Ihnen die Zusammenarbeit mit dem Rechner. So gibt es eine Reihe von Sonderzeichen, die u.a. verwendet werden, um lange Datei- und Pfadnamen abzukOrzen. Sie k6nnen der Shell z. B. sagen: >Ich meine aile Dateien, deren Namen mit a oder b oder c anfangen. e Das * steht z. B. fOr eine beliebige Zeichenfolge. Gibt es unter /usr/kurs/monika kein anderes Directory beginnend mit >be kann der Aufruf statt Is -I befehle auch mit Is -I b* erfolgen ® 1m KapiteI3.7/3.8 und werden Sie weitere Funktionen der Shell kennenlernen. Ais eine der wesentlichen Aufgaben sei hier nur erwahnt, daB sie ahnliche Funktionen wie eine h6here Programmiersprache aufweist. Sie k6nnen die AusfOhrung eines oder mehrerer Kommandos davon abhangig machen, ob vorab bestimmte Bedingungen erfOllt wurden. Z. B. k6nnten Sie vorab prOfen (test), ob Oberhaupt ein Directory /urs/kurs/hans vorhanden ist; wenn ja, soli das Inhaltsverzeichnis, das Sie mit Is bekommen, in eine Datei mit dem Namen inhalt geschrieben werden. ® Das aufgerufene Kommando wird als eigenes Programm gestartet. Hierbei gibt die Shell alles Wissenswerte (u.a. unter we/chem Namen hat sich der Benutzer angemeldet? Wo ist sein Home-Directory?) an das nachste Programm weiter. Die Programme/Prozesse' sind hierarchisch geordnet. Man spricht hierbei von Vater/Sohnprozessen (oder um nicht die MOtter und T6chter zu vernachlassigen - von Eltern/Kindprozessen). Sobald die Shell Ihre Aufgaben ordnungsgemaB erfOllt hat, meldet sie sofort wieder an Ihrem Bildschirm, daB sie bereit ist, weitere Auftrage entgegenzunehmen. Auf dem Bildschirm erscheint dann ein Bereitzeichen (auch Prompt genannt), abhangig vom Programm und Benutzer: $ % Bereitzeichen fOr den normalen Benutzer in der Bourne- und Korn-Shell in der C-Shell # Bereitzeichen fOr den Systemverwalter > Kennzeichen, daB die Shell weitere Eingaben fOr einen Kommandoaufruf erwartet BUd 3-39: Bereitzeichen der Shell Spater lernen Sie, daB Sie diese Bereitzeichen andern k6nnen. Die Shell ist ein Vermittler zwischen dem Betriebssystem und dem Benutzer, ein Programm, das fOr jeden Benutzer beim Anmelden gestartet wird. Es gibt zwi84 'ein gestartetes Programm wird als ProzeB bezeichnet
3.2.1 Es .shellt, schenzeitlich eine Reihe von She"-Programmen, die hierfur genutzt werden kennen. Die ursprungliche She", die auf allen UNIX-Rechnern verfugbar ist und in der auch meist die systemspezifischen Ablaufe angepaBt sind, ist die sog. Bourne-She" (abgeleitet von Bourne, der UNIX mit entwickelt hat, hier u.a. die She"). Hier kurz ein Oberblick der drei am meisten eingesetzten She"-Programme: - Name der She" Aufruf Prompt BourneShe" Ibin/sh Korn-She" C-Shell L - Kurze Beschreibung ICharakteristisch ursprungliche She" auf allen Rechnern verfugbar Grundlage fUr systemspe,mscha Abll'ufe nicht sehr benutzerfreundlich Ibin/ksh kompatibel zur Bourne-She" mit wesentlichen Erganzungen u.a. Historie-Mechanismus, Alias, Befehlszeileneditor komfortabel und machtig wird mehr und mehr eingesetzt Ibin/csh % Ahnlichkeit zur Programmiersprache C - ebenso HistorieMechanismus, Alias, Befehlszeileneditor - aber nicht kornpatibel zur Bourne-Shell wird gerne von Entwicklern genutzt $ $ I L 1m Kapitel3.8 werden die wesentlichen Erganzungen der Korn-She" zur BourneShe" behandelt und die Unterschiede zur C-She". Zu Beginn lernen Sie, mit der Bourne-She" umzugehen. 85
3 UNIX - praktisch angewandt 3.2.2 Ein- und Ausgabe der Shell Ein typisches Programm liest Daten (z. B. die GeM/ter der Mitarbeiter einer Firma), bearbeitet sie (z. B. addiert die einze/nen GeM/ter auf) und gibt das Endergebnis (hier die Summe aller GeM/ter) aus. Bei den meisten UNIX-Programmen liest das Programm von >der Standardeingabe' und schreibt das Ergebnis . auf >die Standardausgabe,. Die Standardein- und Standardausgabe sind das Terminal des jeweiligen Benutzers. Fehlermeldungen, die die AusfOhrung des Kommandos betreffen, werden ebenfalls am Bildschirm angezeigt. Zu diesen Fehlermeldungen geh6ren z. B. Hinweise, daB eine Datei nicht vorhanden ist. Wenn Sie versehentlich >5/' statt /5 aufrufen, werden Sie die Fehlermeldung erhalten >5/ not found, (5/ nicht gefunden). Die Ein- und Ausgabe ist numeriert (0, 1, 2). Man nennt diese numerische Zuordnung auch Dateideskriptor. Spater, bei der Umleitung der Fehlerausgabe auf Seite 92 werden wir nocheinmal darauf zurOckkommen. Shell $ $ Bildschirm (0) Standardeingabe Tastatur Bild 3-40: Standardein- und Standardausgabe der Shell Wie und wann leiten Sie die Standardausgabe um? Bei den Kommandos, die Sie bisher kennengelernt haben, hatte es ausgereicht, die erhaltene Information am Bildschirm zu lesen. Viele Ergebnisse wollen Sie vielleicht aufbewahren und zu einem spateren Zeitpunkt wieder verwenden; sei es, daB Sie die Daten noch verandern wollen, z. B. mit Oberschriften versehen und ausdrucken, oder sammeln und die Werte spater fOr Statistiken oder andere Zwecke verwenden. 86
3.2.2 Es .shellt, Unter der Shell wird diese Umleitung in eine Datei dadurch erreicht, daB nach dem Kommando das Umleitungszeichen ,>< eingegeben wird. Zwischen den einzelnen Angaben muB jeweils ein Leerzeichen oder Tabulatorzeichen stehen. Kommando > I Datei oder Geratenamen >. urn die Ausgabe eines Kornrnandos urnzuleiten Nachfolgende Grafik soli Ihnen verdeutlichen, daB bei der Eingabe von Is > inhalt die Ausgabe (das Inhaltsverzeichnis des aktuellen Directories) nicht auf den Bildschirm, sondern in eine Datei auf der Platte geschrieben wird. Die Datei wird, da kein zusatzlicher Pfadname angegeben ist, in dem aktuellen Directory angelegt. Datei auf der Platte Shell $ Is > inhalt $ Bild 3-41: Umleitung der Standardausgabe 87
3 UNIX - praktisch angewandt Ahnlich wie das Terminal hat auch der Drucker einen Namen, z. B.lp (fur lineprinter - Zeilendrucker). Wie Sie schon gehert haben, sind aile Gerate unter dem Directory /dev abgelegt. Sie kennten z. B. die Uste Ihrer Dateien ausdrucken mit Is > /dev/lp. Da bei Mehrbenutzer-Systemen viele Benutzer gleichzeitig drucken wollen, ist allerdings die direkte Umleitung auf den Drucker (mit » nicht zu empfehlen. Unter UNIX werden die Programme abwechselnd von jedem Benutzer durch den Rechner bearbeitet, damit niemand zu lange warten muB. Die Druckausgabe ergibt dann ein ganz schenes Kauderwelsch, ahnlich der Telegrammaufnahme des schweizer Kabaretlisten Emil. Deshalb wird in der Regel hier ein sog. ,Spooler, eingesetzt, ein Programm, das die Druckauftrage sammelt und sie der Reihe nach ausgibt. Erinnern Sie sich noch an das Kommando cat (concatenate - zusammenhiingen oder verketten)? Die Grundfunktion des Kommandos ist es, einen Dateiinhalt anzuzeigen. PrOfen Sie mit cat, ob in der Datei inhalt tatsachlich die Uste Ihres aktuellen Directories enthalten ist! Bei Monika ergibt sich folgende Ausgabe: $ Is> inhalt Umleitung der Ausgabe von Is $ cat inhalt Anzeige des Dateiinhalts von ,inhaJt. Die Dateinamen stehen hier untereinander, da nur die Ausgabe bei Is in Spalten aufgeteilt erfolgt. befehle projektA ueb1 $ ) Bild 3-42: Umleitung der Standardausgabe Mit cat kennen Sie auch die Ausgabe umleiten, d.h., der Inhalt der Datei soli nicht am Terminal angezeigt, sondern z. B. in eine andere Datei geschrieben werden. Mit dem Kommando cat und einer Ausgabe-Umleitung kennen Sie also Dateien kopieren, neu erstellen und Dateien aneinander anhangen! Wie konnen Sie Dateien mit Hilfe der Ausgabeumleitung erstellen? Sie rufen das Kommando cat dazu ohne Dateinamen auf, dann wird als Standardeingabe das Terminal angenommen. Gleichzeitig geben Sie an, daB die Ausgabe auf eine Datei umgeleitet werden soli: cat > Dateiname cat> - Kommando, um schnell eine Datei zu erstellen 88
3.2.2 Es .shellt. Ein Beispiel hierzu: $ cat> neu $ Aile Zeilen, die Sie eintippen werden in die Datei neu geschrieben. So auch dieser Text. Um den Text abzuschliessen, geben Sie das Zeichen fUr Dateiende ein. Wie bei dem Kommando mail muss das Zeichen fur Dateiende in einer eigenen Zeile stehen Ende der Eingabe <CTRL + d> BUd 3-43: Beispiel Erstellen einer Datei 1m ersten Beispiel der Umleitung (Bild 3-41 auf Seite 87) wurde das Ergebnis von Is (Liste des aktuellen Directories) in die Datei inhalt geschrieben. Genauso kann jedes andere Kommando umgeleitet werden, so z.8. die Ausgabe von date in die Datei Datum: date > Datum Die Umleitung ist sehr einfach, sie kann allerdings unangenehme Auswirkungen haben, wenn Sie einen Dateinamen angeben, der bereits vorhanden ist. Wenn Sie das Kommando ,date> neue aufrufen, wOrde der im Bild 3-43 eingegebene Text, der bereits in der Datei neu steht, Oberschrieben werden, ohne daB das System Sie warnt. l> Deshalb Vorsicht bei Umleitungen: Bereits vorhandene Dateien werden uberschrieben! Und bei dieser Gelegenheit gleich eine generelle Warnung: dies ist typisch fOr UNIX! UNIX (bzw. die Shell) fragt nicht lang, ob Sie wirklich Dateien 16schen oder Oberschreiben wollen; es fOhrt aus, was Sie ihm auftragen zu tun. UNIX betrachtet Sie als ,mOndigen Anwender< - und nimmt an, daB Sie schon wissen, was Sie tun. Doch wie heiBt der Titel dieses Lehrbuches? Keine Angst vor UNIX. Sie werden lernen, sich eigene Hilfen zu schaffen. Wollen Sie 'auf Nummer sicher gehen< und bei evtl. bereits bestehenden Dateien neue Informationen anhangen, so gibt es hierfOr ein eigenes Umleitungszeichen. Bei der Korn- und der C-Shell kann durch eine Option verhindert werden, daB Dateien bei der Ausgabeumleitung Oberschrieben werden (mehr darOber im KapiteI3.8.7, Zusatzliche Optionen). 89
3 UNIX - praktisch angewandt Wie konnen Sie eine Datei erganzen? Um das Ergebnis eines Kommandos an eine bestehende Datei anzuhangen, werden zwei GroBer-Zeichen als Urnleitung verwendet: Kommando » I bestehende Datei », urn die Ausgabe eines Kornrnandos an eine Datei anzuhangen An die mit Is > inhalt erstellte Datei kann z. B. mit dem Kommando date das Datum angehangt werden: $ date » $ cat inhalt inhalt I l Mit cat kann die Datei inhalt angezeigt werden : befehle projektA ueo1 Wed Jun 11 17:10:00 MET 1991 I Bild 3-44: Beispiel Umleitung der Standardausgabe (Erganzung) Und nun wird Ihnen auch die Bedeutung von cat (concatenate - zusammenhiingen) klar werden: cat Dateiname1 Dateiname2Dateiname3 » Dateiname4 cat - Kornrnando, urn Dateien aneinanderzuhangen Die Dateien Dateiname1, Dateiname2, Dateiname3 werden an das Ende der Datei Dateiname4 gehangt. Achten Sie darauf, daB jeweils die zuerst genannten Dateinamen an das Ende der zuletzt genannten Datei angehangt werden. In unserem Beispiel kennen wir an die vorhin erstellte Datei neu die zwischenzeitlich erweiterte Datei inhalt anhangen: 90
Es .sheUt. 3.2.2 / $ cat in halt » $ cat neu neu Aile Zeilen, die Sie eintippen werden in die Datei neu geschrieben. Text der bisherigen So auch dieser Text. Dalei neu Um den Text abzuschliessen, geben Sie das Zeichen fOr Dateiende ein. Wie bei dem Kommando mail muss das Zeichen fOr Dateiende in einer eigenen rl~~~f~hen- - - - - - - , ,..-_----'_ _ _ _-, I projektA I angehangler I ueb 1 I TexI aus der L WgJcf...J!:!...n 11..J l..;...1Q;.OQ MEL 1~91 ___ .J ,--_ D_at_e-,ii_nh_a_II_ _-----' I I ~$--------------------~) Bild 3-45: Beispiel Zusammenhangen von Dateien mit cat Wie ist es Ihnen bisher ergangen? Haben Sie schon einige gute Seiten an UNIX kennengelernt? - In der allgemeinen EinfOhrung wurden die besonderen Merkmale von UNIX aufgefOhrt. Eine weitere gute Eigenschaft von UNIX sei hier noch erganzt: UNIX ist sehr umweltfreundlich. - Es gibt einen eigenen MOlieimer. Sie finden ihn unter dem Directory /dev (devices - Gerate). In diesen MOlieimer konnen Sie hineinwerfen, so viel Sie wollen, er wird immer wieder leer sein! Er hat den passenden Namen >null, (wertlos, leer). Wie werlen Sie die Ausgabe weg? Wird das Umleitungszeichen (» fOr die Ausgabe zusammen mit /dev/null ver wendet, so wird das Kommando zwar ausgefOhrt, das Ergebnis jedoch nicht angezeigt, sondern >verschluckt<. Die Datei /dev/null ist ein Pseudo-Gerat, das etwa die Funktion eines MOlieimers besitzt (sogar sehr umweltfreundlich - der Inhalt lost sich in >Nichts< auf). Kommando > /dev/nuU > /dev/null/, urn die Ausgabe eines Kornrnandos .wegzuwerlen< Diese Anweisung wird gerne verwendet, um Programme zu testen, d. h. Fehlermeldungen auf den Bildschirm zu bekommen, wahrend die eigentliche Ausgabe gleich in den >MOlieimer< wandert. 91
3 UNIX - praktisch angewandt Wie konnen Sie die Fehlermeldungen umleiten? Zu Beginn dieses Abschnittes wurde die Eingabe mit (0) gekennzeichnet, die Ausgabe mit (1) und die Fehlermeldung mit (2). Bei der Umleitung von Ein- und Ausgabe wird die Unterscheidung durch das GroBer- >>, und Kleiner-Zeichen >< ' ausgedrOckt. Soli die Ausgabe der Fehlermeldung umgeleitet werden, wird vor das GroBer-Zeichen die Zahl 2 gesetzt: Kommando 2> I Dateiname oder Gerat 2>, um Fehlermeldungen umzuleiten Sehen wir uns hierzu ein Beispiel an: $ cat inhalt dtum 2> fehler Eine Datei dtum gibt es nicht $ cat fehler Die Fehlermeldung erscheint nicht am Bildschirm, sondern wurde in die Datei feNer umgeleitet. Mit cat wird der Inhalt der Datei fehler angezeigt befehle projektA ueb1 WedJun 1117:10:00MET1991 cat: cannot open dtum ) Bild 3-46: Beispiel Fehlerumleitung Wann kann Ihnen die Umleitung der Eingabe von Nutzen sein? Bei Ihren ersten Kommandos haben Sie u. a. die Kommandos >write, und >mail, kennengelernt. Hierbei wurde der Text des Briefes am Bildschirm eingegeben. Sie werden aus Erfahrung wissen, daB sich sehr leicht Fehler einschleichen. Eine Aktennotiz oder ein Brief muB oft noch erganzt oder verandert werden. Hier ware es z.B. von Vorteil, Sie konnten den Text erst in einer Oatei ablegen, dann ausdrucken, korrigieren, und erst danach per UNIX-mail an andere Abteilungen versenden. Die Umleitung der Eingabe benotigen Sie also immer dann, wenn Text oder andere Informationen bereits in einer Oatei gespeichert sind und nicht erst Ober das Terminal eingegeben werden mOssen. 92
3.2.2 Es >sheUt. Wie leiten Sie die Standardeingabe urn? Geben Sie bei einem Kommando das Kleiner-Zeiehen und dann den Namen einer Datei an, erwartet UNIX keine Eingabe am Terminal, sondern holt sieh die Information aus der nach dem Kleiner-Zeiehen angegebenen Datei. Diese Umleitung k6nnen Sie sich gut merken, wenn Sie sieh das Kleiner-Zeichen als Pfeil vorstellen, der von der Datei auf das Kommando zeigt. Kommando datei < <, urn die Standardeingabe urnzuleiten Wie k6nnen Sie die Umleitung der Standardeingabe nUtzen? Wenn Sie z. B. einen Brief an den Benutzer gisela Ober die ·elektronisehe mail. versenden wollen, und Sie haben den Text dazu bereits in einer Datei mit dem Namen text1 abgelegt, dann k6nnen Sie folgendes Kommando verwenden: $ mail gisela < text1 $ Bild 3-47: Beispiel Umleitung der Eingabe In dem obigen Beispiel wird die Datei text1 als Naehrieht an gisela gesehiekt. Der Brief wird in diesem Fall nieht am Terminal eingegeben, sondern es wird stattdessen auf die Datei text1 zurOckgegriffen. Was passiert wohl, wenn Sie als Eingabe Idev/null nehmen? Sie erinnern sieh, Idevlnull ist der MOlieimer unter UNIX. Hiermit erhalten Sie ein EOF (End of File - also das gleiehe Zeichen, wie Sie es mit der Eingabe der Tasten fOr Dateiende, z. B. <CTRL + d>, erhalten). I Kommando < Idev/null < /dev/null, urn .EOF, (end of file - Zeichen fUr Dateiende) zu erhalten Diese Umleitung ist dann sinnvoll, wenn Sie z. B. bei einem Programm testen wollen, ob es richtig geladen wird und ordnungsgemaB endet. Die Dateneingabe wird sofort durch das Endezeichen abgeschlossen. 93
3 UNIX - praktisch angewandt 3.2.3 Verkettung von Kommandos Bisher haben Sie gelernt, daB Sie der Shell nur dann ein Kommando (Programmaufruf) erteilen kennen, wenn sie bereit ist, d.h. das Bereitzeichen ($) am Terminal erscheint. Viele Terminals besitzen einen internen Puffer, und Sie kennen bereits Kommandos eingeben, wahrend ein vorher gestartetes Programm noch arbeitet. Sobald die Shell bereit ist, liest sie das vom internen Puffer des Terminals aufgenommene Kommando. Unabhangig von der Terminalart kennen Sie auch mehrere Kommandos in einer Zeile durch ein Semikolon >;, verketten. Die so angegebenen Kommandos werden nacheinander abgearbeitet; die Shell meldet sich erst dann wieder, wenn sie das letzte Kommando abgearbeitet hat. Kommando1 ; Kommando2 ; Kommando3; ... I I I I I I ; , um Kommandos zu verketten Ein Beispiel hierzu: $ pWd; date; who; Is lusrlkurslmonika WedJun 1117:10:00MET1991 monika tty11 Jun 11 08:10 gisela tty12 Jun 11 09:00 hans tty13 Jun 11 07:50 Datum befeh/e inhalt neu projektA ueb 1 $ Bild 3-48: Beispiel einer Verkettung 94
3.2.4 Es >sheUt. 3.2.4 Der Pipe-Mechanisrnus unter der Shell Was ist eine Pipe? Auch wenn die Kopfe manchmal unter UNIX rauchen, die Pipe hat nichts mit einer Tabakpfeife zu tun. Die Pipe ist hier eher als pipeline (Rohrleitungssystem) zu verstehen. Sukzessive wird etwas weitergeleitet, wie an einem FlieBband. Sie konnen Komrnandos mit einem Pipe-Zeichen (I) verbinden, wobei jeweils die Ausgabe des vorherigen Komrnandos als Eingabe fUr das nachste Kommando dient. Kommando1 I Kommando2 I I, urn Kornrnandos fiber eine Pipe rniteinander zu verbinden. Die Ausgabe des Kommandos1 ist die Eingabe von Kommand02 Bisher konnten wir mit der Urnleitung der Ausgabe ein Ergebnis eines Kommandos z. B. in eine Datei schreiben. Diese neuerstellte Datei kann dann wiederum als Eingabe fUr ein weiteres Kommando urngeleitet werden. Mit einer Pipe kann diese etwas umstandliche Art mit einern Kornmandoaufruf erfolgen. Um den Pipe-Mechanismus zu verdeutlichen, wollen wir eine kleine Aufgabe 10sen: Es soli das Inhaltsverzeichnis von dem Directory fbin seitenweise am Bildschirm angezeigt werden. Das Ergebnis konnen wir erhalten, wenn wir die Ausgabe von Is umleiten in eine Datei und diese Datei mit pg aufrufen. Das gleiche Ergebnis erhalten wir uber eine einzige Kommandozeile mit Hilfe des Pipe-Mechan ism us: Verarbeitung uber Umleitung der Ausgabe Verarbeitung mit dem Pipe-Mechanismus Is fbin > hilfsdat pg hilfsdat Is fbin I pg Bild 3-49: Beispiel Pipe-Mechanismus Um die Pipe an weiteren Beispielen zu zeigen, verwenden wir das Kommando wc. Mit diesem Kommando konnen Sie zahlen, wie viele Zeilen, Worter und Zeichen in einer Datei enthalten sind. wc [-Iwc] [Dateiname(n)] I ,I word count Zahlen von Wortem I I Icharacter - Zeichen 'words - Worter lines - Zeilen wc - Kornrnando, urn Zeilen, Warter und Zeichen zu zahlen 95
3 UNIX - praktiseh angewandt Geben Sie bei dem Kommando we (word count) keine Optionen (-I oder -w oder -c) an, so werden als Ergebnis drei Zahlenwerte ausgegeben: die Anzahl der Zeilen, die Anzahl der Werter und die Anzahl der Zeichen. Wenn Sie z. B. wissen wollen, wieviele Dateien (bzw. Kommandos) unter dem Directory /bin enthalten sind, so kennen Sie mit der Ein-fAusgabeumleitung mit zwei Kommandoaufrufen das Ergebnis erhalten: Is fbin > in halt-bin schreibt samtliche Dateien vom Directory /bin in die Datei inhalt-bin we -w < inhalt-bin zahlt aile Werter aus der Datei inhalt-bin Mit Hilfe der Pipe sparen Sie sich die Ein- und Ausgabeumleitung und kennen mit einem Kommando das gleiche Ergebnis erreichen: Is /bin I we -w 118 Am Bildschirm wird dann nicht die gesamte Liste aller Dateien angezeigt, sondern nur das Ergebnis (118). Die nachstehende Grafik zeigt die gleiche Aufgabe fOr unser aktuelles Directory. Is I we-w Datum befehle Is inhalt neu Eingabe projektA uebl temporare Datei im Speiche open file 6 Ergebnis am Bildschirm Bild 3-50: Beispiel Pipe mit Is I we 96 we -w
3.2.4 Es >shellt. Welche Eigenschaften hat eine Pipe? o Sie verbindet zwei Kommandos Ober einen temporaren Puffer. o Alles was in diesen Puffer geschrieben wird, wird sofort an das zweite Kommando weitergeleitet; er ist somit eine FIFO-Datei (first in first out - was zuerst hereinkommt, wird zuerst wieder ausgegeben). o Das Betriebssystem und die Shell Obernehmen dabei die Pufferung und die Synchronisation der Weiterleitung der Daten. o Damit kennen Ergebnisse, wie ein WerkstOck auf einem FlieBband, immer weiter bearbeitet werden (schnellere Verarbeitung als bei der Ein- und Ausgabeumleitung). o In einer Kommandofolge dOrfen beliebig viele Pipes vorkommen. Wie konnen Sie die Pipe nUtzen? - Ein paar praktische Beispiele: Sic her haben Sie schon bemerkt, daB aile Dateien eines Directories mit Is standardmaBig alphabetisch sortiert angezeigt werden. Enthalt Ihr Directory Dateinamen, die mit GroB- und Kleinbuchstaben beginnen, so werden bei amerikanischer Spracheinstellung zuerst die mit GroBbuchstaben beginnenden Dateien angezeigt, dann erst aile Dateien, deren Namen mit Kleinbuchstaben anfangt. Verbinden Sie das Is-Kommando durch eine Pipe mit einem Sortierpragramm, kennen Sie sich z. B. die Ausgabe des Inhaltsverzeichnisses so sortieren lassen, daB GraB- und Kleinbuchstaben gleichwertig alphabetisch sortiert werden. Ebenso kennen Sie die Dateien mit Hilfe des Sortierprogramms zeilenweise alphabetisch sortieren - z.B. um fast mOhelos ein Telefonverzeichnis anzulegen. Lemen Sie deshalb ein paar nOtzliche Kommandos, die Sie als Filter fOr Textdateien verwenden kennen: sort [-1rn1 [Dateiname(n)] I numeric string Am Zeilenanfang beginnende Zahlen, die durch Leerzeichen von anderen Zeichen getrennt sind, werden in arithmetischer Reihenfolge sortiert reverse - Es wird in umgekehrter Richtung sortiert fold - Klein- u. GroBbuchstaben sind gleichberechtigt sort - Kornrnando, urn Dateiinhalte zu sortieren Weitere Optionen und Beispiele von paar Befehle) auf Seite 325. sort find en Sie im Kapitel 3.9 (Noch ein 97
3 UNIX - praktisch angewandt $ Is Datum $ Is I befehle inhalt neu projektA ueb 1 inhalt neu projektA sort-1 befehle Datum ueb 1 Bild 3-51: Beispiel Pipe mit Sortierprogramm Bald werden Sie Ihren UNIX-Rechner gerne einsetzen, um z. B. auch Dokumentation jeglicher Art zu erstellen. Sie haben die Texte jederzeit im Zugriff, kennen sie schnell verandern oderTeile (Textbausteine) davon in Angeboten und Briefen verwenden. Allerdings kennte es dann vorkommen, daB Sie nicht mehr genau wissen, welchen Namen Sie einer bestimmten Datei gegeben haben. Sie erinnern sich aber genau an den Inhalt und wissen, daB Sie z. B. das Wort .mail, benutzt haben. Mit dem Kommando grep (als EselsbrOcke: greifen, heraussuchen) kennen Sie bestimmte Worte oder Zeichenfolgen aus Dateien oder Ergebnissen von Kommandos herausfiltern: grep "Muster" [Dateiname(n)] get regular expression grep - Kommando, um nach Mustern in Dateiinhalten zu suchen Aile angegebenen Dateinamen werden nach dem vorgegeben Muster durchsucht. 1st die Suche erfolgreich, werden der Dateiname und die Zeile mit dem gefundenen Muster angezeigt. $ grep "mail" inhalt Datum neu neu: Wie bei dem Kommando mail muss das I gefundene Zeile mit dem gesuchten Begriff Name der Oatei, in der der gesuchte Begriff vorkommt Bild 3-52: Beispiel grep Suchen nach einem Muster 98 Das Kommando grep wird auch oft als sog. Filterprogramm bei Pipes verwendet. Hier werden dann die ubergebenden Zeichenketten (Strings) nach dem vorgegebenen Muster durchsucht. Eine sehr oft benetigte Abfrage finden Sie auf Seite 114. Weitere Optionen und Beispiele zu grep finden Sie im Kapitel 3.4.
Es ,she lit. 3.2.5 3.2.5 Metazeichen zur Expansion von Dateinamen Um beim Suchen nach einem bestimmten Muster (Wort) nicht aile Dateinamen des aktuellen Directories eintippen zu mOssen, kennen Sie ein weiteres nOtzliches Werkzeug der Shell einsetzen: das Ersetzen von Dateinamen durch Metazeichen. Was sind aber Metazeichen? Metazeichen sind Zeichen, die eine erweiterte Bedeutung haben. Eine solche erweiterte Bedeutung kann sein: >hier dart ein be/iebiges Zeichen stehen<, >hier dart eine be/iebige Fo/ge von Zeichen stehen< oder >hier dart eines der nachfo/gend aufgefiihrten Zeichen stehen<. Die Shell ersetzt Dateinamen, in den en Metazeichen vorkommen, durch aile Dateinamen des betreffenden Directories, auf welche die Vorgabe paBt. Welche Metazeichen gibt es? Melazeichen Ersetzung * Das Siernchen sleht fOr eine beliebige Zeichenfolge (oder kein Zeichen) ? Das Fragezeichen stehl fOr ein einzelnes beliebiges Zeichen (aber nicht fOr ein Leerzeichen) [ ... ] Die Klammer wird ersetzt durch ein in der Klammer angegebenes Zeichen: z.B.: [abc] wird ersetzt durch a oder b oder c [1-3] wird ersetzt durch 1 oder 2 oder 3 [I ... ] Die Klammer mit Ausrufezeichen wird ersetzt durch ein beliebiges Zeichen, das nicht in der Klammer angegeben ist. z.B.: [!abc] wird ersetzt durch ein beliebiges Zeichen, aber nicht a oder b oder c [! 1-3] wird ersetzt durch ein beliebiges Zeichen, aber nicht 1 oder 2 oder 3 \ Dieser Schragslrich (backs/ash) hebt den Erselzungsmechanismus fOr das nachfolgende Metazeichen auf (Fluchtsymbol) z. 8.: \? Das Fragezeichen wird nicht durch ein beliebiges Zeichen ersetzt, sondern als Fragezeichen Obernommen Bild 3-53: Dateinamenexpansion durch Metazeichen 99
3 UNIX - praktisch angewandt [> Bei der Umleitung von Ein- und Ausgabe ( >, », <, 2> ) erfolgt keine Dateinamenexpansion durch Metazeichen. Bei Ausgabe- oder Fehlerumleitung wOrden die Metazeichen mit als Dateinamen angelegt werden, was zu Fehlern fOhren wOrde (siehe Bild 3-57). Beispiele zur Dateinamenexpansion durch Metazeichen Um festzustellen, in welcher Datei innerhalb des aktuellen Directories das Wort 'mail- vorkommt, kennen Sie folgendes Kommando geben: $ grep "mail" * - Die Shell ersetz! das • durch aile Dateinamen, die sie in dem aktuellen Directory lindet: inhalt befehle neu ueb1 Datum projektA neu: Wie bei dem Kommando mail muss das I 1 I "- I gefundene Zeile mit dem gesuchten Begriff (5 . Beispiel auf Seite 98) Name der Datei, in der der gesuchte Begriff vorkommt Bild 3-54: Beispiel grep mit Dateinamenexpansion (*) Oder mechten Sie gerne wissen, welche zweistelligen Kommandos es unter dem Directory /bin gibt, bzw. wieviele es sind? $ Is /bin!?? /bin/ar /bin/as /bin/cb Ibin/cc /bin/cp /bin/cu /binldd Ibin/df /bin/du /bin/If /binlls /bin/ed /binlll /bin/mv Ibinlid /binlln /bin/nm /binlld /binllr Ibin/pr /bin/ps /binlrm /bin/sh /bin/su /bin/tk /bin/tr Ibinlwc Ibinlxd $ Is /bin!?? I we-w 28 Bild 3 -55: Beispiel Is mit Dateinamenexpansion (?) Gibt es die Terminalbezeichnung tty11 - tty17 unter dem Directory /dev? Mit der eckigen Klammer laBt sich dies leicht abfragen. Beachten Sie aber bitte, daB jeweils nur ein Zeichen ersetzt werden kann. Bevor Sie umblattern und das Ergebnis sehen, versuchen Sie es einmal. 100
3.2.5 Es -shellt. $ Is /dev/tty1 [1-7]'-----l /dev/tty11 /dev/tty12 /dev/tty13 /dev/tty14 richtige Abfrage /dev/tty15 /dev/tty 16 $ Is /dev/tty[11-17] /d /dev/tty17 fehlerhafte Eingabe. es /tty! 11-17 J n t ~ nd kann jewe~ls nur nach 1-steliigen ev 0 ou Ziffern (Zelchen) gesucht werden Anzeige der Terminals tty11-tty17 und tty21-tty27 $ Is /dev/tty[1-2] [1-7] ~ __________________________-J/ Bi/d 3 -56: Beispiel Is mit Dateinamenexpansion ([]) Wie war Ihre Trefferquote? Sie kennen sich mit Hilfe von Metazeichen viel Schreibarbeit ersparen. Wenn Sie sich den Inhalt von der Datei Datum ansehen wollen, genOgt es, nur cat 0* aufzurufen, vorausgesetzt, es gibt nur eine Datei, deren Namen mit ,D. anfangt. Sollten mehrere Dateien mit ,D. beginnen, wOrden sie aile der Reihe nach angezeigt werden. Was passiert Wahl, wenn Sie das Datum an das Ende der Datei ,neu. setzen mechten, und Sie geben bei der Umleitung der Ausgabe ebenfalls nur D* an? $ Is Datum befehle inhalt $ cat neu »0* $ Is Datum D" befehle neu projektA ueb 1 Metazeichen kOnnen nicht bei Umleitung von Ein- oder Ausgabe verwendet werden I inha/t neu projektA ueb 1 Stat! die Datei neu an die Datei Datum anzuhiingen. wurde eine neue Datei mit dem Namen D" angelegt. Bi/d 3-57: Beispiel: Fehlerdurch Angabe von Metazeichen bei Umleitung von Ein-/Ausgabe 101
3 UNIX - praktisch angewandt Wie kann die fehlerhaft angelegte Datei wieder geloscht werden? Hierzu gibt es das Kommando zum Leschen von Dateien rm (remove). Es ist als das gefahrlichste Kommando unter UNIX bekannt. Mit diesem Kommando werden Dateien unwiederbringlich gelescht! rm [-i) Dateiname(n) I I remove I I interactive entfernen unwiederbringlich loschen Jede angegebene Datei wird nochmal angezeigt. Geloscht wird sie erst, wenn y (yes) eingegeben wird rm - Kommando, um Dateien zu loschen Verwenden Sie rm sicherheitshalber immer mit der Option -i, dann sehen Sie nochmals die zu leschenden Dateien und kennen somit verhindern, daB Ihnen durch einen kleinen Schreibfehler zuviel gelescht wird, zumal dann, wenn Sie Metazeichen verwenden. Das ,i, fOr interaktiv zeigt die Datei nochmals an und verlangt von Ihnen die Bestatigung mit 'y' (fur yes), erst dann lescht es die DateL Bei der Eingabe anderer Zeichen (also auch nur das Driicken der Returntaste) bleibt die Datei erhalten. Weitere Optionen und Beispiele in Kapitel 3.4. Was passiert, wenn, um die in unserem Beispiel irrtOmlich angelegte Datei >0*, zu leschen, rm D* eingegeben wird? Es wird nicht mal 1 Sekunde dauern, und die Shell meldet sich, als ware nichts passiert, diensteifrig wieder mit dem Promptzeichen $. In der Zwischenzeit hat sie unseren Auftrag gewissenhaft durchgefOhrt und aile Dateien, die mit .D. beginnen, gelescht! Mit rm -i D* wird jede gefundene Datei erst angezeigt und Sie kennen entscheiden, ob sie gelescht werden soli (wenn ja: Eingabe von 'y', wenn nein: Eingabe von 'n'; statt 'n' konnen Sie auch nur die Returntaste drucken). Um in unserem Beispiel die Datei D* zu leschen, kennen wir auch mit Hilfe des Fluchtsymbols (Aufhebung von Metazeichen) .\. gezielt nur die Datei ,D*, angeben: $ rm -i D* Datum: n oder $ rm -i 0\* D·: y D*: y Bild 3-58: Loschen von Dateien mit Metazeichen - Beispiel Fluchtsymbol \ 102
3.2.5 Es .sheUt. Bisher hatten Sie die Metazeichen * ? [ ] und das Fluchtsymbol \ (backs/ash nach hinten weisenden Schragstrich) kennengelernt. Mit dem backs/ash kennen Sie auch die Bedeutung der Sonderzeichen aufheben. Zu den Sonderzeichen I sowie die nicht sichtbaren Zeichen geheren auch . ..; > < & I \ "$" der Leer- (blank) und Returntaste (newline - nl). \ Fluchtsymbol, Aufhebung des nachfolgenden Sonderzeichens Wenn Sie z. B. eine Kommandozeile eingeben und der Bildschirm ist nicht groB genug, aile Angaben in einer Zeile zu schreiben, so kennen Sie mit dem backs/ash die Bedeutung der Returntaste aufheben und auf der nachsten Zeile weiterschreiben: cat Datum inhalt neu \ > ueb1 I grep Zeile $ AI/e Zei/en, die Sie eintippen Zei/e stehen Kennzeichen, daB die Shell weitere Eingaben fUr einen Kommandoaufruf erwartet (» Die Eingabe wird als eine Kommandozeile von der Shell erkannt: cat Datum inhalt neu ueb1 I grep Zeile Die Shell gibl den Inhalt der Dateien Datum, inhalt, neu und ueb iiber den Pipe·Mechanismus an das Programm grep weiter. Das Programm grep sucht aile Inhalte der Dateien nach dem Wort ,Zeile. durch und gibt nur die gefundenen Zeilen aus. (In der Datei neu sind zwei Zeilen mit dem Wort .Zeile· gefunden worden (siehe auch Seite 98). Bi/d 3-59: Beispie/ Aufhebung von Sonderzeichen durch Backs/ash Um bestimmte Sonderzeichen (*,? [l, Leerzeichen usw.) zu Obergeben, werden sie in Anfiihrungszeichen gesetzt (d. h., sie sollen nicht von der Shell beim Kommandoaufruf durch Dateinamen ersetzt werden). Obergabe von bestimmten Sonderzeichen Keine Ersetzung der Metazeichen: * ? [) In dem obigen Beispiel wurde aus dem Inhalt aller angegebener Dateien nach dem Wort (Muster) ,Zeile. gesucht. Gefunden wurden ,Zeile. und ,Zeilen., da als Muster nur die zusammenhangende Zeichenfolge gesucht wurde. Das Leerzeichen dient als Trennzeichen. Soli auch das Leerzeichen als Muster mit Obergeben werden, also z. B. nach ,Zeile stehen· gesucht werden, muB der Ausdruck in AnfOhrungszeichen gesetzt werden. 103
3 UNIX - praktisch angewandt hebl das Ende-Zeile-Zeichen auf r $ cat Datum inhalt neu \ > ueb11 grep " Zeile stehen" / . Zelle stehen ~ $ Kennzeichen , daB die Shell weitere Eingaben fOr einen Kommandoaufruf erwartet (» Inhalt der Oalei neu: Aile Zeilen, die Sie eintJppen, werden in die Datei neu geschrieben. So auch dieser Text. Um den Text abzuschliessen, geben Sie das Zeichen fur Dateiende ein. Wie bei dem Kommando mail mu8 das Zeichen fOr Dateiende in einer eigenen ....... Zeile stehen befehle projektA ueb1 Wed Jun 11 17: 10:00 MET Bild 3-60: Beispiel doppe/te Anfuhrungszeichen Oa mit Hilfe der AnfOhrungszeichen wird die Wirkung der Metazeichen *? [ ] aufgehoben wird, kennen wir die Oatei >0*< auch mit folgender Eingabe leschen: $ rm -i "0*" D·: y $ Bild 3-61: Beispiel: Aufhebung von Metazeichen (doppelte AnfUhrungszeichen) 104
3.2.6 Es .shellt. 3.2.6 Ersetzungsrnechanisrnus der Shell Sie haben bisher schon eine Reihe von Ersetzungsmechanismen kennengelernt: Zeichen Bedeutung - Ersetzung durch aktuelles Directory .. * ? darOberliegendes Directory (Parent-Directory) [1 Metazeichen, Erweiterung der Dateinamen durch ein oder mehrere Zeichen \ Aufhebung der Bedeutung eines nachfolgenden Sonderzeichens " " Obergabe von bestimmten Sonderzeichen Keine Ersetzung von Metazeichen: • ? [ 1 Bild 3 -62: Ersetzungsmechanismen 1. Teil Der Ersetzungsmechanismus der Shell kann mit dem Kommando echo gut dargestellt werden. Echo, wie der Widerhall in den Bergen, gibt aile nachfolgenden Worter, die durch Leerzeichen getrennt sind, als Kopie auf dem Bildschirm wieder. Es wird in erster Linie verwendet, um bei eigenen Shellprozeduren eine Nachricht auf den Bildschirm zu schreiben. (Shellprozeduren sind Anweisungen, z. B. Kommandos, die in einer Datei abgespeichert sind und wie ein eigenstandiges Kommando aufgerufen werden - mehr dazu im KapiteI3.7.2). Das Kommando echo eignet sich auch dazu, auszuprobieren, was die Shell aus einer Eingabezeile macht. echo I Widerhall, Kopie [Text ... Text Iaile Worter des Textes werden von der Shell als Nachricht wiedergegeben echo - Kornrnando, urn Nachrichten auf den Bildschirrn auszugeben Der Text nach dem Kommando echo bis zum Zeilenende oder bis zum nachsten Semikolon wird als Nachricht auf dem Bildschirm wiedergegeben. Setzen Sie Ihre Texte vorsichtshalber immer in AnfOhrungszeichen, damit Sonderzeichen wie '?<, ,*< usw. nicht durch Dateinamen von der Shell ersetzt werden! 105
3 UNIX - praktisch angewandt Sehen Sie im nachsten Beispiel die Wirkung von echo und Sonderzeichen: I hebt das Ende-Zeile-Zeichen fUr die Shell auf J / $ echo f welche Nachricht erhalten \ 'I > Sie? I Ersetzung des' durch aile Dateinamen yom aktuellen Directory Datum befehle inhalt neu welche Nachricht erhalten Sie ~ Kennzeichen, daB die Shell weit ere Eingaben fUr einen Kommandoaufruf erwartet (» projektA ueb1 waren l-stellige Dateinamen im aktuellen Directory vorhanden, wiirde auch das Fragezeichen durch diese Dateinamen ersetzt werden. ) \. Bild 3 - 63: Beispiel echo mit Sonderzeichen Die gleiche Eingabe von echo, wobei aile Parameter in AnfOhrungszeichen gesetzt werden, ergibt folgendes Resultat: $ echo "* welche Nachricht erhalten \ > Sie?" • welche Nachricht erhalten Sie? Bild 3-64: Beispiel echo mit Sonderzeichen innerhalb von Anfiihrungszeichen " Unter dem Kapitel 3.7 erfahren Sie mehr Ober die Einsatzm6glichkeiten von echo. Dort werden auch die Shell-Variablen (veranderliche GraBen) behandelt. Vorab jedoch einige Grundinformationen Ober die Variablen: 106
3.2.6 Es .shellt. Was sind Shell-Variablen? Variablen, wie der Name bereits aussagt, k6nnen variabel sein, veranderliche Werte beinhalten. Unter der Shell k6nnen Sie Variablen, die durch einen Namen identifiziert angesprochen werden, einen Wert zuweisen. Diesen Wert k6nnen Sie zu einem spateren Zeitpunkt abfragen. Definition einer Variablen durch Zuweisung eines Wertes NamTWert Eingabe ohne Leerzeichen! I Ersetzung der Variablen ·Name· durch den zugewiesenen Wert $Name = - Zuweisung von Variablen unter der Bourne-Shell Ein praktisches Beispiel fUr die Nutzung von Variablen: Angenommen, Sie arbeiten oft in verschiedenen Directories. Um nicht jeweils den gesamten Pfadnamen beim Wechsel in die diversen Directories anzugeben oder zu Oberlegen, wie Sie das Directory relativ ansprechen (.J ... ), definieren Sie eine Variable, der sie als Wert den Pfadnamen zuweisen: k=/usr/kurs Mit Variablen k6nnen Sie sich eine Reihe von AbkOrzungen schaffen. Um den Wert einer Variablen zu bekommen, wird als Kennung ein Dollarzeichen .$. vor den Namen gesetzt. Geben Sie .cd $k. ein, erkennt die Shell, daB es sich nicht um den Buchstaben .k. handelt, sondern um die Variable ·k, und ersetzt .$k, durch dem zugewiesen Wert >/usr/kurs<. Variable sind temporar und bleiben solange erhalten, bis die Shell beendet wird (Beenden der Sitzung - neues Login). $ k=lusr/kurs $ echo "hallo k" hal/o lusrlkurs $ pwd lusrlkurslmonika t Variablen werden auch innerhalb von Anfiihrungszeichen "" erselzt! I $ cd $klhans $ pwd lusrlkurslhans Bi/d 3-65: Beispiel: Bi/dung und Nutzung von Variablen Weitere Nutzungsm6glichkeiten der Shell-Variablen finden Sie in den Kapiteln 3.6 und 3.7 (speziell Korn-/e-Shell: Integer-Variable). 107
3 UNIX - praktisch angewandt Ersetzung durch das Ergebnis eines Kommandos Die Pipe erlaubt es, die Ausgabe eines Kommandos als Eingabe eines nachfolgenden Kommandos zu verwenden. Ein weiterer Mechanismus erlaubt es, die Ausgabe/Ergebnisse von Kommandos als Parameter weiterer Kommandos zu nutzen. Mit Hilfe der Sonderzeichen' '(Accent Grave) k6nnen Sie das Ergebnis von Kommandos als Parameter Obergeben (Kommandosubstitution). Ersetzung durch das Ergebnis des angegebenen Kommandos 'Kommando' oder in einer neueren Schreibweise: $( Kommando ) l> I I Unbedingt auf die Leerzeichen nach und vor der Klammerung achten! $( ) - Ersetzung durch das Ergebnis eines Kommandos Auch hier zum besseren Verstandnis ein Beispiel mit echo: Das Ergebnis des Korn- ~ Irnandos .date' soli hier eingesetzt werden. I $ echo" hallo $k haute am' date' > arbeiten 'who I wc -I' Benutzer" \ _ derBacksla~h' \ ' ~~~~ ~~~ Zeilen- hallo lusrlkurs heute am Fri Jun 2016:47:53 MET 1996 arbeiten 4 Benutzer $ Variable und Ergebnisse von Kornrnandos werden innerhalb von doppelten AnfOhrungszeichen n ••• " ersetzt! Bild 3-66: Beispiel: Ersetzung durch Ergebnisse von Kommandos Diese Ersetzungsart zeigt Ihnen u.a. auch die Kombinationsm6glichkeiten unter UNIX! Weitere praktische Beispiele der Ersetzungsmechanismen finden Sie im Kapitel 3.4 und 3.5 (Dateiverwaltung und -pflege und Sicherung von Dateien). 108
3.2.6 Es ,shellt, Keinerlei Ersetzung Wenn sowohl das $-Zeichen als auch der Accent Grave ' nicht von der Shell ersetzt werden sollen, d.h., keinerlei Substitutionen (Ersetzungen) sollen durchgefOhrt werden, dann wird der Text in halbe AnfDhrungszeichen ~ ... ~ gesetzt. Dieses Zeichen (Accent Aigu) sieht auf manchen Terminals eher wie ein kleiner gerader Strich aus ( I ). / Text, Text keinerlei Substitution Metazeichen, Variablen, Ergebnisse von Kommandos werden nicht ersetzt / Zum besseren Verstandnis ein Beispiel mit echo: $ echo ~ hallo $k heute am ' date' > arbeiten 'who I we -I' Benutzer' hal/o $k heute am 'date \ arbeiten 'who I wc -I' Benutzer ~ $ Bild 3-67: Beispiel keinerlei Substitution durch / / Zusammenfassung der weiteren Ersetzungsmechanismen: Zeichen Bedeutung - Ersetzung durch $ name Ersetzung durch den der Variablen zugewiesenen Wert " text .. text " 'Kommando' $( Kommando ) ~ text .. text~ Oberg abe von bestimmten Sonderzeichen, keine Ersetzung von Metazeichen: * ? [ ] aber Ersetzung von Shellvariablen ,$. und Kommandosubstitution • ' , (bzw. .$( ). Das Ergebnisldie Ausgabe des Kommandos wird als Parameter ubergeben (Kommandosubstitution) keinerlei Substitution Metazeichen, Variablen, Ergebnisse von Kommandos werden nieht ersetzt Bild 3-68: Ersetzungsmechanismen 2. Teil 109
3 UNIX - praktisch angewandt 3.2.7 Vordergrund- und Hintergrundprozesse Ein gestartetes Programm wird als ProzeB bezeichnet, wobei ein gestartetes Programm auch aus einer Foige von Einzelprozessen (Unterprogrammen) bestehen kann. Sie haben bisher schon eine ganze Reihe von Programmen gestartet. Jedes aufgerufene Kommando wird als Programm von der Shell verwaltet. Diese Programme wurden im Vordergrund bearbeitet. Was bedeutet Vordergrund? Ihre Shell nimmt das Kommando an, uberpruft es, ersetzt evtl. Metazeichen und startet ein Programm, welches das Kommando abarbeitet. Solange dieses Programm nicht beendet ist, konnen Sie am Terminal kein weiteres Kommando sichtbar aufrufen. Sie k6nnen zwar weitere Kommandos eintippen, doch werden diese erst durchgefUhrt, wenn das zuvor aufgerufene Kommando beendet ist. Dies wird durch das Bereitzeichen der Shell ($) am Bildschirm angezeigt. Der Ablauf dieser Programme wird als VordergrundprozeB bezeichnet. Sie werden gestartet durch: Kommando Zu Beginn haben Sie gelesen, daB UNIX ein Multi-User- und Multi-ProcessingSystem ist. Dies bedeutet, daB jeder Benutzer gleichzeitig mehrere Programme starten kann. Wie soli das aber m6glich sein, wenn jeweils ein Kommando nach dem anderen ausgefUhrt wird? Es gibt einmal die Pipe, die zur gleichen Zeit mehrere Programme startet - zum anderen k6nnen Programme im Hintergrund ablaufen. Der Unterschied zwischen Hintergrundprozessen und Vordergrundprozessen besteht darin, daB die Shell nicht auf die Beendigung des gestarteten Programmes wartet, sondern sich sofort mit dem Bereitzeichen meldet. Hintergrundprozesse werden weder schneller noch langsamer abgearbeitet als Vordergrundprozesse. Wie starten Sie ein Programm, das im Hintergrund ablaufen soli? Ais letzte Eingabe der Kommandozeile wird ein et-Zeichen & angefUgt. Kommando & I &, um Programme im Hintergrund ablaufen zu lassen Wann ist es sinnvoll, Programme im Hintergrund zu verarbeiten? Bei allen Programmen, die zeitaufwendig sind, denn Sie wollen sicher Ihren UNIX-Rechner voll beanspruchen. Zeitaufwendig sind z. B. Obersetzungsprogramme von groBen Quelldateien (Compiler), Formatierprogramme von Texten, gr6Bere Sortieroder Such programme oder Sicherungslaufe (Kapitel 3.4). 110
3.2.7 Es .shent. Die Hintergrundprozesse haben unter der grafischen Oberflache an Bedeutung veri oren. Bei zeitaufwendigen Prozessen effnen Sie einfach ein neues Fenster und kennen in diesem dann weiterarbeiten. Doch bei Arbeiten an einem ASCII-Terminal sind sie sehr wertvoll. Deshalb sehen wir uns ein paar Beispiele dazu an. Angenommen, wir mechten z. B. die verhaltnismaBig groBe Datei /usr/lib/coo kies alphabetisch sortieren (die SprOche sind dann noch unverstandlicher, da die Zeilen nicht mehr zusammenpassen). Die Ausgabe leiten wir in das Directory /tmp um, in dem nur temporare (zeitlich begrenzte) Dateien abgelegt werden. Da das Sortieren einer groBen Datei zeitaufwendig ist, rufen wir das Kommando als HintergrundprozeB auf: &J gemeldete Proze6nummer in der BoumeShell ' $ sort lusr/lib/cookies > Itmp/cookies.alph 26 Bei Programmen, diedas Ergebnis Ober Bildschirm ausgeben, $ sollte die Ausgabe umgeleitet werden, damit ungestort am Bildschirm weitergearbeitet werden kann ) Bild 3-69: Beispiel Aufruf eines Programmes, das im Hintergrund ablaufen soli Bevor sich die Shell >wieder bereit< ($) meldet, teilt sie die Nummer des von ihr gestarteten Hintergrundprogrammes mit. Warum wohl? Wissen Sie noch, wie Sie ein gestartetes Kommando wieder abbrechen kennen? Mit der Kombination der Tasten: I CTRL I + GJ (oder eine entsprechende andere Kombination, je nach Rechner) Ein im Hintergrund gestartetes Programm wird nicht mehr von Ihrer direkten Shell >betreut" und Sie haben Ober Ihr Terminal keinen EinfluB mehr auf den Ablauf. Um ein Hintergrundprogramm abzubrechen, brauchen wir also eine andere Eingriffsmeglichkeit. Wie brechen Sie einen HintergrundprozeB ab? Um einen HintergrundprozeB abzubrechen, wird ein eigenes Kommando aufgerUfen, das kill-Kommando. FOr dieses Kommando benetigen Sie die Ihnen vom System beim Start des Programmes mitgeteilte ProzeBnummer. * In der Korn- und G-Shell werden Hintergrundprozesse Ober eine zusatzliche ProzeBkontrolle gesteuert (weitere Informationen hierzu finden Sie im Kapitel 3.8.8 auf Seite 319) 111
3 UNIX - praktisch angewandt kill [-9] I I toten abschiel3en ProzeBnummer(n) I I Signal urn einen Prozel3 sicher abzubrechen kill - Kommando, um Programme vorzeitig abzubrechen $ kill -9 26 26 killed -T I ProzeBnummer (PID) des Hintergrundprozesses I $ Bild 3-70: Beispiel Abbruch eines Hintergrundprozesses Mit den Tastenkornbination <CTRL + c> k6nnen Sie einen Prozel3, den Sie im Vordergrund gestartet hatten, abbrechen. UNIX schickt hierbei an den Prozel3 eine entsprechende Meldung - oder genauer gesagt, ein Signal'. Manche Programme ignorieren ein >einfaches< kill-Signal. Schickt man ihnen jedoch kill -9, so k6nnen sie den >Abschul3< nicht abwenden und werden sicher gekillt. Nun, das klingt fast wie im Wilden Westen. Doch die UNIX-Gesetze sind streng. Benutzer k6nnen nur ihre eigenen Prozesse >killen<. Nur der Superuser (der Sheriff unter den Benutzern) dart auch fremde Prozesse abbrechen. Welche Programme werden zur Zeit yom Rechner bearbeitet? Nachdem in der Bourne-Shell bei Hintergrundprozessen keine >Fertigrneldung< ausgegeben wird, wissen Sie nie genau, wann das von Ihnen gestartete Hintergrundprogramm beendet ist.Das Kommando ps (process status) gibt Ihnen Gber Ihre eigenen und durch die Option -e Gber aile zur Zeit laufenden Prozesse Auskunft. Das Kommando zeigt Ihnen die Prozel3nummer (PID - Process IDentification Number) an, den Namen des Terminals, von dem das Programm gestartet wurde, die Zeit, die der Prozel3 bisher an Rechnerzeit verbrauchte und den Namen des Kommandos. Mit der Option -f erhalten Sie zusatzlich angezeigt: die Nummer des >Elternprozesses< (PPID - Parent Process IDentification Number) und die Startzeit, wann das Programm gestartet wurde. 112 * Weitere Informationen finden Sie im Bild 3-203 (Tabelle mit einigen Signalen) auf Seite 320
3.2.7 Es .shellt, ps -, process statu~ [- ef ] , I full format Ausgabe alier Prozesse, nicht nur der eigenen ps - Kommando, urn den Status der Programme abzufragen Wollen wir einen eben gestarteten HintergrundprozeB sofort wieder abbrechen, haben aber die Nummer des Programmes nicht beachtet (zwischenzeitlich wurde z. B. der Bildschirm mit anderen Ergebnissen Oberschrieben), erhalten wir durch das Kommando ps die wesentlichen Programminformationen: Sehen wir uns hierzu ein Beispiel an: r - - - - I Term inal- -r $ps I .-::-----;-;----:-:-:;-'--:,,--, 10 TTY Zeit I TIME '------.----' 23 tty11 0:03 26 tty11 0:04 27 tty11 0:01 $ kill -926 26 killed Kommandoaufruf I COMMAND -sh sort lusrl/iblcookies p's ~_~ _ _~~--~ das gerade gestartete Kommando $ Bild 3 - 71: Beispiele der Kommandos ps und kill Diese Kommandos werden sicher after von Systemverwaltern aufgerufen als von ,normalen. Benutzern. Um z. B. Kollegen weiterzuhelfen, denen durch ein fehlerhaftes Programm oder falschen Aufruf von Kommandos das Terminal blockiert ist (d.h., am Terminal ist keine Ein- oder Ausgabe mehr moglich), kann der Systemverwalter an Hand der durch ps -ef erhaltenen Informationen feststellen, welches Programm an welchem Terminal gestartet wurde und den fehlerhaften ProzeB killen. Sie selbst konnen sich aber auch bei einer ahnlichen Situation an einem anderen freien Terminal anmelden, bzw. an einem Fenster auf der grafischen Oberflache, die aktiven Programme mit ps -ef anzeigen lassen und den ,hii.ngenden ProzeB<, dessen Eigner (gleiche Benutzerkennung - User Identification) Sie sind, abschieBen (,killen.). Das kill-Kommando konnen Sie also auch fOr Vordergrundprozesse verwenden. 113
3 UNIX - praktisch angewandt Arbeiten Sie unter der einer grafischen Oberflache, d. h. Sie arbeiten immer mit mehreren ,Terminals<, dann empfiehlt sich folgendes Kommando, um aile Ihre laufenden Prozesse zu sehen: ps -ef I grep Benutzernamen Mit dem Kommando ps -ef k6nnen Sie durch die Angabe des jeweiligen VaterProgrammes (PPID - Parent Prozess Identification) auch sehr gut die Programmstruktur unter UNIX erkennen. Einige UNIX-Systeme haben speziell bei dem Kommando ps andere Optionen: Statt ps -e wird dann ps -a angegeben. Zusatzlich k6nnen mit der Option -x aile System prozesse angezeigt werden. Einen Eindruck, wie die Hierarchie der Prozesse aufgebaut ist, sehen Sie im (Stand der Programme prozess status bevor wir die Nummer 26 gekillt hatten): In der Korn- und C-Shell k6nnen Prozesse zusatzlich noch Ober eine sog. Jobcontrol gesteuert werden. Auch bereits gestartete Vordergrundprozesse k6nnen hiermit gestoppt werden, um sie dann als Hintergrundprozesse weiterlaufen zu lassen. Davon mehr im Kapitel 3.8.8 auf Seite 319. 114
3.2.7 Es .shellt. / $ps -e1 UfO root root monika sela ans monika monika gisela gisela w PID 0 1 23 24 25 26 28 29 30 PPID 0 0 1 1 1 23 23 24 24 TTY TIME STIME Jun Jun 8:30:01 8:45:31 8:55:02 9:02:00 9:02:30 9:02:10 9:02:10 ? ? tty11 tty13 tty12 ~11 11 tty13 tty13 I 0:05 0.02 0:03 0:03 0:02 0:04 0:01 0:01 0:01 COMMAND swapper /etc/init -sh -sh -sh sort /usr/lib/cookies ps -ef Is /bin wc -I Te~inal I Jommandoaufruf Zeit inMinulen und Sekunden .../ Startzeit Parent Process Identification ValerprozeB Process Identification ProzeBnummer User Identification Benutzername Beispiel Kommando ps -ef interner ProzeB des Betriebssystems (Speicherauslagerung von Programmen) swap per 0 Initialisierungsprozel3 (Starten des MultiUser-Betriebs) 25 sh Shell liir Hans 30 Kommando we Pipeverarbeitung FOr jeden Benutzer ist ein eigenes Shell-Programm gestartet worden, als er sich angemeldet hat (Login). Aufgerufene Kommandos (Programme) 26 Kommando sort Hintergrund Bild 3-72: Grafische Darstellung der ProzeBstruktur 115
3 UNIX - praktisch angewandt Zusammenfassung der Eigenschaften von Hintergrundprozessen: 116 o Jedes Programm kann in den Hintergrund geschickt werden. Programme, die Nachrichten Ober Bildschirmausgabe leiten (Benutzerdialog) sind hierfOr nicht geeignet, da der eigentliche Sinn, am Bildschirm weiterzuarbeiten, dann nicht gegeben ist. Vorder-/Hintergrundprogramme sind gleichberechtigt, d. h. sie werden weder schneller noch langsamer bearbeitet. Aufruf: Kommando & o Das Kommando wird von der Shell ahnlich wie ein VordergrundprozeB aufbereitet (Umleitung der Ein- IAusgabe, gleicher Ersetzungsmechanismus, ParameterObergabe usw.). o Die Shell meldet beim Start von Hintergrundprozessen deren Nummer (PID - Process IDentification Number) und ist sofort bereit fOr weitere Anweisungen. Sie wartet nicht auf die Beendigung des von ihr gestarteten Hintergrundprozesses. o Hintergrundprozesse konnen zuverlassig durch das Kommando kill -9 PIO abgebrochen werden. o In der Korn- und C-Shell gibt es eine eigens Jobcontrol, mit der Prozesse im Vorder- und Hintergrund gesteuert werden konnen.
Es .shellt. 3.2.8 3.2.8 Zusammenfassung der in diesem Kapitel verwendeten Kommandos I Funktion Kommandoelngabe we [-weI] ~ word count, Worter zahlen ] Zahlt Zeilen, Worter und Buchstaben -w word Anzahl der W6rter Anzahl der Zeilen ·fline -c character Anzahl der Zeichen I sort -fnr ZeIc-h-e-n- - - - - - sortieren Sortiert Dateiinhalte oder Zeichenketten nach verschiedenen Kriterien -f fold GroB- und Kleinbuchstaben werden gleich behandelt -n number Numerische Werte am Anfang werden numerisch sortiert -n reverse es wird in umgekehrter f - - - - _ _ _ _ _ _ _ _ _ _-I-Richtung sortiert J I grep "Muster" Dateiname(n) Unlet 00 : find -------' j---- rm [-i] Dateiname(n) Unter 00 : - loschen I remove Loscht Dateien (unwiederbringlichl) -i interactive die L6schung muB erst mit "y" bestatigt werden del echo Uoter 00 : get regular expression Durehsueht Dateiinhalte naeh bestimmten Zeiehenvorgaben/SuehI muster echo ----r-IG-ibt Zeiehenketten auf dem Bildschirm aus kill -9 [PID] ps [-efl) Bei einigen Systemen werden un- kill (toten) Bricht einen ProzeB sicher ab I process status Anzeige der aktuellen Prozesse -e every Anzeige aller Prozesse valles Format mit allen Attributen aile Prozesse aile System prozesse ~:::'ICh.Optionen ve.~ so ~~; 117
3 UNIX - praktisch angewandt 3.2.9 Ubersicht der bisher kennengelernten Sonderzeichen Zeichen Anzeige am $ # Bildschirm > Umleitung Umleitung Umleitung Umleitung > » 2> < ; I . der Ausgabe mit Anhangen an eine bestehende Datei der Fehlerausgabe der Eingabe Verketlung von Kommandos (mehrere Kommandos in einer Zeile) oder"" Pipezeichen .. aktuelles Directory daruberliegendes Directory (Parent-Directory) * ? [ ] Metazeichen beliebige Zeichenfolge ein beliebiges Zeichen eines der in Klammern angegebenen Zeichen eines der in Klammern angegebenen Zeichen "von bis" ein beliebiges Zeichen auBer einem der in Klammer angegebenen Zeichen * ? [abc] [a-z ] [!a-z] \ Aufhebung der Bedeutung des nachfolgenden Sonderzeichens "text .. text" Obergabe von bestimmten Sonderzeichen, keine Ersetzung von Metazeichen: * ? [ ] aber Ersetzung von Shellvariablen und Ersetzung durch Ergebnisse von Kommandos $name Ersetzung durch den der Variablen zugewiesenen Wert , Kommando' $( Kommando ) 118 Bedeutung - Ersetzung durch Bereitzeichen der Shell fUr - normale Benutzer - Systemverwalter (root) - Folgezeile fUr weitere Kommandoeingaben Das Ergebnisldie Ausgabe von dem Kommando wird als Parameter ubergeben (Kommandosubstitution) , text .. text ' keinerlei Substitution Metazeichen, Variable, Ergebnisse von Kommandos werden nicht ersetzt & Starten von Hintergrundprozessen
3.3 Editoren unter UNIX 1m Duden steht unter ,Editor< Herausgeber. Auch wenn Sie keine ,Zeitschriften oder Bucher herausgeben<wollen, ist dieses Kapitel fUr Sie interessant und wichtig. Als Editor wird im EDV-Fachjargon ein Programm bezeichnet, mit dem Texte erstellt, verandert und erganzt werden. Die einzelnen Themen: 3.3.1 Erstellung von Texten 3.3.2 Unterschiede zwischen Editor und Textverarbeitung 3.3.3 Der ed-Editor 3.3.4 Obersicht der Sonderzeichen und Kommandos imed 3.3.5 Obersicht der wesentlichen Eigenschafien des Editors vi 3.3.6 Obersicht der haufig benutzten vi-Kommandos 3.3.7 Der batchorientierte Editor sed 3.3.8 Zusammenfassung der Editoren 119
3 UNIX - praktisch angewandt 3.3.1 Erstellung von Texten Um Informationen jeglicher Art zu speichern, d. h. in einer Datei abzulegen, wie z.B. Adressen, Briefe, eigene Shell-Prozeduren (Kapitel3.7 und 3.8) oder Programm-Quelltexte, muB der Text zunachst einmal eingegeben, erfaBt werden. 1m vorherigen Kapitel haben Sie gelernt, wie Sie mit Hilfe von >Umleitungen< Dateien anlegen k6nnen. Mit dem Kommando cat > dateiname konnten Sie Ober die Tastatur Ihres Terminals Texte eingeben. Sobald Sie am Anfang einer Zeile das EOF-Zeichen (End of file, Dateiende z. B. <CTRL + d» tippten, wurde der geschriebene Text unter dem angegeben Dateinamen gespeichert. Mit der Umleitung » konnten Sie weitere Zeilen, andere Dateien oder Ergebnisse aus Kommandos anhangen. Bei Fehlern innerhalb einer Zeile konnten Sie mit der ,backspace oder delete-Taste, zeichenweise 16schen und berichtigen. Sobald Sie allerdings eine Zeile abgeschlossen hatten, konnten Sie evtl. Fehler nicht mehr korrigieren. Und wer schreibt schon fehlerfrei? - Dies bedeutet, mit cat sollten nur kurze Texte erstellt werden. Um nachtraglich zu korrigieren, ben6tigen Sie auf jeden Fall einen Editor. 3.3.2 Unterschiede zwischen Editor und Textverarbeitung o o o Ein Editor ist ein Programm zum Erstellen und Andern von Texten. Soli der Text anschlieBend ausgedruckt werden, evtl. mit Uberschrift und Seitennummern versehen, der linke und rechte Rand ausgerichtet werden so wie diese Buchseite hier, wird ein getrenntes Programm verwendet: ein Druckformatierprogramm. Ein Textverarbeitungsprogramm stellt die Funktionen des Editors und des Programms zur Druckaufbereitung gleichzeitig zur VerfOgung. Die Texte werden dann mit zusatzlichen Angaben zur Druckaufbereitung abgespeichert. Komfortable Textverarbeitungsprogramme stellen interaktiv, d. h. sofort, am Bildschirm dar, wie spater ausgedruckt wird. Diese Programme werden als >Wysiwyg<-Programme bezeichnet (What you see is what you get). Meist erfolgt hierbei ein automatischer Zeilen- und Seitenumbruch. Sie schreiben z. B. eine Zeile, und sobald genOgend W6rter die Zeile gefOlit haben, springt der Cursor sofort automatisch auf die nachste Zeile (sog. wrapping). Je nach Drucker (Matrix- oder Laserdrucker) k6nnen auch unterschiedliche Schriftarten verwendet werden, auBerdem Fettdruck, gr6Bere Schriftzeichen etc. Viele Editoren haben inzwischen manche Funktionen mit eingebunden, die unter den Begriff der Textverarbeitung fallen. 120
3.3.2 Editoren unter UNIX Aligemein unterscheidet man Editoren nach o zeilenorientierten Editoren, d. h., die Zeilen werden einzeln bearbeitet, Anderungen konnen nur pro Zeile erfolgen o und bildschirmorientierten Editoren. Fur Eingabe und Anderung steht der gesamte Bildschirm zur Verfugung. Hier konnen Sie meist mit den CursorFunktionstasten 8 CD an die fehlerhafte Stelle wandern und dort Text korrigieren, uberschreiben, loschen oder einfUgen. Bildschirmorientierte Editoren sind somit ausgezeichnete Hilfsmittel zur Erstellung und Bearbeitung von Program men und Texten, die keine zusatzlichen Druckangaben enthalten sollen. Fur die Erstellung von Geschaftsbriefen, Aktennotizen und Dokumentationen (Handbucher etc.) eignen sich komfortable Textverarbeitungsprogramme besser, sie werden meist als optionale Softwarepakete zu UNIX angeboten. Unter dem Betriebssystem UNIX von AT&T gibt es bis zur Version V leider nur den zeilenorientierten Editor ed, ab Version V gehOrt zum Standard auch der bildschirmorientierte Editor vi, der bei der University of California, Berkeley, entwickelt wurde. Fur die hauptsachlich technisch-wissenschaftliche Dokumentationsverarbeitung stehen je nach Druckerausgabe Zusatz- und Formatierprogramme zur Verfugung: nroff troff ditroff fUr Zeilendrucker, fUr Fotosatzmaschine, fUr unterschiedliche Ausgabegerate. Fur diese Zusatzprogramme werden die Texte mit einem Editor erstellt, wobei zusatzliche Formatanweisungen mit eingegeben werden mussen (ein Beispiel hierzu finden Sie im Bild 3-28 auf Seite 67 (Teil einer Manual-Seite von date) da auch die Online-Manualseiten mit dem Formatierprogramm nroff aufbereitet wurden}. In der Zwischenzeit gibt es jedoch eine Reihe von komfortablen Editor- und Textverarbeitungsprogrammen, die unter UNIX laufen und meist von den Rechnerherstellern mit angeboten werden. Da auf allen UNIX-Rechnern der zeilenorientierte Editor ed verfugbar ist, wird er in diesem Lehrbuch mit den wesentlichen Funktionen erklart. Wer den vi zur Verfugung hat, findet im Abschnitt 3.3.5 auf Seite 138 eine Obersicht der wichtigsten Funktionen. Sie werden wahrscheinlich entsetzt sein, so etwas >veraltetes' wie einen Zeileneditor zu lernen. Doch fUr spezielle Systemverwalter-Aufgaben und fUr die Shell-Programmierung (eingebunden in Skripts) wird er nach wie vor eingesetzt. Arbeiten Sie bereits mit einer grafischen Oberflache, steht Ihnen fUr die laufenden Arbeiten sicher ein intuitiv zu lernender Texteditor zur Verfugung. Vielleicht sehen Sie sich den ed trotzdem mal an: 121
3 UNIX - praktisch angewandt 3.3.3 Der ed-Editor Der ed ist ein sehr ruhiges Programm. Sie rufen es auf mit ed, aber nichts bemerkenswertes geschieht. ed [Dateiname] ed - Kommando, um Dateien zeilenweise zu editieren Rufen wir z. B. die Datei mit den )cookies' auf, so bekommen wir nur eine Zahl angezeigt: ed lusr/lib/cookies $ 101,699 Anzahl der Bytes entspricht in etwa der Anzahl der Zeichen innerhalb der gesamten Datei ) Bild 3 - 73: Beispiel Aufruf des Editors ed o Wird der ed mit einer bestehenden Datei aufgerufen, gibt er die GroBe der Datei aus (Byte-Anzahl der Datei, entspricht etwa der Anzahl der Zeichen). o 1st unter dem angegebenen Namen noch keine Datei vorhanden, wird ein Fragezeichen und der Dateiname angezeigt. o Wurde der ed ohne Angabe eines Dateinamens aufgerufen, tut sich gar nichts. Aber keine Sorge, Ihr Terminal ist nicht blockiert. Der ed unterscheidet zwei Verarbeitungsmodi: o o den Kommandomodus und den Eingabemodus. Um Text einzufOgen, muB erst durch ein entsprechendes Kommando in den Eingabemodus umgeschaltet werden. Um Text einzugeben, gibt es die Kommandos: a i c append insert change anhangen einfOgen ersetzen Um wieder in den Kommandomodus umzuschalten, muB der Eingabemodus mit einem Punkt am Anfang einer neuen Zeile abgeschlossen werden. 122
3.3.3 Editoren unter UNIX Nach dem Aufruf von ed befinden Sie sich am Ende der Datei, d.h., die Datei wird von der Platte in einen temporaren Puffer geschrieben (Bereich im Arbeitsspeicher des Rechners). Um sich z. B. den Inhalt der Datei anzuzeigen, muB man erst das Kommando dazu erteilen oder zumindest auf die 1. Zeile zurOckgehen. Aile Anderungen und Erganzungen, die Sie durchfOhren, werden vorerst nur in diesem temporaren Puffer durchgefOhrt. Erst wenn Sie das Kommando zum Ruckschreiben erteilen, wird die Datei auf der Platte ebenfalls geandert. Wie sind Kommandos im Editor ed einzugeben? Bereich z. B. Zeile von bis ohne Angabe einer Zeilennr. wird die aktueJle Zeile genommen 1,3 Zeile 1 bis 3 I Kommandos z. B.anzeigen, drucken p (print - durcken, anzeigen) 5011 angezeigt werden Bild 3-74: Kommandoeingabe im ed Bei der Eingabe von Kommandos wird zuerst angegeben, fOr welchen Bereich sie zutreffen, erst dann wird das eigentliche Kommando eingegeben. Obige Zeile bedeutet also, daB die Zeile 1 bis 3 angezeigt werden soil. Wird kein Bereich angegeben, so bezieht sich das Kommando immer auf die aktuelle ,Arbeitszeile<. Wie konnen Sie den Bereich definieren? Bereich Beispiel Bedeutung/Funktion Zeilennummer 3 dritte Zeile der Datei Zeilennr., Zeilennr. 1,3 Die Zeilen 1-3 werden bearbeitet $ $ Steht fOr die letzte Zeile Aktuelle Zeile ot$ .,$ Von der aktuellen Zeile bis zum Ende der Datei 1,$ 1,$ Steht fOr die gesamte Datei 3,$ Aile Zeilen von Zeilennr. 3 bis zum Dateiende sollen bearbeitet werden Zeilennummer $ keine Angabe (nur Return- Taste) die nachste Zeile wird angezeigt (Nach dem Aufruf die letzte Zeile) Bild 3-75: Bereichsdefinition im ed 123
3 UNIX - praktisch angewandt Um in einer Datei zu andern, mussen wir natUrlich auch die Berechtigung dazu haben. Sie erinnern sich an die Zugriffsrechte fUr den Benutzer, die Gruppe und die anderen, die nach r (read -Iesen), w (write - schreiben) und x (execute - ausfiihren) unterteilt waren. Sehen wir uns die Datei /usr/lib/cookies mit Is -/ an: -rw-r--r--1 bin bin Feb 8 /usrllib/cookies 101699 Der ·normale Benutzer< dart diese Datei zwar lesen, aber nicht verandern. Sehen wir uns deshalb nur einige Zeilen an, und beenden das Programm wieder: $ _I ed /usr/lib/cookies ,--_ _ _ _ _ _ _ _-, 101699 lei Ie 1 -3 anzeigen 1,3p . Eat a live frog every morning, and nothing worse will happen to you all day. I aktuelle leile (Zei le Nr. 3) Durch DnJcken der Return-Taste wird jeweils die nachste Zeile angezeigt Murphy's First Law Bild 3 - 76: Beispiel Anzeige von Zeilen im ed Um die Zeilennummer zu sehen, k6nnen Sie sich die Datei mit der Nummernangabe anzeigen lassen: Das Kommando hierzu lautet n (numerierte Anzeige): Die Zeilen 1-5 sollen mit leilennummern angezeigt werden: 1,5n 1 Eat a live frog every morning, and nothing worse will 2 happen to you all day. 3 - 4 Murphy's First Law .;. /o;..;:o;.;.;k;.:;. s.' --_ _ _ _ _--, 5 Nothing is as easyas;;-/;·t.;..: q $ I q eingeben fur quit. beenden Bild 3 - 77: Beispiel Editor ed, numerierte Dateianzeige und Beenden des Programms Urn den Editor zu beenden wird das Kommando q (quit) am Anfang einer Zeile eingegeben. 124
3.3.3 Editoren unter UNIX Welche Kommandos benotigen Sie? (Auswahl von oft gebrauchten Kommandos) Bisher haben wir nur einige Kommandos kennengelernt. Sie rufen den Editor in der Shell auf und mOssen dann eigene Kommandos fOr den Editor eingeben, z. B. um sich eine Datei anzusehen oder nur bestimmte Zeilen. Die nachstehende Aufstellung gibt Ihnen einen Oberblick, welche Kommandos Sie eingeben konnen. Den Umgang mit einem Editor erlernen Sie am besten durch die Praxis. Erstellen wir deshalb in unserem Home-Directory eine eigene SprOchedatei, die die oben enthaltenen Lebensweisheiten in deutsch ausgibt. Vielleicht kennen Sie auch noch ein paar nette SprOche, die Sie erganzen konnen? $ cd $ ed sprueche ?sprueche- - Nachricht vom Editor, daB die Datei sprueche noch nicht existiert. Bild 3 - 78: Beispiel Editor ed, Warnung nicht existierende Datei Um Text einzufOgen, mOssen wir zuerst in den Eingabemodus umschalten. Obwohl in unserer Datei noch kein Text eingegeben ist, verwenden wir hier das Kommando a fOr append (anhiingen). $ ed sprueche ?sprueche (append) Aile Eingaben, die nun tolgen, werden 'angehangt. a Iss jeden Morgen einen lebenden Frosch, und Dir passiert nichts Schlimmeres waehrend des Tages. Murphy's erstes Gestz: Nichts ist so leicht, wie es aussieht. • 4s/stz/setz/p II I Um in der vierten Zeile .Gestz. zu konigieren, muB der Eingabemodus erst mit einem >.' abgeschlossen werden. dann erst kann geiindert, ersetz! (substituiert) werden. p - print. zeige die Zeile nach Veranderungen neuer 8egriff (Ersetzungsbegriff) alter 8egriff (Suchbegriff) s - substitute - ersetze nachfolgenden ·alten 8egriff. durch ,neuen 8egriff. Zeilennummer Murphy's erstes Gesetz: Bild 3-79: Beispiel Editor ed, Eingabe und Ersetzung (substitute) 125
3 UNIX - praktisch angewandt Anfangs ist es etwas verwirrend zu erkennen, in welchem Modus man sich gerade befindet, im Eingabe- oder Kommandomodus. l> Achten Sie also darauf, daB Sie den Eingabemodus immer durch einen Punkt abschlieBen, bevor Sie das nachste Kommando eingeben! Wie k6nnen Sie im ed korrigieren? Innerhalb einer noch nicht ,abgesandten Zeile< k6nnen Sie mit der 8ackspaceundJoder Delete-Taste zeichenweise nach links 16schen. Wenn Sie erst einmal mit der Return-Taste eine Zeile ,abgesandt< haben, ist das Korrigieren etwas umstandlicher. In dem zeilenorientierten Editor ed k6nnen Sie nur uber entsprechende Kommandos zeilenweise korrigieren. Sie mussen jeweils die falsche Zeichenfolge (alter 8egriff), die ersetzt werden soli, nochmals eingeben und im AnschluB daran die richtige Zeichenfolge (neuer 8egriff). Falls es sich nicht um die aktuelle Zeile handelt, muB zu Beginn des Kommandos die Zeilennummer(n) mitgeteilt werden, die nach dem alten Begriff durchsucht werden soll(en): Zeilennummer Kommando zum Bereich Ersetzen: s t substitute, ersetzen z.B. I / alter Begriff Suchbegriff / neuer / Begriff tErsetzungs-.l begriff t evtl. weitere Kommandos T I.__________~I------~I / == Trennungs- zeichen '--4-s-J s-W - s-e-tzl - p-'1 In dem obigen Beispiel soli in der 4. Zeile der Begriff >stz< ersetzt werden durch >setz,. Gleichzeitig soli die berichtigte Zeile angezeigt werden (p fOr print). Achten Sie darauf, daB die Zeichenfolge eindeutig gekennzeichnet ist. In dem obigen Beispiel wurde die Angabe des alten Begriffes mit I 4s/stJsetJ I zunachst erstes in ersetes andern, da der zuerst gefundene Begriff ersetzt werden wurde. Sehen Sie sich hierzu das Bild 3-79 auf Seite 125 nochmals an. Um Zeilen einzufugen, wird das Kommando i (insert) verwendet: Zeilennummer Kommando zum Bereich EinfOgen insert - einfUgen 126
Editoren unter UNIX 3.3.3 Oben wir an unserem Beispiel, wie Sie Zeilen in einen bereits geschriebenen Text einfOgen (insert) und anschlieBend wieder am Ende des gesamten Textes weiterarbeiten kennen (anhiingen - append): ~-----1 Nach der 3. Zeile sollen die nachfolgenden Zeilen eingefiigt werden 3i Warum sollen Rechnersysteme nicht im Freien stehen? Weil Gluecksspiele im Freien verboten sind. Um wieder am Ende der Datei weiterzuschreiben, muB das Einfiigekommando erst wieder mit einem Punkt abgeschlossen werden $a $ bedeutet am Ende der Datei. a append anfiigen Murphy's zweites Gesetz: Alles dauert laenger, als du denkst. Um den gesamten Text anzusehen, muB zuerst wieder in den Kommandomodus mit '.' umgeschaltet werden Bild 3-80: Beispiel Editor ed, Einfugen und Anhiingen (insert, append) 1,$n 1 Iss jeden Morgen einen lebenden Frosch, und Oir passiert 2 nichts Schlimmeres waehrend des Tages. 3 - 4 Warum sol/en Rechnersysteme nicht im Freien stehen? 5 Weil Gluecksspiele im Freien verboten sind. 6 - 7 Murphy's erstes Gestz: 8 Nichts ist so leicht, wie es aussieht. 9 - 10 Murphy's zweites Gesetz: 11 AI/es dauert laenger, als du denkst. 12 - Bild 3 - 81: Beispiel Editor ed, Anzeige mit Zeilennummer 127
3 UNIX - praktisch angewandt Um Zeilen zu uberschreiben und zu ersetzen, wird das Kommando c (change) verwendet: Zeilennummer Kommando zum Bereich Ersetzen change wechseln, ersetzen Um die ersten zwei Zeilen der Spruche-Datei anders aufzubauen, mussen sie neu eingegeben werden: 1,2c Die Zeilen 1 bis 2 sollen ersetzt werden (change) Iss jeden Morgen einen lebenden Frosch und Dir passiert nichts Schlimmeres waehrend des Tages - - Auch hier muB die Eingabe durch '.' abgeschlossen werden, sonst wurden die nachfolgenden Eingaben nach der Oberschreibung eingefugt werden Bild 3-82: Beispiel Editor ed, Oberschreiben von Zeilen Um Zeilen zu leschen, wird zuerst die Zeilennummer bzw. der Zeilenbereich angegeben und anschlieBend das Kommando zum Leschen: Zeilennummer Kommando zum Bereich Loschen delete - 16schen Um die Zeilen 3-6 zu leschen, wird eingegeben: I 3,6d 128
3.3.3 Editoren unter UNIX Wie konnen Sie Zeilen im ed kopieren? Bereich Kommando(s) z. B. t Zei/e von. bis nach Zeile Die Zeilen 4 bis 6 sollen kopiert werden und nach der Zeile 8 eingefligt werden. (t - transfer) / 4,6t8 1,12n _ ,.... Zeilen 1 bis 12 sollen numeriert angezeigt werden I 1 Iss jeden Morgen einen lebenden Frosch 2 und Dir passiert nichts Schlimmeres waehrend des Tages. 3 Fur die vorhin gel6schten 4 Murphy's erstes Gesetz: 5 Nichts ist so leicht, wie es aussieht. 6 - 7 Murphy's zweites Gesetz: 8 Alles dauert laenger, als du denkst. 9 Murphy's erstes Gesetz: 10 Nichts ist so leicht, wie es aussieht. 11 ,,12 - } } Zeilen 3-6 sind die nachfolgenden Zeilen aufgerUckl . I kopierte Zeilen ) I BUd 3-83: Beispiel Editor ed, Kopieren von Zeilen (t - transfer) Es ist tatsachlich nichts so leicht, wie es aussieht. Nun ist die schone Ordnung von Text und der Zwischenmarkierung mit dem Bindestrlch durcheinander geraten. So unbequem der ed-Editor manchmal ist, es gibt dafOr auch nOtzliche Kommandos. Zu ihnen gehort: undo ROckgangigmachen der letzten Anderung. Um die letzte Einfligung (das Kopieren der Zeilen 4 bis 6 nach 8) rOckgangig zu machen, genOgt es, ein u als Kommando zu tippen: 129
3 UNIX - praktisch angewandt Vergleichen Sie, ob wirklich die letzte Anderung ruckgangig gemacht wurde: / - - - - I undo U Die letzte .il.nderung wird wieder riickgl1ngig gemacht 1.$n ____-i~A~n~ze~ig~e~d~e~r~Z~ei~le~n~1~b~is~En~d~e~d~u~~~h~n~u~ m~e~ rie~rt~____~ 1 Iss jeden Morgen einen lebenden Frosch 2 und Dir passiert nichts Schlimmeres waehrend des rages. 3 4 5 6 7 8 9 Murphy's erstes Gesetz: Nichts ist so leicht, wie es aussieht. Murphy's zweites Gesetz: Alles dauert laenger, als du denkst. Bild 3-84: Beispiel Editor ed, ROckgangigmachen der letzten Anderung (undo) Wie been den Sie das Programm? Um die Datei zu sichern und das Programm zu beenden, geben Sie ein: W 229 Sichern, zuriickschreiben der Datei unter dem aufgerufenen Namen (write) Anzeige der DateigrtlBe in Bytes (in etwa Zeichenanzahl) q AbschluB des Editors (quit) $ Bereitzeichen der Shell ) Bild 3-85: Beispiel Editor, Sichern der Datei und Beenden des Programmes Sollten Sie vergessen haben, das w (write - zurOckschreiben, sichern) einzugeben, konnen Sie mit q (quit - beenden) den Editor nicht verlassen. Sie bekommen als Nachricht yom Editor ein Fragezeichen, was so viel bedeuten soli wie: Was soli das denn? q ? Ohne Sichern der Datei mit w (w rite) wird q nicht akzeptiert: AbschluB des Editors (quit) " Das Fragezeichen zeigt an, daB das letzte Kommando nicht verstanden und nicht durchgefUhrt wurde ) 130 Bild 3 -86: Beispiel Editor ed, Beenden des Programms - fehlerhafte Eingabe
3.3.3 Editoren unter UNIX Wollen Sie, ohne die Datei zu sichern, den Editor beenden, so geben Sie ein q! ein (bei alteren Systemen muBte Q als GroBbuchstabe eingegeben werden) oder Sie wiederholen die Eingabe von q. Beim zweiten Mal wird >q< akzeptiert. Damit erzwingen Sie den Abbruch des Editors: q! $ _ _-+ Beenden des Programms ohne Warnung. falls evtl. Anderungen noch nicht zUrUckgeschrieben wurden. _ _ _+1 Bereitzeichen der Shell "----_ _ _-----'J Bild 3-87: Beispiel Editor ed, Beenden des Programms - ohne Warnung bei nicht zurDckgeschriebenen Dateien Suchmechanismen im Editor ed Wenn der Editor ed auch nicht besonders komfortabel ist, so haben Sie gesehen, er ist nicht schwer zu erlernen. Immerhin verwendet er bei den AbkOrzungen etwas Mnemonik, angelehnt an englische Vokabeln. Mit etwas Obung werden Sie auch die >nachsten Schritte< leicht aufnehmen, zumal Sie sich damit langwieriges Suchen in Dateien ersparen konnen. Wie konnen Sie im ed nach Begriffen suchen? Bisher hatten Sie als Bereich die Zeilennummer, bzw. Zeilennummern von bis angegeben. Um nach einem bestimmten Muster zu suchen, wird unter dem Bereich ein Suchmuster, begrenzt durch Schragstriche oder Fragezeichen, eingesetzt. Die Schragstriche gelten fOr Vorwarts-, die Fragezeichen fOr ROckwarts suchen. Kommando Bereich ISuchmuster/ ?Suchmuster? Nach dem Suchmuster wird in der Datei vorwarts oder riickwarts gesucht kann noch zusatzlich eingegeben werden Soli der Suchvorgang mit dem gleichem Muster wiederholt werden, werden als Kommando nur die beiden Symbole angegeben: II fOr Vorwarts- oder ?? fOr Riickwartssuchen. 131
3 UNIX - praktisch angewandt Suchen wir in unserer kleinen Obung von vorhin nach Murphy: . I Aufruf des ed-Programms ed sprueche 229 Ab der aktuellen Zeile soli nach dem Text .Murphy. gesucht + Die gefundene Zeile soli mil Zeilennummer angezeigl IMurphy/n- werden. werden. 4 Murphy's erstes Gesetz: lin gefundene Zeile I nochmaliges Such en vorwarts und anzeigen 7 Murphy's zweites Gesetz: Bild 3-88: Beispiel: Editor ed, Suchen in der Datei mit ,II, Sie kennen also als Bereich ein Suchmuster angeben und anschlieBend ein Kommando anfOgen. Wie konnen Sie global in der gesamten Datei suchen und ersetzen? 1m vorherigen Beispiel wurde nach Begriffen gesucht. Das s-Kommando (substitute ersetzen) sucht ebenfalls nach einem bestimmten Muster. Setzen wir vor dieses Kommando als Bereichsangabe 1,$, d.h., die gesamte Datei soli bearbeitet werden, so wird das Ersetzen fOr aile leilen erfolgen. Tritt jedoch innerhalb einer leile der Such beg riff zweimal auf, so wird jeweils nur das erste gefundene Muster ersetzt. Sollen innerhalb der einzelnen lei len weitere gefundene Muster ersetzt werden, muB das Kennzeichen 9 (global) am Ende der Kommandozeile angefOgt werden. Bereich 1,$ Kommando slalter Begrifflneuer Begrifflg Wenn Sie Terminals und Drucker haben, die den deutschen leichensatz enthalten, so kennten Sie die Umlaute mit ae in Ii usw. ersetzen. Das Kommando hierfOr ist s (substitute). Das Kommando slaelalg bewirkt, daB aile ae in a* umgewandelt werden. J> Doch Vorsicht! Wenn Sie global in einer Datei Umlaute wie ae in Ii andern, wOrde auch aus Michaela eine Michlila werden oder bei oe wird aus soeben saben. Umlaute sind deshalb besser schrittweise zu ersetzen! * 132 Falls Sie nichl mit dem internalionalen Zeichensatz arbeiten, mOBte vor das a ein Fluchtsymbol gesetzt werden, da dieses Zeichen unter dem ASCII-Zeichensatz als >{< existiert und eine Sonderfunktion besitzt.
3.3.3 Editoren unter UNIX In unserem Beispiel riskieren wir eine globale Ersetzung: t1 gesamte Datei L r---- Ig I IZUSl:itzliche Angabe von 9 (global) 1,$s/ae/a/g g/a/n - - ~ I I am Anlang der ~eile fUr globale Suche mit (n umber), um die Zeilen numeriert anzuzeigen l 1 2 und Dir passiert nichts Schlimmeres wahrend des Tages. 8 Alles dauert langer als du denkst. gefundene und ersetzte Zeilen I ~'---------------------------------' Bild 3-89: Beispiel: Editor ed, Suchen und Ersetzen global Das 9 (global) kann, wie wir im obigen Beispiel sehen, auch als Suchoption vorangestellt werden und bewirkt, daB nicht nach dem ersten gefundenen Wert die Suche beendet ist, sand ern die gesamte Datei durchsucht wird. Allerdings dOrfen keine weiteren Kommandos auBer n (numerische Anzeige) folgen. Welche weiteren Metazeichen konnen Sie im Editor ed verwenden? Ahnlich wie Sie es bereits in der Shell kennengelernt haben, gibt es auch im ed Metazeichen (Zeichen mit spezieller Bedeutung), mit deren Hilfe Sie nach bestimmten Begriffen such en konnen. Allerdings haben unter ed einige Zeichen eine andere Bedeutung als unter der Shell. l> Vorsicht - die Bedeutung der Metazeichen im ed ist anders als die der Metazeichen in der Shell! Verwirrend ist zusatzlich, daB eine Reihe von Sonderzeichen sagar innerhalb des ed unterschiedliche Bedeutung haben, je nachdem ob sie als Suchbegriff, Kommando oder als Auswahlmenge in einer Klammer stehen. Der Such- und Ersetzungsmechanismus des ed wird ebenfalls vom sed (stream-oriented editor) verwendet. Sowohl vi, egrep und awk bauen auf diesen Befehlen auf. Sie vergeuden also nicht Ihre Zeit, wenn Sie sich mit dem ed ernsthafter befassen. Zusatzlich erspart er Ihnen durch den machtigen Ersetzungs- und Suchmechanismus eventuell viel Arbeit. Bisher haben Sie schon gelernt, daB jeweils das Such- und/oder Ersetzungsmuster zwischen zwei Schragstriche oder Fragezeichen gesetzt wird. Das Suchmuster kann nun zusatzliche Metazeichen beinhalten. Die gebrauchlichsten sind: 133
3 UNIX - praktisch angewandt Ubersicht einiger im ed (sed, grep und vi) verwendeten Metazeichen Metazeichen Suchbeispiel I.dl Bedeutung ------, I Beliebiges einzelnes Zeichen sucht nach allen Wiirtem, dle';n beHeblges leichen, gefolgt von einem d, enthalten Wiederholung des vorangestellten Zeichens * Im*1 sucht nach einem oder hintereinander mehrfach auftretenden ,me I.*ml sucht nach leichenfolgen, in denen ein ,me vorkommt j sleht fOr mehrere belleblge Zelchen * 1\ Nachfolgender Suchbegriff steht am Anfang einer Zeile I" *1 - $ - 10M$! sucht nach einem oder mehreren Leerzeichen am Anfang einer lei Ie Nachfolgender Suchbegriff steht am Ende einerZeile suchl nach ';ner Zelle, die m. OM endel nen Zeichens l{a-z]1 1[137]1 sucht nach einem beliebigen Kleinbuchstaben (z. B. a oder b) ---f.i;hl nach Zlllern " 3 oder 7 Fluchtsymbol - Aufheben einer evtl. Sonderfunktion des nachfolgenden Zeichens \ sucht nach einem ,·e 1\*1 s/Muster/& ..I s/Herr/&nI ~setzen des gefundenen Musters als neuen Begriff ersetzt >Herre in >Herrn e BUd 3-90: Metazeichen - regulare AusdrOcke (ed, vi, sed und grep) 134 ~ ~hen eines in der Klammer angegebe- [ ] & I
3.3.3 Editoren unter UNIX Einige Beispiele werden es verdeutlichen: Wie k6nnen Sie die Trennungszeichen zwischen den einzelnen SprOchen ersetzen durch >*** Noch'n Gedicht *** ,7 Beachten Sie hierbei, daB evtl. die Minuszeichen auch mitten im Text stehen k6nnten und dort bestehen bleiben sollen! Ersetzungsteil / r __________ ~A~ 1,$s/"-1 \*\*\* g/Ged/n ______ ~ , Noch'n Gedicht \*,...\:....*\..:..*---.:./__--'-______---, 3 Noch 'n Gedicht ..,. 6 ••• Noch'n Gedicht ... 9 ... Noch'n Gedicht } 9 - fOr global Datei (suche gesamt) Bild 3 -91: Beispiel Editor ed, Suchen und Ersetzen je am Anfang einer Zeile Ais nachstes Beispiel der Austausch von Gesetz in Gesetzestext: I Obemahme von Gesetz, der gefundenen Zeichenkette .! 1,$s/Gesetzl&estexU g/texUn 4 Murphy's erstes Gesetzestext: 7 Murphy's zweites Gesetzestext: u I Die letzte Anderung der beiden Zeilen wird wieder aufgehoben (undo) I Bild 3-92: Beispiel Editor ed, Suchen und Ersetzen mit Obemahme der gefundenen Zeichenkette Wie Sie gesehen haben, ist der ed besser als sein Ruf. Ein Softwareentwickler, der auf verschiedenen UNIX-Systemen arbeitet, hat sogar einen wesentlichen Vorteil dieses Editors klar ausgesprochen. ,Der ed arbeitet wenigstens auf allen Systemen gleich gut, und ich muB nicht immer neue Befehle oder Funktionstasten lemen,. 135
3 UNIX - praktisch angewandt 3.3.4 Ubersicht der Sonderzeichen und Kommandos im ed Die nachstehende Obersicht soli Ihnen helfen, die unterschiedlichen Bedeutungen der Sonderzeichen zu beachten. Bedeutung im lei- Kommandomode (Zeilenbereich) Such bereich und ErsetzungsteillJ ?? sonstiges: leilenangabe von bis - - aktuelle leile im Arbeitspuffer ein beliebiges leichen 1m Eingabemodus: AbschluB der Eingabe Ende des Arbeitspullers (Ietzte Zeile) Ende der zu suchenden leile - Anfang der zu suchenden leile In der Klammerung [1\ ) als Negation (aile leichen auBer.. ) * - beliebige Wiederholung des vorherigen Zeichens - /I Markierung des Such- und Ersetzungsbereichs vorwarts Such en ohne Muster, Wiederholung des letzlen Suchbefehls - 11 Markierung des Such- und Ersetzungsbereichs rlickwarts Suchen ohne Muster, Wiederholung des letzlen Suchbefehls - & - Ersetzen der gefundenen Zeichenkelte - [] - chen n,n r--s ,.. 1---. - i- Markierung einer Zeichenauswahl -'- - BUd 3-93: Sonderzeichen im Editor 136 I
Editoren unter UNIX 3.3.4 Zusammenfassung der wichtigsten Kommandos im ed Verwendung Befehll Beispiel Au1ruf ed Datei I Positionieren bzw. Angabedes Bereichs Es wird nur die Anzahl der Bytes angezeigt 3 Der Arbeitszeiger wird auf die Zeile n. im Beispiel Zeile 3, positioniert n1,n2 Kommando 2,5p Das Kommando betrifft den Bereich n1 bis n2 Die Zeilen 2 bis 5 sollen angezeigt (print) werden n,Set Von Zeile n bis Ende der Datei l<ischen (delete) .n a na Nach Zeile n, im Beispiel Zeile 3, Text als neue Zeile an hang en 11 (insert) Text als neue Zeilen vor der aktuellen Zeile einfUgen, bzw. vor Zeile n Beispiel vor Zeile 1 Se Beenden des Eingabemodus Ersetzen Die aktuelle Zeile wird mit der Ifd. Nr. angezeigt 3a c ~ Zeile 4 bis Ende der Datei wird mit der Ifd. Nummer angezeigt Text wird nach der aktuellen Zeile als neue Zeilen angehlingt (append) nl Suchen Von der angegebenen Datei wird eine Kopie in den Arbeitsspeicher geladen ed sprueche n 4,$n Umschalten in den Elngabe· modus Bedeutung (change) Die aktuelle Zeile wird ersetzt bzw. als Bei· spiel wird die Zeile 5 ersetzt. Wird mehr als eine Zelle Text eingegeben, werden die weiteren Zeilen eingefUgl. Am Anfang einer Zeile beendet er den Eingabemodus. IMusteri Nach dem Begriff/Muster wird in der Datei vorwarts gesucht 1Muster? rOckwarts gesucht 1/ 11 Zuletzt gesuchtes Muster vorwiirts such en bzw. rOckwiirts suchen s/alt/neul substitute - ersetzen In der aktuellen Zeile wird das erste Auftreten von aft durch neu ersetz! 1,Ss/altineuig In der gesamten Datei (1 ,$) wird jedes Vorkommen von alt durch neu ersetz! 191000/ - d . h .•auch mehrlach in einer Zeile) Loschen von Zeilen d (delete) loscht die aktuelle Zeile 3d Zeile 3 wird geloscht 4.6d Zeilen 4 bis 6 werden geloscht Riickgangig mach en u (undo) Der zuletzt eingegebene Belehl wird ungeschehen gemacht Beenden von ed w [Date/1 (write) ZurOckschreiben des Arbeitspuffers in die beim Aufrul bzw. in mit w angegebene Datei (quit) Beenden. Falls die Datei noch nicht mit w gesi· chert wurde, wird eine Warnung ausgegeben Beenden von ed ohne Sicherung l q ql 137
3 UNIX - praktisch angewandt 3.3.5 Ubersicht der wesentlichen Eigenschaften des Editors vi Der vi geheren zu den machtigsten Editoren, die unter UNIX verfugbar sind. 1m Kommandoaufbau sind viele Parallelen zum ed zu erkennen. Ein wesentlicher Vorteil zum ed - Sie sehen den zu bearbeitenden Text auf dem Bildschirm und kennen mit Hilfe der Cursortasten 880CD jeweils zu der betreffenden Stelle wandern. Die Cursortasten durfen allerdings nicht im Eingabemodus verwendet werden.Wie im ed gibt es unterschiedliche Modi: den Kommandomodus, den Eingabemodus und einen ed-ahnlichen Modus. Um Text einzufUgen, mussen Sie erst durch ein entsprechendes Kommando in den Eingabemodus umschalten. Die Texteingabe kann eingeschaltet werden durch die Kommandos: Kommando Ableitung von Bedeutung append Anhangen ans Zeilenende bzw. hinter dem Cursor I,i insert R replace EinfUgen am Zeilenanfang bzw. vor dem Cursor Ersetzen ab Cursor A,a 0 ,0 open Neue Zeile uber bzw. unter der aktuellen Zeile einfUgen Der Eingabemodus wird durch die Funktionstaste Escape abgeschlossen. Fehlt die Escape-Taste auf Ihrer Tastatur, so kann die gleiche Funktion meistens auch durch die Tastenkombination ,ALT-2-7< erreicht werden, wobei zuerst die Alt-Taste gedruckt wird und dann nacheinander die Nummern auf der numerischen Tastatur eingegeben werden. 138 Wie der ed arbeitet auch der vi auf einem Arbeitspuffer. Aile erfolgten Anderungen mussen durch ein Sicherungskommando in die Originaldatei zuruckgeschrieben werden. Die Kommandos zum Sichern und Beenden des vi lauten:
3.3.5 Editoren unter UNIX Ableitung von Bedeutung! Funktion :w write :q quit Rueksehreiben des Arbeitspuffers auf die Platte Beenden des vi mit Warnung, falls noch nieht zuruckgesehrieben wurde :q! quit Beenden des vi ohne Warnung ZZ Ende des Alphabets Zuruckschreiben des Arbeitspuffers und Beenden des vi Kommando I. Sehen wir uns eine kurze ,Sitzung< im vi an: (. . ....--------'..,$ l Die erste Bildschirmseite der j sprueche Datei wird sofor! angezeigt Position s jeden Morgen einen lebenden Frosch des Cursors I un d O·If passlert . '-------,r' me. h ts S ehI·Immeres wa··hren d d es ..,ages ••• Noch'n Gedicht ... Murphy's erstes Gesetz: Nichts ist so leicht, wie es aussieht. ... Noch'n Gedicht ... Murphy's zweites Gesetz: Alles dauert langer als du denkst. Zeichen fur leere, noch nichl .... Noch'n Gedicht ... beschriebene Zeilen I VI ::- •. I Nachrichlen- und Kommandozei le I Hinweiszeile mit Namen der sprueche 9 Imes, 290 characters - Datei, Anzahl Zeilen und Zeichen Bild 3-94: Beispiel Aufruf vi Dieser Text weist ein paar Unsch6nheiten auf. In der 2. Zeile fehlt am Ende des Satzes ein Punkt. AuBerdem handelt es sich hier nicht um Gedichte, sondern um Spruche. Mit diesen Korrekturen k6nnen die M6glichkeiten zur schnell en und einfachen Korrektur im vi gut demonstriert werden. Um Ihnen auf unseren Beispiel-Bildschirmen anzuzeigen, daB der Cursor bewegt wurde, ist die alte Position des Cursors mit [J die neue Position mit. dargestellt. 139
3 UNIX - praktisch angewandt j-Lo.a..............-einen lebenden Frosch ri-r:7IT1rn;.;i:5Ji.;rr-:Tli.chts Schlimmeres wah rend des Tages. Die Eingabe von A imKommandomodus zum AnMngen am Zeilenende wird nicht angezeigt. Hier wird nun sichtbar der Punkt im Eingabemodus geschrieben Alles dauert langer als du denkst ••• Noch 'n Gedicht ••• Bild 3-95: Beispiel Korrekturen im vi: Anhiingen am Ende der Zeile Iss jeden Morgen einen lebenden Frosch und Dir passiert nichts Schlimmeres wahrend des Tages. il..J Wir befinden uns im Eingabemodus und haben versehentlich die RETURN-Taste gedruckt. Um die dadurch erhaltene Leerzeile wieder zu loschen, mOssen wir zuerst die J T-aste drucken, ( ESC um wieder in den Kommandomodus umzuschalten. Hier genOgt es, das Kommando dd einzugeben, um die versehentlich erganzte Zeile zu loschen. Bild 3-96: Beispiel Korrekturen im vi: Umschalten in den Kommandomodus Loschen einer Zeile Um nun ,Gedicht< in ,Spruch< abzuandern, wollen wir an diesem Beispiel mehrere M6glichkeiten demonstrieren: 140 1. Ersetzen durch das Kommando R (Replace) 2. Ersetzen durch das Kommando cw (change word) 3. Suchen und Ersetzen mit den uns schon bekannten Ersetzungsmechanismen vom ed.
3.3.5 Editoren unter UNIX / Iss jeden Morgen einen lebenden Frosch und Dir passiert nichts Schlimmeres wahrend des Tages. ~~. Noch'n.dicht ••• Wichtig ist, daB Sie jeweils erst im Kommandomodus an die zu ersetzende Stelle wandern, und dann erst in den Eingabe- oder Ersetzungsmodus umschalten. Mit dem Kommando R ... wird sichtbar der Text i.iberschrieben Nach Eingabe von Spruch sieht unsere Zeile wie lolgt aus: Noch'n Sprucht ••• Mit der J ( ESC - Taste schalten wir wieder in den Belehlsmodus um. / Bild 3-97: Beispiel Korrekturen im vi: Ersetzen durch Kommando R / Iss jeden Morgen einen lebenden Frosch und Dir passiert nichts Schlimmeres wahrend des Tages .. ... Noch'n Spructfi ... Um einzelne Zeichen zu loschen, gibt es das Kommando X Hier wird das in unserem Beispiel i.ibriggebliebene ·t. aus .Gedicht· geloscht. Die Zeile sieht dann wie lolgt aus: Noch'n spruchl ••• ~~----------------------------------------~ Bild 3-98: Beispiel Korrekturen im vi: Loschen eines Zeichens mit x Sie sehen, im vi ist das Korrigieren von Texten wesentlich einfacher und komfortabler als im ed. Abgesehen von den Cursortasten, mit denen Sie zu einer beliebigen Stelle in der gesamten Datei wandern kennen, stehen Ihnen im vi Objelde zur Verfugung, wie z. S.: Zeichen Wort Zeile Satz (bis zum nachsten Punkt, ! oder ?) Klammern ( auf - zu ) Solche Objekte kennen Sie suchen, leschen und ersetzen. 141
3 UNIX - praktisch angewandt Die vorangegangene Anderung laSt sich damit noch einfacher durchfUhren: Iss jeden Morgen einen lebenden Frosch und Oir passiert nichts Schlimmeres wahrend des Tages .. [1' Noch'n.edicht ••• Sie kennen, um an die zu andernde Stelle im Text zu gelangen, mit dem Cursor wand ern oder den Befehl w fur wortweises VorrOcken verwenden. Das Kommando cw ersetzt nur das nachfolgende Wort, das durch ein $ am Ende gekennzeichnet ist (statt des letzten Buchstabens): Gedich$ weitere Eingaben werden eingefugt. Oberschreiben wir das Wort und schlieBen die Eingabe mit ( ESC) abo Unsere Zeile erscheint dann richtig auf dem Bildschinn: ••• Noch 'n Spruch Bild 3-99: Beispiel Korrekturen im vi: wortweise Vorrucken Ersetzen (Oberschreiben) eines Wortes Die Kommandos c (change) d (delete) y (yank) ersetzen loschen speichern konnen nur in Verbindung mit unterschiedlichen Objekten kombiniert werden. Die Objekte werden wie folgt gekennzeichnet (Auswahl der am meisten benOtigten Objekte): Leertaste (blank) Einzelnes Zeichen W (word) Wort mit Sonderzeichen wie " *, " Wort ohne Sonderzeichen w (global) Ab Cursorposition bis zum Ende der G Datei (Arbeitspuffer) A Anfang der aktuellen Zeile Ende der aktuellen Zeile $ Anfang des aktuellen Satzes ( Ende des aktuellen Satzes ) 142 Wenn Sie die Objekte ohne Kommando angeben, konnen Sie damit den Cursor positionieren. Mit der Leertaste bewegen Sie im Kommandomodus den Cursor zeichenweise vorwarts, mit w wortweise. Geben Sie das $-Zeichen an, springt
3.3.5 Editoren unter UNIX der Cursor an das Ende der Zeile. Mit ( wird der Cursor an den Anfang des Satzes zuruckgesetzt. Wie konnen Sie Kommandos im vi mit Objekten kombinieren? Kommando Wiederholungsfaktor Objektart Zum Beispiel: dW Loscht das nachfolgende Wort d3W oder 3dW Loscht die nachfolgenden 3 Worter d) Loscht bis zum Ende des aktuellen Satzes Wie im ed gibt es auch im vi das hilfreiche Kommando u (undo - ungeschehen machen) was gerade bei versehentlichem Loschen beruhigend ist. Zusatzlich wird im vi das im Text Geloschte in einen Loschpuffer gespeichert. Mit dem Kommando p (paste - Oberkleben, einfOgen) wird das zuletzt Geloschte nach der Cursorposition eingefUgt Bis zu 9 Loschungen konnen im vi in unterschiedliche Loschpuffer geschrieben und zuruckgeholt werden. Das Kommando wird dann mit "np aufgerufen, wobei n jeweils die Nummer der n-Ietzten Loschung darstellt, p ohne Angabe entspricht der letzten ijeweils 1.) Loschung, "2p entspricht dem an vorletzter Stelle Geloschten, also der 2. Loschung. t Unbedingt die doppelten AnfUhrungszeichen mit angeben! 143
3 UNIX - praktisch angewandt Der vi bietet fOr gr6Bere Anderungen zusatzlich den ex-Editor, der letztlich eine Weiterentwicklung des ed ist. Die Kommandos fOr den ex-Editor werden mit einem : e ni geleitet. Hierzu geh6ren demnach auch die Ihnen bereits bekannten Befehle fOr write und quit (:w, :q). Schreiben Sie im Kommandomodus einen Doppelpunkt, so springt der Cursor auf die letzte leile am Bildschirm und erwartet ein ex-Kommando. Um in unserem Beispiel aile vorhandenen W6rter ·Gedicht< mit .Spruch< zu ersetzen, k6nnen wir, wie im ed bereits gelernt, folgenden Befehl geben: Bereich I Kommando(s) :1,$sJzu ersetzender Text! Ersetzungstextl 9 TI leile 1 bis Ende (substitute ersetzen) der Datei I (global) aile gefundenen Texte, auch mehrmals innerhalb einer leile, ersetzen / Iss jeden Morgen einen lebenden Frosch und Oir passiert nichts Schlimmeres wahrenddes Tages. ••• Noch'n Spruch ... Murphy's erstes Gesetz: Nichts ist so leicht, wie es aussieht. ••• Noch'n Gedicht ... Murphy's zweites Gesetz: Alles dauert langer als du denkst. ... Noch'n Gedicht ••• Nach Absenden des Kommandos wird die Datei berichtigt angezeigt. (aktuelle Bildschirmseite) v / Iss jeden Morgen einen lebenden Frosch und Oir passiert nichts Schlimmeres wahrend des Tages. ••• Noch'n Spruch ... Murphy's erstes Gesetz: Nichts ist so leicht, wie es aussieht. ••• Noch'n Spruch ... Murphy's zweites Gesetz: ... Noch'n Spruch ... / Bild 3-100: Beispiel Aufruf vi: Suchen und Ersetzen im ex-Modus: s/alt/neul 144
3.3.5 Editoren unter UNIX Diese Beschreibung kann Ihnen nur eine kurze Obersicht der wichtigsten Kommandos im vi geben, deshalb soli en diese Beispiele genugen, um Ihnen die Vorgehensweise im vi zu zeigen. Am schwierigsten erscheint am Anfang der Wechsel zwischen Kommando- und Eingabemodus. Um sicher zu sein, daB Sie sich im Kommandomodus befinden, konnen Sie die (ESCJ - Taste drucken. Waren Sie bereits im Kommandomodus, ertont ein Klingelzeichen (BeIO. Es bedeutet generell, daB Sie eine fehlerhafte Eingabe gemacht haben, oder eine Begrenzung erreicht haben (Ende der Zeile oder Ende der Oatei bei Cursortasten etc.). Verlassen wir nun den vi. Die einfachste und sicherste Methode ist, den vi mit dem Kommando zz abzuschlieBen: / Iss jeden Morgen einen lebenden Frosch und Oir passiert nichts Schlimmeres wahrend des Tages. ••• Noch 'n Spruch ••• Murphy's erstes Gesetz: Nichts ist so leicht, wie es aussieht. ••• Noch'n SpruCh ••• Murphy's zweites Gesetz: Durch das Kommando ZZ wird Alles dauert langer als du denkst. der Arbeilspuffer auf die beim Aufruf angegebene Dalei zu••• Noch'n Spruch ... ZZ "sprueche" 9 lines, 289 characters rUckgeschrieben. Als ROckmeldung wird die Anzahl der Zeilen und Zeichen angezeigt. --J) ~ $________________________ Bild 3 - 101: Beenden des vi 1m vi gelten im ubrigen die gleichen Metazeichen, wie im ed (Bild 3-90 auf Seite 134). Lassen Sie sich nicht durch die vielen Befehle und teilweise unterschiedlichen Funktionen einigerTasten entmutigen. Sie werden feststellen, daB Sie durch Befehlskombinationen mit Objekten schnell und effizient arbeiten konnen. - Obung macht den Meister! Die nachstehende Obersicht der in der Praxis am haufigsten verwendeten Kommandos soli Ihnen eine Hilfe sein, um den vi im Selbststudium zu erarbeiten. 145
3 UNIX - praktisch angewandt 3.3.6 Ubersicht der haufig benutzten vi-Kommandos Verwendung BefehV Beispiel Aufruf vi Datei vi sprueche Beenden Bedeutung Von der angegebenen Datei wird eine Kopie in den Arbeitsspeicher gel aden :w [Date/] Schreibt in die beim Aufruf oder bei :w angegebene Datei zuruck :q Beendet den vi mit Warnung , falls noch nicht zuruckgeschrieben wurde :q! Beendet den vi ohne Warnung, falls vorher noch nicht gesichert (:w) wurde ZZ Sichert (schreibt den Arbeitspuffer zuruck) und beendet den vi Cursor positionieren 8 8 CD CD oderl oder h h nach links oderj j nach unten oder k k nach oben Woderw B oder b Vorwarts gehen um ein Wort (Wortanfang, -ende) (backwards) ruckwarts gehen um ein Wort $ Zum Zeilenende gehen 1\ Zum Zeilenanfang gehen Zum Satzanfang Zum Satzende Gehe zur n-ten Zeile nG Blattern 1G Go Gehe zur Zeile 1 - Dateianfang 4G G Gehe zur 4. Zeile (CTRY Gehe zum Ende der Datei + f ~TRQ + 9 146 -------1 Bewegung des Cursors durch die Cursortasten oder den angegeben Buchstaben I wie ludwig nach rechts Blattert eine Bildschirmseite vor Blattert eine Bildschirmseite zuruck
3.3.6 Editoren unter UNIX Verwendung Befehll Beispiel Wechsel in A den Eingabemodus a Bedeutung append Text anhangen am Zeilenende nach dem Cursor insert Text einfUgen am Zeilenanfang vor dem Cursor I 0 open Fugt eine leile unterhalb des Cursor ein 0 oberhalb des Cursor ein R replace Bestehende Zeichen ab Cursorposition ersetzen c Objekt change Ersetzt das nachfolgende Objekt: cw change word nachfolgendes Wort cG Ersetzt den nachfolgenden Text bis zum Ende der Datei c" Ersetzt vom Anfang der leile bis zur Cursorposition c$ Ersetzt von der Cursorposition bis zum Ende der leile c( Ersetzt vom Anfang des Satzes bis Cursorposition c) Ersetzt von der Cursorposition bis zum Satzende AbschluB SchlieBt die Eingabe ab und wechselt in den Kommandomodus des E;ngabemodus (ESC) Loschen x durch-x-en (durchstreichen) Loscht das aktuelle lei chen, auf dem der Cursor steht d Objekt delete Loscht das nachfolgende Objekt: dw das nachfolgende Wort dG nachfolgenden Text bis zum Ende der Datei 147
3 UNIX - praktisch angewandt Verwendung Loschen Fortsetzung Befehl! Beispiel Bedeutung d" Anfang der leile bis zur Cursorposition d$ ab Cursorposition bis zum leilenende d( vom Anfang des Satzes bis zur Cursorposition d) von der Cursorposition bis zum Ende des Satzes dd die aktuelle leile nd 3d Ubernahme p aus dem Puffer paste (einsetzen) FLigt das zuletzt Geloschte (oder Gespeicherte) nach der Cursorposition ein "np "nP "4p Ruckgangig machen FLigt die n-te Speicherung/Loschung nach (P oberhalb) der Cursorposition ein z. B. die 4-letzte Loschung xp Vertauscht 2 Buchstaben an der Cursorposition (z. B. hc in ch) u undo Das zuletzt durchgefOhrte Kommando wird ,ungeschehen' gemacht Die aktuelle leile wird aus der Originaldatei wiederhergestellt U Yoder yy Speichern und EinfUgen yank Setzt die aktuelle leile in den Speicherpuffer p FLigt die letzte Speicherung/Loschung nach der aktuellen leile ein " [a-z]yObjekt Speichert das angegebene Objekt in den Puffer (a-z) Speichert das Wort, auf dem der Cursor steht, in den Pufferspeicher 'a' "ayw "[a-z]p "ap 148 n Anzahl leilen 3 leilen Vorslchtl Anfilhrungszeichen nicht vergessenl paste FLigt den Inhalt des Pufferspeichers (a-z) nach der Cursorposition ein FLigt den Inhalt des Pufferspeichers a nach der Cursorposition ein Ohne AnfLihrungszeichen wLirde a fOr append ausgefOhrt I j
3.3.6 Editoren unter UNIX Verwendung Befehll Beispiel Suchen in der ISuchbegriff gesamten Datei I Bedeutung Sucht nach dem angegebenen Muster vorwarts Wiederholt den letzten Suchvorgang (vorwarts) ?Suchbegriff Sucht nach dem angegebenen Muster riickwarts ? Wiederholt den letzten Suchvorgang (riickwarts) 0/0 Wenn der Cursor auf einer Klammer steht, sucht dieses Kommando die dazugehorige schlieBende oder offnende Klammer Suchen in der fx Fx aktuellen Zeile I., find Sucht in der aktuellen leile nach dem leichen x vorwarts (f) riickwarts (F) Wiederholt den letzten Suchvorgang @ Backspace oder Delete (CTRy + h [CTRl] + W [CTRl] + x loscht das zuletzt eingegebene leichen UNIX-Kommando :!Kommando :!date Fiihrt den angegebenen Befehl aus. Gibt das Datum und Uhrzeit auf der untersten Bildschirmzeile aus. Die editierte Datei wird dadurch nicht verandert. Mit der Returntaste kehren Sie zum vi zuriick Sonstiges eCTRl] + I Buchstabe klein L Bereitet den Bildschirm neu auf read Liest die angegebene Datei in den Arbeitspuffer und mgt sie nach der Cursorzeile ein Korrekturmoglichkeiten im Eingabemodus :rDatei :r!Kommando L J Ibscht das zuletzt eingegebene WortIbscht die zuletzt eingegebene leile J -J Fiihrt das angegebene Kommando aus und mgt das Ergebnis hinter der aktuellen leile ein join Fiigt die aktuelle leile mit der nachfol~ genden leile zusammen 149
3 UNIX - praktisch angewandt Besonderheiten im vi 1m vi besteht zusatzlich die M6glichkeit, nOtzliche Optionen fOr die Verarbeitung voreinzustellen. Diese Optionen k6nnen zu Beginn der Sitzung, also nach dem Aufruf durch das Kommando vi Dateiname :set eingegeben werden. Von den Ober 30 Optionen sind hier nur einige besonders praktische herausgesucht: Bedeutung f Kommando Anderungen werden am Bildschirm sofort nachvollzogen. Ausnahmen sind Korrekturen im Eingabemodus - meist als Default eingestellt :set redraw I:set nore Setzt die obige Funktion zurOck wrap margin - Zeilenumbruch Mit Angabe von n Anzahl Zeichen wird automatisch :set wm=n ein Zeilenumbruch vorgenommen, sobald die maximale Zeilenlange der Anzahl Zeichen erreicht wurde Hiermit erfolgt kein automatischer Zeilenumbruch :set wm=O number :set nu !Die Datei wird mit laufender Zeilennummer angezeigt :set nonu Setzt die obige Funktion zurOck :set show mode Hiermit wird in der letzten Bildschirmzeile beim Eingabemodus der Hinweis ,Input Mode' angezeigt :set nomagic Die Sonderzeichen ., [1 und • haben dann keine Sonderbedeutung mehr, d. h., bei dem Such- und Ersetzungsmechanismus des ex-Modus werden sie nicht als Metazeichen behandelt. Z.B. gilt der Stern nicht mehr als Wiederholungsfaktor, sondern wird als Stern erkannt. :set magic Setzt die obige Funktion zurOck :set all L -_ _ __ ______ Zeigt aile eingestellten Parameter an Alternativ k6nnen die Optionen auch in der Datei $HOMEI.exrc gespeichert werden. Diese Datei wird beim Start von vi gelesen. Die Kommandos werden dann ohne >:' eingegeben. Mehrere Angaben k6nnen in einer Zeile stehen. z. B. set number show mode 150
3.3.7 Editoren unter UNIX Eine weitere Meglichkeit ist, die Optionen der Variablen EXINIT mitzugeben: EXINIT="set number showrnode" export EXINIT 1m vi kennen Sie sich eigene AbkOrzungen setzen und sogar Befehlsfolgen speichern und dam it eigene Funktionstasten belegen. Doch dies nur als Anmerkung fOr diejenigen von Ihnen, die den vi mit allen Raffinessen erlernen mechten. 1m Literaturverzeichnis finden Sie Hinweise Ober weitergehende Literatur. 3.3.7 Der batchorientierte Editor sed lum AbschluB der ,kryptischen< Editoren noch kurz ein Blick in den sed: sed [-n] [-fScriptdatei] Datei(en) [> neue Datei] oder sed [-n] [Kommandoliste] Datei(en) [> neue Datei] I stream editor I -n (no comment) gibt nur geanderte/gefundene leilen aus (sonst gesamte Datei) -f (file) nachfolgend wird der Name der Scriptdatei angegeben sed - Kornrnando, urn Dateien irn batch zu bearbeiten Sie brauchen hierfOr eigentlich nichts Neues mehr zu lernen. Er hat in etwa die gleichen Befehle wie der ed (bzw. vi im ex-Modus). Batchorientiert bedeutet, daB dieser Editor eine Datei sequentiell (eine leile nach der anderen) bearbeitet. Die durchzufOhrenden Befehle werden zu Beginn entweder in eine Script-Datei geschrieben oder direkt beim Aufruf mitgegeben. Beim Aufruf mOssen die fOr den sed bestimmten Befehle in AnfOhrungszeichen gesetzt werden (am besten die einfachen Hochkommas: ' '), damit die Shell sie nicht interpretiert (siehe Ersetzungsmechanismus Bild 3-68 auf Seite 109). Der sed wird oft als Filterprogramm verwendet oder fOr sehr groBe Dateien, die von Bildschirmeditoren nicht mehr verarbeitet werden kennen. Ein kurzes Beispiel fOr den sed soli genOgen: ___- - - - -- ---1 Die von who iibergebenen Zeilen $ who Ised '5/.*/ /' monika hans bemd (Bild 3-30 auf Seite 69) werden durchsucht nach einem Leerzeichen , gefolgt von einem oder mehreren beliebigen Zeichen. Das gefundene Muster (Ietztlich der Rest der Zeile nach dem Namen) wird durch ein Leerzeichen ersetz! und am Bildschirm ausgegeben Bild 3-102: Beispiel sed als Filterprogramm 151
3 UNIX - praktisch angewandt 3.3.8 Zusammenfassung der Editoren Kommandoeingabe ed Dateiname Umer DO : edlin vi [-rR] Datei(en) sed 'script' datei > dateineu sed -f script-datei datei > dateineu Beispiel: sed 's/neu/altlg' text1 >text2 152 Funktion editor Zeilenorientierter Editor Auch fUr Shell-Skripts geeignet siehe auch Ubersicht der Sonderzeichen und Kommandos im ed auf Seite 136 und Metazeichen - regulare AUSdri.iCkle auf Seite 134 visual editor Bildschirmorientierter Editor -r recovery Es wird ein Protokoll mitgeschrieben, das bei einem Absturz aile Eingaben nachvollziehen kann -R Read only die angegebene Datei darf mit dem vi nur gelesen nicht verandert werden siehe auch Ubersicht der haufig benutzten viKommandos auf Seite 146 und Metazeichen - regulare Ausdri.icke auf Seite 134 stream editor 1st ein batch-orientierter Editor. Wird keine Umleitung in eine Datei angegeben, erfolgt die Ausgabe uber Bildschirm Unter script werden Kommandozeilen (etwa gleiche Syntax wie ed und ex) in Hochkomma eingegeben In Such- und Ersetzungsfunktionen kennen regulare AusdrOcke verwendet werden (Metazeichen) Das Script kann auch in einer eigenen Datei abgelegt sein, die dann mit -f file gelesen wird Von der Datei text1 werden aile Zeichenketten alt in neu ersetzt und in text2 gespeichert. text1 bleibt unverandert. ~----------------~----~~
3.4 Dateiverwaltung und -pflege Sie haben gelernt, Dateien auf unterschiedliche Weise zu erstellen und zu modifizieren. In diesem Kapitel erfahren Sie nun, wie Sie Dateien aufraumen und verwalten konnen. Ahnlich wie Sieauf Ihrem Schreibtisch Notizzettel, Berichte, Briefe und andere Dokumente bearbeiten und in Ordnern ablegen oder weiterleiten, so sol/ten Sie auch in Ihrem Directory Ordnung halten. Hierzu konnen Sie Unter-Directories anlegen, Dateien umbenennen oder umleiten, loschen oder kopieren und wichtige oder geheime Informationen vor fremden Zugriff schiitzen. Die einzelnen Themen: 3.4.1 Neuanlegen und L6schen von Directories 3.4.2 Kopieren, L6schen und Umbenennen von Dateien 3.4.3 Merkmale einer Datei 3.4.4 Dateitypen unter UNIX 3.4.5 Ausdruck von Dateien 3.4.6 Andern von Zugriffs- und 8esitzerrechten 3.4.7 Such en nach Dateien und Mustern in Dateiinhalten 3.4.8 OberprOfen der Platten- oder Floppy-8elegung 3.4.9 Zusammenfassung der Kommandos 153
3 UNIX - praktisch angewandt Dateiverwaltung und -pflege Kennen Sie das GefOhl, wenn alles herumliegt und Sie keine Lust haben aufzuraumen? - Und wie wohl fOhlen Sie sich, wenn Sie sich Oberwunden haben und Ordnung geschafft ist! Genauso wohl sollen Sie sich in Ihrem UNIX-System fOhlen. Richten Sie sich ein, organisieren Sie Ihr ,Homec-Directory! Welche Organisationsm6glichkeiten stehen Ihnen zur VerfOgung? o Strukturieren durch Unter-Directories - Wie raumen Sie z. B. Ihren Schreibtisch auf? Erledigte SchriftstOcke geben Sie sicher in eine Ablage, z. B. in einen Schrank mit verschiedenen Fachern und Ordnern. Die Facher und Ordner haben Sie eingeteilt fOr bestimmte Bereiche (z. B. Abteilung Einkauf, Lieferanten, Rechnungen usw.). Unter UNIX entsprechen Schrank und Ordner den Directories mit den jeweiligen Unter-Directories. NOtzen Sie die klare Ordnung des hierarchischen Dateisystems. Sie k6nnen beliebig viele Directories nebeneinander (horizontal) oder untereinander (vertikal) einrichten. Auch gibt es kein Limit fOr die Anzahl der Dateien und Unter-Directories innerhalb von Directories. Herrlich, stell en Sie sich einen Schrank vor, in dem Sie nach Bedarf immer neue Facher einrichten k6nnen. Allerdings, eine Begrenzung gibt es - die Plattenkapazitat. Auch empfiehlt es sich, nicht zuviele Dateien in einem Directory abzulegen. Die Verarbeitungsgeschwindigkeit k6nnte durch langes sequentielles Suchen der Dateien innerhalb der Directories merklich nachlassen. Gruppieren Sie deshalb Ihre Dateien, und richten Sie fOr jede Gruppe ein eigenes Directory ein. 0irectOry-A ... beliebig viele D I 0irectOry-An) BUd 3 -1 03: Beispiel Strukturierung durch Directories 154
Dateiverwaltung und -pflege o Eindeutige Bezeichnung der Directories und Dateien. Die Namen fOr Dateien und Directories k6nnen bis zu 256 Stelien genutzt werden (vor System V.4 konnten Dateinamen bis zu 14 Stelien lang sein). Vermeiden Sie alierdings Sonderzeichen und die Umlaute der deutschen Sprache (a A; 6 0; 0 0), da nicht auf alien System en die internationalen Zeichensatze unterstOtzt werden. Sie wissen zwischenzeitlich, daB es unter Umstanden unangenehme Foigen hatte, eine Datei mit dem Namen zu 16schen. Deshalb nochmal zur Wiederholung: .*. Verwenden Sie als Datei- oder Directory-Namen nur die GroB- und Kleinbuchstaben (A-Z, a-z), den Bindestrich und Unterstreichungsstrich oder den Punkt (-. _•. ), wobei diese nicht am Anfang eines Namens stehen sollten. Der Punkt am Anfang eines Namens kennzeichnet .versteckte Dateien •. FOr den Systemverwalter sind mit Punkt beginnende Dateien immer sichtbar. Wie .normale. Benutzer diese versteckte Dateien auffinden, erfahren Sie noch in diesem Kapitel. Die Trennung zwischen Directories und Dateien wird in der Pfadbezeichnung durch den Schragstrich I erreicht. Somit ergibt sich auch durch den Pfad eine aussagetahige Bezeichnung der Datei. Angenommen, Sie hatten Informationen Ober Versicherungen im Rechner gespeichert, so k6nnte eine Obersichtliche Unterteilung folgendermaBen aussehen: Versicherung Die Datei muB also nicht HaftpfJichtversieherungsvertrag genannt werden, sondern sie wird durch den Pfad genau bezeichnet: Versicherung/HaftpflichtIVertrag Beginnen Sie mit der Organisation Ihres Obungs-Directories. Sehen Sie sich Ihr Directory an. Um sicher zu gehen, kontrollieren Sie vorab, ob Sie auch wirklich in Ihrem Home-Directory sind. Mit dem Kommando Is (Jist) erhalten Sie zwar eine alphabetische Ordnung angezeigt, doch werden Sie sieher zustimmen, daB Sie mit einer Unterteilung nach .Bereichen. eine bessere Obersicht erzielen. 155
3 UNIX - praktisch angewandt Obungsbeispiel, um sich die )nahere Umgebung' anzusehen: $ cd Wechsel in das Home-Directory $ pwd lusrlkurslmonika Is -RF $ Datum fOr Directories //rKennzeichen - -__________ _ befeh/el inhalt neu projektAl sprueche ueb 1 befeh/e: sichern' - - projektA: pro.c io.c bSp.c . Kennzeichen fOr ausfOhrbare Dateien (Kommandoprozeduren) $ Bild 3-104: Beispiel listen, anzeigen von DirectorieslDateien (Is -RF) In unserem Beispiel sind bereits 2 Unter-Directories enthalten und nur wenige Dateien bisher angelegt worden. Doch auch hier lieBe sich eine Strukturierung nach folgenden Bereichen vornehmen: Bild 3-105: Beispiel Dateibaum - neue Aufteilung im Ubungs-Directory lusrlkurslmonika Um die Aufteilung nach obigem Muster in unserem Beispiel nachzuvollziehen, sind die Directories )uebungen' und )texte' neu angelegt worden. 156
3.4.1 Dateiverwaltung und -pflege 3.4.1 Neuanlegen und Loschen von Directories Um Directories neu anzulegen gibt es das Kommando mkdir. mkdir -p Directory-Name(n) I make dlrecto~ I I I I max. 256 Zeichen (vor System V 14 Zeichen) Der Name darf in dem aktuellen Directory noch nicht anderweitig vergeben sein path noch nicht vomandene Directories werden mit angelegt mkdir - Kommando zum Anlegen von Directories Der Name des Directories kann auch mit dem gesamten Pfadnamen angegeben werden. Ab Version VA ist es nicht mehr notwendig, daB die jeweilig Gbergeordneten Directories bereits angelegt wurden. Mit der Option -p kennen aile netigen Directories mit angelegt werden. In unserem Beispiel befinden wir uns in /usr/kurs/monika und legen hier die Directories uebungen, texte und a an: $ mkdir uebungen texte a $ Is -I ·rw-f-r-dr wxrwX(-X dr wxrwxr-x -rw-r--f--rw-r--f-dr wxrwxr-x -rw-r--r-dfwxrwxr-x -rw-rw-r-dr wxrwxr-x 1 monika 2 monika 2 monika 1 1 2 1 2 $ I 1 2 monika monika monlka monika monika monika monlka kurs kurs kurs kurs kurs kurs kurs kurs kurs kurs 29 32 32 22 245 80 289 32 12489 32 Jun20 Oct 19 Feb 7 Jun20 Jun20 Feb 7 Sep2B Oct 19 Feb 7 Oct 19 9:26 Datum 15:20 a 8:30 befehle 9:27 inhalt 21:04 neu 8:30 proJektA 21:32 sprueche 15:20 texte 8:35 uebl 15:20 uebungen Referenzzahler d = Directory - = normale Datei Benutzername Datum der GrOBe in Bytes letzten Anderung Name der Datei Bild 3-106: Beispiel Anlegen von Directories - (mkdir und Is -I) In dem obigen Bild sind die neuangelegten Directories mit einer helleren Schraffur hervorgehoben. Die Zugriffsrechte von Directories und Dateien werden beim Neuanlegen so gesetzt, wie sie vom Systemverwalter zunachst definiert wurden (Datei /ete/profile). Wie Sie selbst diese Zugriffsrechte andern kennen und welche besondere Bedeutung sie fUr Directories haben, erfahren Sie ein paar Seiten spater. Vorab wollen wir uns noch mit dem Aufraumen beschafiigen. 157
3 UNIX - praktisch angewandt Wir haben beim Neuanlegen ein Directory mit dem Namen 'a' angelegt, das wir aber nicht benotigen. Um Directories zu loschen, gibt es ein eigenes Kommando: rmdir I Directory remove directory rmdir - Kommando zum Loschen von Directories Um ein Directory loschen zu konnen, muB es jedoch ,leer, sein, d.h., aile in dem Directory eventuell enthaltenen Dateien mussen vorab mit rm geloscht werden bzw. eventuelle Unter-Directories mit rmdir. Diese mussen natUrlich auch wiederum ,leer, sein. Um das unnotig angelegte Directory ,a, wieder zu loschen wird eingegeben: $rmdir a Is -I $ -rw-r--r-dr wxrwxr-x -rw-r--r-rw-r--r-drwxrwxr-x -rw-r--r-dr wxrwxr-x -rw-rw-r-drwxrwxr-x 1 monika 2 monika 1 2 1 2 1 2 $ rmdir projektA rmdir: monika monika monika monika monika monika monika projektA not empty kurs kurs kurs kurs kurs kurs kurs kurs kurs 29 32 22 245 80 289 32 12489 32 Jun 20 Feb 7 Jun Jun Feb Sep Oct Feb Oct 20 20 7 28 19 7 19 9:26 Datum 8:30 befehle 9:27 inhalt 21:04 neu 8:30 projektA 21:32 sprueche 15:20 texte 8:35 ueb1 15:20 uebungen Wird versucht, ein nicht leeres Directory zu IOschen, erscheint eine Fehlernachricht: projektA ist nicht leer Bild 3 -1 0 7: Beispiel Loschen von Directories - rmdir Um nun die Dateien in die neu eingerichteten Directories zu bringen, konnen wir verschiedene Wege gehen: ODie Dateien yom aktuellen Directory in das neue Directory kopieren_ Kontrollieren, ob auch aile Dateien im neuen Directory vorhanden sind. Loschen der Dateien im alten Directory. ODie Dateien in das neue Directory hiniiberschieben, bewegen (move). 158
Dateiverwaltung und -pflege ----------------------------- 3.4.2 3.4.2 Kopieren, Loschen und Umbenennen von Dateien Das Kommando zum Kopieren von Dateien kann unterschiedlich genutzt werden: 1. Kopieren einer Datei cp Dateiname-alt I I copy I I zu kopierende Datei Dateiname-neu I IDatei neu zu erstellende cp - Kommando zum Kopieren einer Datei Mit dieser Angabe k6nnen Sie jeweils nur eine Datei kopieren. Sehen wir uns hierzu ein Beispiel an. Kopieren wir die Datei .new und geben der neuen Datei den Namen .neuer.: $ cp neu neuer $ Is -I -rw-r--r-dr wxrwxr-x -rw-r--r--rw-r--r--rw-r--r-drwxrwxr-x -rw-r--r-dr wxrwxr-x -rw-rw-(-drwxrwxr-x $ 1 monika 2 monika 1 2 1 2 1 2 monika monika monika monika monika monika monika monika kurs kurs kurs kurs kurs kurs kurs kurs kurs kurs 29 32 22 245 245 80 289 32 12489 32 Jun20 Feb 7 Jun20 Jun 6 Oct 19 Feb 7 Sep28 Oct 19 Feb 7 Oct 19 9:26 Datum 8:30 befehle 9:27 inhalt 21:04 neu 17:45 neuer 8:30 projektA 21:32 sprueche 15:20 texte 8:35 ueb1 15:20 uebungen kopierte Datei mit neuem Datum Bild 3-108: Beispiel Kopieren einer Datei - cp Die Datei wird mit den gleichen Zugriffsrechten erstellt und erhalt als Erstellungs- und letztes .Anderungsdatum das aktuelle Datum. Der Benutzer, der eine Datei kopieren will, muB berechtigt sein, die zu kopierende Datei zu lesen und muB Schreiberlaubnis fOr das Directory haben, in dem die neue Datei erzeugt wird. Der Benutzer wird auch zugleich .Besitzer, der neu angelegten Datei - auch dann, wenn ihm die 'alte' Datei nicht gehOrt. Falls Sie auf Ihrem Rechner die Datei lusr/lib/cookies haben, k6nnen Sie diese in Ihr Directory kopieren und sind dann berechtigt, diese kopierte Datei zu andern. 159
3 UNIX - praktisch angewandt Hier dazu das Obungsbeispiel: $ Is -l/usr/lib/cookies 1 bin bin -rw-'--'-$ cp lusr/lib/cookies kekse $ Is -I -rw-,--,-1 monika kurs dr wxrwx,-x 2 monika kurs -rw-,--,-1 monika kurs -rw-,--,-1 monika kurs 1 monika kurs -rw-'--r-1 monika kurs -rw-r--'-d, wxrwx,-x 2 monika kurs 1 monika kurs -rw-'--'-2 monika kurs drwxrwxr-x -rw-rw-,-1 monika kurs d, wxrwx,-x 2 monika kurs $ 101699 Feb 8 1984 cookies zu kopierende Datei 29 Jun 20 32 Feb 7 22 Jun 20 101699 Oct 19 245 Jun 6 245 Oct 19 80 Feb 7 289 Sep28 32 Oct 19 1?4AQ ~'*' 7 9:26 Datum 8:30 befehle 9:27 inhalt 17:55 kekse 21:04 neu 17:45 neuer 8:30 proiektA 21:32 sprueche 15:20 texte R·~" II'*'1 kopierte Datei mit neuem Datum , neuem Besitzer und Gruppe ungen BUd 3-109: Beispiel Kopieren einer Datei - cp Die andere Moglichkeit cp zu verwenden, ist, mehrere Dateien gleichzeitig zu kopieren. Das Ziel muB dann ein Directory sein und als letzter Parameter angegeben werden. Die Dateien werden in dem Ziel-Directory mit gleichem Namen angelegt. 2. Kopieren von einer oder mehreren Dateien in ein Directory -ir copy I pateiname(nJ-alt pirectory z~ kopierende IDirectOry, . Datei oder mehrere unter dem die Dateien angegebenen Dateien mit gleichem Namen rekursiv neu erstellt (kopiert) Der gesamte Dateiwerden baum wird kopiert interactive Falls eine Datei mit gleichem Namen schon existiert, wird nachgefragt, ob uberschrieben werden darf (ab Version V.4) cp - Kommando, urn Dateien in ein Directory zu kopieren 160
3.4.2 Dateiverwaltung und -pflege Verwenden wir diese Form des cp-Kommandos, um in unserem Directory Ordnung zu schaffen. Wir wollen die vorhandenen Dateien in Unter-Directories ablegen. Hierbei werden wir zwei Vorgehensweisen demonstrieren. 1. Aile ,Obungsdateien< kopieren wir in das Directory uebungen, kontrollieren die Kopie und loschen dann die doppelt vorhandenen Dateien in unserem Home-Directory. $ Is -I uebungen total 0 $ cp Datum inhalt neu neuer ueb1 uebungen $ Is -I uebungen kopierte Daleien mit neuem Datum -rw-,--,-rw-,--,--rw-,--,--rw-,--,--rw-rw-,- monika 1 monika 1 monika 1 monika 1 monika 29 22 245 245 12489 kurs kurs kurs kurs kurs $ rm Datum inhalt neu neuer ueb1 Oct Oct Oct Oct Oct 19 19 19 19 19 18:10 18: 10 18:10 18: 10 18:10 Datum inhalt neu neue, ueb1 LOschen der allen Daleien Bild 3 -11 0: Beispiel Kopieren von mehreren Dateien in ein Directory - cp 2. I> Sehen wir uns unser Home-Directory an, von dem aus wir bisher aile Kommandos durchgefOhrt haben (working directory), und raumen noch die restlichen Dateien auf. Doch Vorsicht! Besteht schon eine andere Datei mit dem neu zu vergebenden Namen, so wird sie Gberschrieben! Verwenden Sie deshalb beim Kopieren die Option -I, die Sie davor schGtzt. Es gibt unter UNIX keine Moglichkeit, geloschte oder Gberschriebene Dateien zurGckzubekommen! - Es sei denn, Sie haben eine Sicherung (ein backup) erstellt - doch davon spater. Hier noch ein kurzes Beispiel, wie Sie einen ganzen Dateibaum mit cp kopieren konnen. Angenommen, Hans will sich das Directory texte von Monika kopieren, so gibt er an: $pwd lusrlkurslhans $Is -FR befehlel projektBI $ cp -r ..Imonika/texte texte $Is -I texte -rw-,--r-rw-,--,-- 1 hans kurs 1 hans kurs 101699 Nov 2 8:55 kekse 289 Nov 2 8 :5 5 spruech Bild 3 -111: Beispiel Kopieren eines Dateibaumes mit cp -r 161
3 UNIX - praktisch angewandt Das Directory texte wurde in dem obigen Beispiel mit angelegt, evtl. UnterDirectories wurden ebenfalls mit kopiert werden. Das L6schkommando haben wir kurz bei dem Thema Dateinamenexpansion besprochen. Es hat folgende Form: rm I remove 16schen [-ir] I Dateiname(n) [oder Directories 1 Irekursiv Werden Directories angegeben, so werden aile darin enthaltenen Dateien und UnterDirectories gel6scht interactive Aile Dateien werden zuerst angezeigt und erst durch die Bestatigung mit 'y' gel6scht. l> rm - Kommando zum Loschen von Dateien und Dateibaumen Dieses Kommando loscht nicht nur schnell und unwiderruflich, es kann auch gesamte Dateibaume- Dateisysteme zerst6ren oder restlos vernichten. Ich muB gestehen, ich habe lange uberlegt, ob ich die Option -r (rekursiv) in diesem EinfUhrungskurs uberhaupt erwahnen soil. Doch es ist immer besser, die Gefahr zu kennen und zu meiden, als blind in sie hineinzulaufen. Bevor Sienn -r eingeben, sollte Ihnen stets bewuBt sein, was Sie 16schen. Oberprufen Sie, in welchem Directory Sie sind und kontrollieren Sie dreimal Ihre Eingabezeile. Eine andere M6glichkeit, 'auf Nummer sicher. zu gehen, ist das Kommando zusammen mit der Option -i aufzurufen. Bei der Eingabe rm -ir wird Ihnen jede zu 16schende Datei mit Namen und einem Doppelpunkt am Bildschirm angezeigt. Sie mussen durch den Buchstaben ,y. (fiir yes) bestatigen, daB Sie mit der L6schung einverstanden sind. Bei jeder anderen Eingabe, also auch nur dem Aus16sen der Returntaste, bleibt die Datei erhalten. Das Kommando rm -r hat natUrlich seine Berechtigung, wenn Sie bewuBt einen Dateibaum 16schen wollen. Sicher wird dieses Kommando eher von Systemverwaltern benutzt werden, die Umorganisationen durchfUhren. Sie erinnern sich, daB mit dem Kommando rmdir nur leere Directories gel6scht werden k6nnen. Wenn das zu 16schende Directory aus einer Reihe von Unter-Directories besteht, kann die L6schaktion recht langwierig werden, da Sie vom untersten UnterDirectory beginnend erst aile Dateien 16schen muBten. Das Kommando rm -r lusr/kurs/monika 162 wurde den gesamten Dateibaum ab lusrlkurslmonika ,ratzeputz< 16schen. Mit dem rm-Kommando spielt man nicht und sollte es auch nicht ohne Absicherung benutzen. Gedulden wir uns deshalb bis zu Kapitel 3.5, in dem wir die Sicherung
3.4.2 Dateiverwaltung und -pflege von Dateien behandeln backup). In der Korn- und C-ShelJ gibt es eine M6glichkeit, das rm-Kommando zu entscharfen: man bildet einen alias fOr rm, der dann grundsatzlich rm -i aufruft (hierzu mehr im Kapitel 3.8.5 (Der Alias-Mechanismus), Seite 312). Lernen wir nun ein Kommando kennen, mit dem wir Dateien umbenennen k6nnen. Auch dieses Kommando ist nicht ganz ungefahrlich. Besteht namlich bereits eine Datei mit dem neu zu vergebenden Namen, so wird diese Oberschrieben. Das Kommando lautet mv (move - bewegen). Dieses Kommando hat ebenso zwei Funktionen wie das cp-Kommando. Sie k6nnen es einmal verwenden, um eine Datei umzubenennen, zum anderen k6nnen Sie Dateien in ein anderes Directory >schieben'. 1. mv -i I move bewegen Dateiname-alt Dateiname-neu bisheriger Dateiname Dateiname I I ~euer interactive Falls eine Datei mit gleichem Namen schon existiert, wird nachgefragt, ob Oberschrieben werden dart (ab Version V.4) 2. mv -i Fateiname(nJ-att , bisherige Datei oder mehrere Dateien Directory, unter das die angegebenen Dateien mit gleichem Namen Obertragen werden interactive Falls eine Datei mit gleichem Namen schon existiert, wird nachgefragt, ob Oberschrieben werden dart (ab Version \1.4) mv - Kommando, urn Dateien in ein anderes Directory zu schieben Sehen wir uns gleich die 2. Funktion von mv an, Dateien von einem Directory in ein anderes Directory zu >schieben,. Hiermit k6nnen Sie z. B. Aufraumarbeiten schneller als mit cp und rm durchfOhren, da die >alten' Dateien nicht gesondert gel6scht werden mOssen. 163
3 UNIX - praktisch angewandt $ Is -I drwxrwxr-x -rw-r--r-drwxrwxr-x -rw-r--r-dr wxrwxr-x dr wxrwxr-x $ $ 2 monika 1 monika 1 monika 1 monika 2 monika 2 monika kurs kurs kurs kurs kurs kurs 48 Feb 7 101699 80 289 32 128 my [ks1* texte Is -I dr wxrwxr-x drwxrwxr-x dr wxrwxr-x dr wxrwxr-x 2 monika 1 monika 2 monika 2 monika kurs kurs kurs kurs 32 -rw-r--r--rw-r--r- 1 monika kurs kurs 101699 289 $ Is -I texte monika 80 64 64 Oct 19 Feb 7 Sep28 Oct 19 Oct 19 Feb Feb 7 7 8:30 befehle 17:55 kekse 8:30 21:32 15:20 15:20 projektA sprueche texte uebungen 8:30 befehle 8:30 projektA Oct 19 Oct 19 15:20 texte 15:20 uebungen Oct 19 Sep28 17:55 kekse 21:32 sprueche Bild 3-112: Beispiel Obernahme von Dateien in andere Directories - mv Da in unserem Directory nur noch die beiden Textdateien vorhanden sind, haben wir uns im obigen Beispiel die Aufraumarbeit zusatzlich durch die Dateinamenexpansion mit Metazeichen erleichtert. Wenn wir schon Ordnung machen, dann lassen Sie uns auch gleich etwas Kosmetik vornehmen. Unsere Directories sind zwar mit einem ,dc gekennzeichnet, aber noch besser sind sie als Directories zu erkennen, wenn sie z. B. mit GroBbuchstaben beginnen. Hier sehen wir auch gleich die 1. Anwendung von my zur Umbenennung: $ $ $ $ $ my befehle Befehle my projektA Projekt-A my texte Texte my uebungen Uebungen Is -I drwxrwxr-x drwxrwxr-x drwxrwxr-x drwxrwxr-x $ 2 1 2 2 monika monika monika monika kurs kurs kurs kurs 48 Feb 80 Feb 7 7 64 Oct 19 64 Oct 19 8:30 8:30 15:20 15:20 Befehle Projekt-A Texte Uebungen Bild 3 -113: Beispiel Umbenennen von Dateien oder Directories - mv 164 In unseren Obungen haben wir u.a. eine Datei Datum angelegt. Wollen wir konsequent normale Dateien mit Kleinbuchstaben beginnen lassen, muBten wir diese Datei in datum umbenennen. In der Praxis k6nnte so eine Umbenennung zur Foige haben, daB ein fruheres Programm auf den ursprunglichen Namen der
3.4.2 Dateiverwaltung und -ptlege Datei zurOckgreift. Um deshalb beide Namen gelten zu lassen, gibt es ein Kommando, mit dem mehrere Namen fOr ein und dieselbe Datei vergeben werden kennen. Der Platz auf der Platte wird dadurch nicht doppelt belegt, da der zusatzliche Namenseintrag im Directory festgehalten wird. Der Inhalt der Datei ist nur einmal vorhanden. Das Kommando lautet: In I I link verbinden. sich anschlieBen Dateiname-alt I I bisheriger Oateiname Dateiname-neu ! I zusalzlicher Oateiname In - Kommando, um einen weiteren Dateinamen zu vergeben (.Hardlink< oder .reguliirer Link<) Die Vergabe von einem zusatzlichen Namen fOr eine Datei kann nur auf der gleichen Platte (Platten partition - siehe auch Seite 190) erfolgen. Auf Directories kann kein .Hardlink< erfolgen. Um nicht lange Pfadnamen mit angeben zu mOssen, wechseln wir vorab in das Directory Uebungen: $ cd Uebungen $ In Datum datum Referenzzahler (link count) $ Is -I -rw-r--r--rw-r--r--rw-r-r--rw-r--r--rw-r--r--rw-rw-r-- I 2 2 =2 :Hinweis, daB 2 Oateinamen existieren gleiche Oatei - gleiches oatuj m monika monika monika monika monika monika kurs kurs kurs kurs kurs kurs 29 29 22 245 245 12489 Oct 19 Oct 19 Oct 19 Oct 19 Oct 19 Oct 19 18:10 18:10 18:10 18:10 18:10 18:10 Datum datum inhalt neu neuer ueb1 Bild 3 - 114: Beispiel zusatzliche Namensvergabe fOr Dateien - In Um zu sehen, was in unserem Dateisystem hierbei verandert wurde, kennen wir uns mit dem Is-Kommando die zusatzlichen Attribute anzeigen lassen. Wir sehen, daB der Referenzzahler fOr die Dateien Datum und datum jeweils >2< ist, d. h., zwei Dateinamen existieren. Wird eine der beiden Dateien (Datum oder datum) gelescht, bleibt der Inhalt der Originaldatei trotzdem erhalten. Erst wenn keine Link-Dateien mehr bestehen (Referenzzahler ist 1), wird auch der Inhalt der Datei mitgelescht. 165
3 UNIX - praktisch angewandt Um plattenObergreifend ebenfalls Verbindungen zu Dateien oder auch Directories herzustellen, gibt es den >symbolischen link.: In -s Original-Datei I I I link I Linkname I I zusatzlieher Dateiname oder Directory NameNerweis mit absolutem Pfadnamen verbinden, sieh ansehlieBen In - Kornrnando, urn einen Verweis zu einer bestehenden Datei zu erstellen (>symbolischer Link, oder >softlink'J Sehen Sie sich hierzu auf Ihrem System mit Is -I Ibin die darin enthaltenen Dateien einmal an. Sie werden dort wahrscheinlich eine Reihe von merkwOrdigen Dateibezeichnungen mit einem Pfeil finden. Der Pfeil weist auf die Originaldatei hin, die u. U. sogar auf einem anderen Rechner im Netz zu finden sein kann. Auf diese Weise korinen groBere Dateien/Directories auf eine andere Platte ausgelagert werden. Da jedoch speziell bei Ibin die UNIXBefehle gesucht werden, wird hier Ober den symbolischen Link beim Aufruf eines Programmes auf die Originaldatei verwiesen. Wir konnen hierzu selbst ein kleines Beispiel erstellen: Wir wollen das Directory /usrlkurs/monikalUebung fUr aile zuganglich machen und legen deshalb im Directory Itmp, das fUr aile Benutzer Schreib- und Leseerlaubnis gesetzt hat, einen Verweis mit dem Namen Uebung an. (Monika muB naWrlich die Schreib- Leserechte in Ihrem Directory Uebung auch entsprechend setzten - doch davon spater). $ cd Itmp - $ In -s lusr/kurs/rnonika/Uebung Uebung $ Is -I GroBe der Datei entsprieht der Anzahl der Buehstaben I Irwxrwxrwx 1 monika I I kurs 23 T Oct 21 8:20 Uebung ->lusrlkurslmonikaJUeoung Referenzziihler bleibt ,1. ,I. Kennzeiehen f. symbolise hen link -> lerweis auf Originaldatei eigenes Datum Bild 3 -115: Beispiel symbolischer Link (Softlink) 166
Dateiverwaltung und -pflege 3.4.3 Der Verweis ist nur bei der Link-Datei enthalten. Wird die Originaldatei bzw. das Original-Directory umbenannt oder geloscht, zeigt die Link-Datei sozusagen ins ·Leere<, d. h., ein auf die Link-Datei bezogener Befehl wird eine Fehlermeldung bringen wie etwa >file does not exist<. Doch mit Link-Dateien haben mehr die Systemverwalter zu tun. Ais .normaler< Benutzer ist es jedoch interessant zu wissen, was die Pfeile bedeuten. 3.4.3 Merkmale einer Datei Eine Datei besteht aus einem Dateikopf, in dem bestimmte Merkmale der Datei eingetragen sind, und dem eigentlichen Dateiinhalt. Wenn wir uns mit Is -I eine Datei oder ein Directory ansehen, so bekommen wir einige dieser Merkmale angezeigt: o o o o o o o Dateityp (Directory, normale Datei oder Geratedatei, symbolischer Link), Zugriffsrechte (read, write, execute - Lese-, Schreib- und AusfOhrerlaubnis fOr den Besitzer, die Gruppe und die anderen Benutzer), Referenzzahler (Anzahl der vergebenen Dateinamen), Benutzername und Gruppe, GroBe in Bytes, letztes Anderungsdatum und Name der Datei Zusatzlich werden pro Datei o das Erstellungsdatum und das letzte Zugriffsdatum festgehalten und eine Adresse vermerkt, wo auf der Platte (Dateisystem) der Dateikopf der Datei zu finden ist. Der Dateikopf wird als inode bezeichnet. Die Adresse des Dateikopfes ist die inode-Nummer. Wir hatten zu Beginn das Dateisystem unter UNIX mit dem Ablagesystem eines Schrankes verglichen. Stellen Sie sich vor, daB so ein Schrank systematisch in gleiche Ablagefacher oder Schachteln aufgeteilt wird. Um sich zurechtzufinden, mOBten Sie aile diese Schachteln durchnumerieren. Ahnlich wird eine Platte, bevor sie als Dateiablagesystem benutzt werden kann, aufgeteilt. Die Aufteilung einer Platte wird als Formatierung bezeichnet. Bei einer Formatierung wird die Platte in Blocke unterteilt und diese werden mit PrOfsummen und Blocknummern versehen. Zusatzlich wird in der Regel OberprOft, ob aile Blocke fehlerfrei beschrieben und gelesen werden konnen. Danach erst kann ein Dateisystem eingerichtet werden. Dies wird zumeist bei der Installation eines Systems durch den Systemverwalter erfolgen. Es wird angegeben, wie groB das Dateisystem ist (Anzahl der Blocke). Das Programm mkfs (make filesystem) errechnet die maximale Anzahl der moglichen Dateien und legt eine Liste mit den noch freien Platzen an. Die reservierten Platze sind 167
3 UNIX - praktisch angewandt ahnlich wie im Theater durchnumeriert. Die Nummern werden als ,inode-Nummer, bezeichnet. Um sich die inode-Nummer einer Datei und die Anzahl der benotigten Blocke anzeigen zu lassen, kann das Is-Kommando mit der Option Is -/is (I -long, ; inode, s - size) verwendet werden. $ Is -lis I1799 Referenzzahler ~ink count) gieiChe Inode-Nummer 1799 1 1 1804 1810 1826 1828 24 I inodeNummer \ -rw-,--,--rw-,--,--rw-,--,--rw-,--,--rw-,-,-rw-rw-,-I / Zugriffsrechte Blockanzahl fje 512 Bytes) I - =2: Hinweis, daB 2 Dateinamen existieren derselbe Dateiinhalt 2 monika 2 monika kurs kurs monika kurs kurs kurs kurs 1 monika 1 monika 1 monika I I 29 29 22 245 245 12489 Benutzer- Gruppe name des Dateibesitzers Dirt 19 Dirt 19 18:10 Datum 18:10 datum Dirt 19 Dirt 19 Dirt 19 18:10 18:10 18:10 18:10 Olrt 19 / inhaJt neu neue, uebl Datum der letzten Anderung GrOBe in Bytes Name der Datei Bild 3 -116: Beispiel Anzeige der Dateien mit weiteren Datei-Attributen (Is -/is) Bei dem obigen Beispiel erkennen wir, daB die Dateikopfe ,Datum' und >datum, die gleichen inode-Nummern aufweisen und somit auf ein und denselben Dateiinhalt verweisen. Fassen wir die weiteren Optionen des Kommandos Is nochmals zusammen: 168
Dateiverwaltung und -pflege Is [-IFRaidst] I Ilist (listen, anzeigen) 3.4.3 [Directory oder Dateinamen] I Itime Die Ausgabe der Liste wird nach dem Anderungsdatum der Dateien sortiert ausgegeben size Es werden zusatzlich die benotigten Blocke (ie 512 Bytes) angezeigt directory Die Abfrage bezieht sich nur auf das Directory, nicht auf die in dem Directory enthaltenen Dateien inode Die Adresse (inode-Nummer) wird angezeigt al/ Aile Dateien werden angezeigt, auch die, die mit einem Punkt beginnen und sonst nur fOr den Systemverwalter sichtbar sind Rekursiv Liste eines Dateibaumes Format short Kurzformat, Directories sind mit ,I, gekennzeichnet, Kommandostrings mit * (ausfOhrbare Dateien) long format Anzeige der Dateien mit den Attributen: Dateityp, Zugriffsrechte, Aeferenzzahler, Name und Gruppe des Dateibesitzers, GroBe der Datei in Bytes, letztes Anderungsdatum und Name der Datei Es gibt Obrigens ca. 18 unterschiedliche Optionen zu /5, hier sind nur die aufgefOhrt, die fOr Sie von Bedeutung sein konnten. Wenn Sie darOber mehr erfahren mochten, rufen Sie man Is auf. 169
3 UNIX - praktisch angewandt 3.4.4 Dateitypen unter UNIX Bisher haben wir >normale Dateien. - gekennzeichnet mit >-. - und Directories gekennzeichnet mit >d. - kennengelernt. Eine Besonderheit unter UNIX ist, daB auch Gerate wie Drucker, Platten, Terminals, ahnlich wie Dateien behandelt werden. Diese Dateien sind unter dem Directory Idev (devices) abgelegt. Sie haben bereits einige >Geratedateien' kennengelernt. Erinnern Sie sich noch an Idevlnull? Oder die Antwort des Rechners auf Ihre Frage tty z. B.: Idevltty11. Sehen Sie sich Ihr Directory Idev einmal an. Jeder Rechner (Rechnertyp) arbeitet mit unterschiedlichen Geraten. Deshalb werden Sie auf Ihrem Rechner moglicherweise andere Informationen finden, als wir sie hier an unserem Beispiel zeigen. Ein kleiner Ausschnitt der Liste reicht, um auf die abweichenden Merkmale zu normalen Dateien hinzuweisen: $ Is -Ii Idev 0 Oct 19 0 Ocl 20 226 C/W--W--W- 2 gisela kurs 204 CfW--W--W- 3 root bin 25, 0, 216 br--(-f-- 1 root bin 4, 258 c/w--w-w- 2 rool bin 13, 243 16 204 CfW-/W-/WCfW-/W-fW- rool rool bm bm root 204 CfW--W--W- 1 1 3 3 bm bm 17, 128 Oct I, 2 Oct 0, 0 Oct 0, 0 Oct 220 CfW--- "'01 CfW'fW-fW- 258 CfW--W--W- CfW--W--W- I' , root 0 Oct 25 7 Oct 20 8:00 blp 18:10 coruo' 13:25 hkD.O Bezelchnung z B. fur: Bitmap-Terminal System-Console 9:00 Ipl 20 18:10 21 21:0 I 20 18: 10 20 18; 10 nrstO null LJniTtnnter zu uhcher Name fur tty17 Streamer Papler1lorb syscon zu~uhche Besyst/y zelchnung fur Console I mon/Iea kurs I bemd kurs 13, 1 Ocl 19 13. 2 Ocl 19 8:00 ttyl1 8:00 IIy12 Terminal 11 Terminal 12 2 rool 13, 7 Oct 20 18:10 ttyl7 Terminal 17 I '--.- bin ,/ \ - . . . . . / InodeZugnffsrechte Name und Gruppe Nummer Reterenz- des Datelbesltzers zahler GerAte (Dateityp) c =character onented Zelchenwelse lesende und schrelbende Gerate ' Mod,flkallonsdatum , I Name der Dalel statt der byte-GroBe Sind hler 2 Nummern fur die SoftwareSteuerung der Gerale elngelragen (major und minor deVice number) b = block oriented Ole Eln- und Ausgabe auf dlese GerlUe wlrd gepuffert und blockwelse Ubertragen Bild 3 -117: Beispiel einiger Geratedateien (devices) (Teilanzeige von Is -Ii /dev) 170 Platte Laufw. 0, Bnhelt 0
Dateiverwaltung und -pflege 3.4.4 Die Geratedateien sind als Dateityp entweder mit c b fUr character oriented, zeichenweises Obertragen oder fUr block oriented, blockweises Obertragen der Ein- und Ausgabe (Lesen und Schreiben von ZeichenlDaten) gekennzeichnet. Zusatzlich ist in der Geratedatei enthalten, mit welcher Software (Driver) dieses Gerat betrieben wird (major device number). Die zweite Nummer (minor device number) sagt aus, wo sich das Gerat befindet. so hat das Terminal Nr. 11 die >minor device number, 1, dies bedeutet, das Terminal ist am 1. Steckplatz angeschlossen. Diese Angaben sind nur fOr den Systemverwalter von Interesse. Uns gibt diese Liste jedoch einige Informationen, die das gerade Gelernte vertiefen: FOr die ·console, wurden mit dem Kommando In zusatzliche Namen vergeben. Sie erkennen dies daran, daB auch fUr die Gerate .syscon, und .systty, die gleiche inode Nummer (204) angezeigt wird. Ebenso ist auch der Name Ip1 zusatzlich dem Gerat tty17 vergeben worden (inode Nummer 258). Fassen wir vorab kurz zusammen, welche Dateitypen es unter UNIX gibt: Normale Dateien, Directories und Gerate (auch special files genannt). Die Gerate werden unterschieden nach c (character oriented) und b (block oriented) je nach Obertragungsmodus. Es gibt, dies sei der Volistandigkeit halber gesagt, noch einen weiteren Dateityp, der speziell fUr Programmierer interessant ist: die sog. named pipe. Diese Datei hat eine ahnliche Funktion (first in first out), wie wir sie beim Pipe-Mechanismus kennengelernt haben. Kennzeichen d c b p Dateityp normale Datei Directory symbolischer Link character oriented Zeichenweise lesende und schreibende Gerate block oriented Die Ein- und Ausgabe auf diese Gerate wird gepuffert und blockweise Obertragen named pipe Datei, die eine ahnliche Funktion zwischen Programmen Obernimmt, wie der Pipe-Mechanismus unter der Shell (first in first out) Bild 3 - 118: Kennzeichen der Dateitypen 171
3 UNIX - praktisch angewandt 3.4.5 Ausdruck yon Dateien Geratedateien werden unter UNIX ahnlich behandelt wie normale Dateien. Standardeingabe und Standardausgabe sind unter UNIX das jeweilige Terminal des Benutzers. Die Standardausgabe konnten Sie mit dem Sonderzeichen > umleiten. Das Kommando, um den Inhalt einer Datei anzuzeigen, lautet cat. Mit dem Kommando cat Dateiname > /dey/Name des Druckers z. B. cat /usr/kurs/texte/sprueche > /deY/lp1 kennten Sie demnach den Inhalt von der Datei >sprueche< auf die Gerate-Datei /dev/lp1 umleiten. Doch wie schon im KapiteI3.2.2 (Ein- und Ausgabe der Shell) hingewiesen, besteht die Gefahr, daB zur selben Zeit ein anderer Benutzer ebenfalls eine Ausgabe auf den Drucker startet und die SprOche mit diesen Texten vermischt werden. Aus diesem Grunde wird hier ein sog. Spool-Programm (simultaneous peripheral operation online) eingesetzt. Ab UNIX, System V, gibt es das Spool-Programm Ip. Die Kommandosyntax hierzu: Ip I [-d Druckerbezeichnung] line printer spooler ZeilendruckerSpool-Programm I [On I xl Dateiname(n) number destination Zielvereinbarung Es werden x Kopien erstellt z. B. weitere dem Spool-Programm angeschlossene Drucker Ip - Kommando. um Dateien Ober ein Spool-Programm auszudrucken Dieses Programm erstellt Druckauftrage, die in eine Warteschlange eingereiht und der Reihe nach ausgegeben werden. Das Programm wird beim Hochfahren des Systems gestartet und wartet auf Druckauftrage. Jeder Benutzer kann Auftrage erteilen. Sind mehrere Drucker angeschlossen, so kann mit der Option -d die Bezeichnung des jeweiligen Druckers angegeben werden. Welche Drucker verfOgbar sind, kann vorab mit der Abfrage Ipstat -t angezeigt werden. Sobald Sie einen Druckauftrag mit Ip starten, erhalten Sie vom Spool-Programm Ihre >Auftragsnummer< angezeigt. Solange ihre Datei (oder Dateien) noch nicht vollstandig ausgedruckt sind, kennen Sie unter Angabe dieser Nummer den Auftrag stornieren (canceln). Das Kommando lautet hierfOr: cancel Druckauftrags-Nr. cancel - Kommando, um einen Ip-Druckauftrag abzubrechen 172
3.4.5 Dateiverwaltung und -pflege Sie konnen sich auch jederzeit den Stand (Status) der noch abzuarbeitenden Auftrage und die fOr das Spool-Programm installierten Drucker anzeigen lassen. Das Kommando hierfOr lautet: Ipstat ! [-tJ I total Gesamtanzeige Ip s tatus Statusanzeige des Spool-Programms Ipstat - Kommando, um eine aktuelle Anzeige des Spool-Programms Ip mit den noch offenen Druckauftragen zu erhalten Mit diesem Kommando konnen Sie sich mit der Option -t anzeigen lassen, ob das Spool-Programm Oberhaupt gestartet ist oder z. B.vorObergehend (vom Systemverwalter) gestoppt wurde (Scheduler running - not running). Weiterhin konnen Sie feststellen, auf welchen Drucker Ihre Auftrage ausgegeben werden, wenn Sie beim Ip-Aufruf keinen Ziel-Drucker (destination) angegeben haben. AuBerdem sehen Sie, welche Drucker fOr den Spooler angeschlossen sind, wie Ihre Bezeichnung lautet und ob sie bereit (enabled) sind. Ein Beispiel hierzu: / -- $ cd lusr/kurs/monikaltexte $ Ip kekse request id is Ip1-8 (1fi/e) $ Ipstat Ip1-7 /p1-8 gisela monika 1866 101699 "" Aufruf des Spool-Programms Meldung yom Pr~mm . unter welcher Auftragsnummer der I.Jnsch bearbeitet wird Anzeige der vorhandenen Druckauftrllge 8:47 8:48 Oct 26 Oct 26 $ Ipstat-t I Slatusanzeige (totaQ des Spool-Programms: Spool-Programm ist gestartet scheduler is running system default destmation: Ip1 Ohne Druckerangabe (-d) wird Ip1 device for Ip1 : Idevllp1 eingesetzl; Gerllt ist I dev/lp1 Auftrllge werden akzeptiert seit .. Ip accepting requests since Jun 12 13:38 - Drucker Ip1 ist bereit seit .... printer Ip1 is enabled since Oct 22 8.03 - noch vorhandene Druckauftrage 101699 Oct 26 monika Ip1-8 I - ) Bild 3 -119: Beispiel Ausdrucken von Dateien mit dem Spooler -Ip 173
3 UNIX - praktisch angewandt Auf manchen Systemen wird statt Ip das Kommando Ipr verwendet. Es hat in etwa die gleichen Funktionen. Ipr I line printer Dateiname(n) I Ipr - Kommando, um Dateien uber Spool-Programm auszudrucken analogzu Ip Die Aufrufe, um die bestehende Druckauftrage zu kontrollieren und zu loschen, lauten jedoch anders: Ipq I line printer queue Ipq - Kommando, um eine aktuelle Anzeige der mit Ipr gestarteten Druckauftrage zu erhalten analog zu Ipstat fOr Ip-Auftrage Iprm I Auftragsnummer I line printer remove Irprm - Kommando, um einen Druckauftrag, der mit Ip gestartet wurde, abzubrechen (analog zu cancel fOr Ip-Auftrage) 174
3.4.5 DateivelWaltung und -pflege Um Dateien fOr den Druck aufzubereiten, z. B. den Dateinamen als Oberschrift zu bringen, den Text mit Zeilennummern auszugeben und eine Seitennumerierung vorzunehmen, gibt es das Kommando pr (print). Es wird meist als Filterprogramm eingesetzt, d. h. Ober eine Pipe an den Spooler weitergegeben: pr sprueche lip - Sep 28 21 :32 1986 sprueche Page 1 Iss jeden Morgen einen lebenden Frosch ... 11_ '" Noch'n Spruch ••• Bi/d 3 -120: Beispiel Druckaufbereitung mit pr Ohne Angaben zusatzlicher Optionen wird im obigen Beispiel unsere Datei sprueche mit einer Kopfzeile versehen, die das letzte Anderungsdatum der Datei, den Dateinamen und eine Seitennumerierung enthalt. Das Kommando pr konnen Sie natOrlich auch verwenden, um sich eine Datei mit der Zusatzinformation am Bildschirm anzuzeigen. Sehen wir uns die wesentlichen Optionen yom Kommando pr an: pr [-In - on - wn - n Spaltenanzah/] Dateiname(n) J- I !t prm (length) Anzahl der Zeilen ( Seil enlange) (offset) Zeicheneinruckurlg vorn linken Rand eine Einheil entspricht einem ·m, I 1-9 Der Text wird in die angegebene Anzahl Spallen umgebrochen (numbering) Die Dalei wird mil Zeilennummern ausgedruckt (wIdth) Anzahl der Zeichen pro Zeile(Seilenbreile) pr - Kornrnando, urn Dateien fUr den Druck aufzubereiten Die Standardeinstellung fOr den Ausdruck von Dateien ist auf das amerikanische PapiermaB abgestimmt (11 inch hoch - dies entspricht mit der Randeinstellung: 66 Zeilen pro Seite und 72 Zeichen pro Zeile). Eine DINA4-Seite entspricht ca. 12 inch, und es werden etwa 72 Zeilen pro Seite gedruckt. Um den Ausdruck dem DINA4-Format anzupassen und zusatzlich eine Zeilennumerierung zu erhalten, wird das Kommando wie folgt aufgerufen: pr -172 -n kekse I Ip 175
3 UNIX - praktisch angewandt 3.4.6 Andern von Zugriffs- und Besitzerrechten Bei den kennengelernten Spool-Program men Ip und Ipr ist es auf manchen Systemen notwendig, daB die Zugriffsrechte bei den auszudruckenden Dateien auch fOr andere (fOr den Spooler) lesbar (readable bei other) sind. Sehen wir uns hierzu nochmal die Bedeutung der Zugriffsrechte an und lernen ein weiteres Kommando, mit dem die Zugriffsrechte geandert werden konnen. 1m Laufe der verschiedenen Beispiele mit Is -I ist Ihnen sicher aufgefallen, daB die Zugriffsrechte bei allen Dateitypen, die wir bisher kennenlernten, gleich aufgebaut waren. Sehen wir uns hierzu ein paar Beispiele an: Typ Geratedatei: c Besitzer Gruppe andere user group other r w- --- --- Die Benutzer der gleichen Grup'pe und andere dOrten auf diesem Gerat weder schrelben noch lesen. Typ Directory: d Besitzer Gruppe andere user group other r wx rwx r-x In dieses Directory dOrten aile mit cd wechseln (x) und die Dateien lesen (r). Neue Dateien anlegen und andern (w) dOrten nur der Besitzer und die Benutzer der gleichen Gruppe. Typ Dateien: - Besitzer Gruppe andere user group rw- rw- other r-- Diese Datei dart von allen gelesen werden. Verandert werden dart sie nur vom Besitzer oder von Benutzern der gleichen Gruppe. Typ - Besitzer Gruppe andere user group rwx rwx other r-x Diese Datei dart von allen gelesen und ausgefOhrt werden. Verandern durten nur der Besitzer und die Benutzer der gleichen Gruppe. Bild 3 -121: Beispiele Zugriffsrechte 176
3.4.6 Dateiverwaltung und ·pflege Versuchen Sie selbst aus den verschiedenen Anzeigen, die wir bisher mit Is -I angesehen haben, die Rechte zu unterscheiden: $ Is -i/dev erw------erw-rw-rw- 1 monika kurs 1 bernd kurs 13, 13, 1 Oct19 8:00 tty11 2 Oet19 8:00 tty12 erw--w--w- 2 root bin 13, 7 Oet20 18:10 tty17 $ Is -l/usr/kurs/monika drwxrwxr-x 2 monika kurs 32 Oet19 15:20 Texte drwxrwxr-x 2 monika kurs 32 Oet19 15:20 Uebungen $ Is -l/usr/kurs/monikalBefehle -r wxrwxr-x 1 monika kurs 45 Apr 2 15:20 siehern $ Is -l/usr/kurs/Uebungen 1 -rw-rw-r-- monika kurs 12489 Oet19 18:10 ueb1 Bild 3-122: Beispiel versehiedener Zugriffsreehte (Anzeige mit Is -I) Wenn Sie sich die Zugriffsrechte bei dem Terminal 11 (tty11) ansehen, so erkennen Sie, daB weder Benutzer der gleichen Gruppe noch andere Benutzer auf dieses Terminal zugreifen dOrien. Die Anderung der Zugriffsrechte fOr dieses Terminal wurde mit dem Ihnen bereits bekannten Kommando mesg n bewirkt. Nur wenn Sie Besitzer einer Datei oder eines Directories sind, konnen Sie die Zugriffsrechte andern. HieriOr wird das Kommando chmod (change modus) verwendet. Dieses Kommando konnen Sie unterschiedlich ausfOhren: 1. Ausfuhrung von chmod mit symbolischer Angabe: chmod wie I was ~ +~ fOr wen [ugo] -. [rw~] Dateiname(n) oder Directories I ~ I user I Iexecutable Besitzer group gleiche Gruppe other aile anderen ausfUhrbar write verandem. Schreiberlaubnis read Leserlaubnis + HinzufUgen - Wegnehmen =Absolut setzten chmod - Kommando, um Zugriffsrechte zu andern (symbolische Angabe) 177
3 UNIX - praktisch angewandt Mit dem chmod-Kommando verandern Sie die Zugriffsrechte von Dateien, wobei Sie angeben: fOr wen Besitzer (user), Benutzer der gleichen Gruppe (group) oder die anderen (other) ohne Angabe gilt die Anderung fUr aile wie ob die Zugriffsrechte + hinzugefOgt oder - entzogen (weggenommen) werden sollen (eins von beiden muB angegeben werden) ab Version VA gibt es auch = absolut gesetzt werden sollen was (um welche Rechte es sich handelt) Leseerlaubnis (read), Schreiberlaubnis (write) oder AusfOhrerlaubnis (executable) (mindestens eine Angabe muB gemacht werden). Soli z. B. die Schreiberlaubnis fOr aile Benutzer der gleichen Gruppe eingeraumt werden, so lautet das Kommando chmod g+w Dateiname [> Beachten Sie hierbei, daB zwischen den Angaben )g+w, (fOr wen, wie und was) keine Leerzeichen stehen dOrfen. Wenn Sie eine Anderung fOr aile Benutzer durchfOhren (fOr sich als den Besitzer, fOr die Benutzer Ihrer Gruppe und die anderen), z. B. eine Datei ausfOhrbar machen, dann konnen Sie entweder angeben: chmod ugo+x Dateiname oder chmod +x Dateiname Ohne Angabe )fOr wen, wird die Anderung fOr aile durchgefOhrt. Andern wir als Beispiel die Zugriffsrechte der Unter-Directories Texte und Obungen so ab, daB die Benutzer der gleichen Gruppe in diese Directories wandern konnen (cd), dort Dateien lesen aber keine Dateien verandern, loschen oder neuanlegen dOrfen. Fremde (die anderen) dOrfen weder in diese Directories gehen, noch Dateien lesen oder neue Dateien anlegen und schon gar nicht verandern oder loschen (dam it wOrde auch der symbolische Link aus unserem Beispiel Bild 3 -115 auf Seite 166, )den anderen, nicht erlauben, in dieses Directory zu gehen, obwohl in der Link-Datei aile Rechte gesetzt waren. Letztlich entscheidend sind die Zugriffsrechte der Originaldatei. 178
3.4.6 Dateiverwaltung und -pflege $ Is -I lusr/kurs/monika drwxrwxr-x drwxrwxr-x 2 2 monlka monlka $ chmod gp-W'" U· ohne Leerzeichenl $ chmod 6-rX T* U· $ Is -l/usr/kurs/monika drwxr-x--drwxr-x--- 2 2 monika monika kurs kurs 32 32 Oct 19 15:20 Texte Oct 19 15:20 Uebungen Fur Benutzer der gleichen Gruppe lj(Urs) und die anderen wird die Schreibertaubnis entzogen Fur aile anderen Benutzer wird die Ertaubnis fOr Lesen und AusfUhren (cd) entzogen kurs kurs 32 Oct 19 15:20 Texte 32 Oct 19 15:20 Uebungen Bild 3-123: Beispiel Andern der Zugriffsrechte mit symbolischer Angabe - chmod ugo+-rwx Sle sehen an dem vorigen Beispiel, daB Kombinationen von ugo und rwx erlaubt sind. Wichtig ist, daB bei der Angabe fUr wen, wie und was geiindert werden soli, keine Leerzeichen (blanks) zwischen den einzelnen Symbolen stehen dOrfen. Sie sehen auch, daB fUr diese Anderung zwei verschiedene Kommandos eingegeben werden muBten, da die >Gruppenmitglieder< und die >anderen< unterschiedliche Rechte erhalten sollen. Mit der zweiten Art, das Kommando chmod zu verwenden, liiBt sich die gleiche Anderung mit einem Kommando ausfUhren. Hierzu wird eine Zahl benotigt, die sich zugewiesenen Werten je Erlaubnisart errechnet. 2. Ausfuhren von chmod mit Zahlenwerten (Oktalzahl) chmod Oktalzahl Dateiname(n) oder Directories chmod - Kommando, um Zugriffsrechte zu andern (mit Oktalzahl) FOr die einzelnen Rechte werden folgende Werte vergeben: r read - Leseerlaubnis 4 w write - Schreiberlaubnis 2 x executable - AusfUhrerlaubnis 1 Werden in einer Datei aile Rechte gesetzt, ist der Wert 777. 179
3 UNIX - praktisch angewandt Zugriffsrechte (Modus) eingeteilt nach: Besitzer read lesen eICecute wite schreiben ausfilhren 2 4 1 andere Gruppe I user other group read lesen execute wite schreiben ausfilhren 4 2 7 read lesen 1 wite eICecute I. sch rei ben ausfilhren 2 4 1 7 7 Sollen die Rechte verandert werden, so wird nach den drei Unterteilungen Besitzer Gruppe andere die jeweilige Summe der zugewiesen Rechte eingesetzt. Dart z. B. der Besitzer lesen, schreiben und ausfOhren, die Gruppe nur lesen und ausfOhren, und die anderen nur lesen, so ergibt sich folgende Berechnung der Oktalzahl: Zugriffsrechte (Modus) 4 wite execute schreiben ausfuhren 2 1 read lesen 4 -- eICecute Mte schreiben ausfilhren 0 1 5 7 andere I group user read lesen eingeteilt nach: Gruppe Besitzer other read lesen 4 wile execute schrelben ausfuhren 0 0 4 Das Kommando wOrde in diesem Fall eingegeben werden mit: chmod 754 Dateiname(n) oder Directories Bild 3 -124: Beispiel Errechnung der Oktalzahl fUr Zugriffsrechte Sie geben bei dieser AusfOhrung des chmod-Kommandos nicht die Veranderung der Rechte, sondern den sich ergebenden Stand in Form des zugewiesenen Wertes (Oktalzahl) fOr aile drei Bereiche an. Die .Anderung, die wir vorhin mit chmod go-w T* U* chmod o-rx T* U* eingegeben haben, kann dann mit einem Kommando erreicht werden: 180
3.4.6 Dateiverwaltung und -pflege $ Is -l/usr/kurs/monika dfWxfWxr-x dfWXfWxr-X 2 2 moniJm monika $ chmod 750 T* U· kurs kurs 32 32 Oct 19 15:20 Texte Oct 19 15:20 Uebungen Errechnung der OktaJzahJ: Besitzer Gruppe andere r w x 4+ 2 + 1 =7 r - x 4+ 0 + 1 =5 0 +0+0 =0 $ Is -l/usr/kurs/monika dfWxr-x--dfWxr-x--- 2 2 monika mon/Im kurs kurs 32 Oct 19 15:20 Texte 32 Oct 19 15:20 Uebungen Bild 3 -125: Beispiel Andern der Zugriffsrechte mit Oktalzahl Wenn Sie als Besitzer bestimmte Rechte zuweisen k6nnen, so haben Sie selbstverstandlich auch das Recht, Ihren Besitz zu verschenken. Vorhin haben wir gesehen, daB beim Kopieren von Dateien jeweils derjenige der Besitzer der Datei wird, der das Kopierkommando ausfOhrt. WOrde Monika einem anderen Benutzer eine ihrer Dateien in sein Directory kopieren, bleibt sie Besitzer der kopierten Datei. Dabei spielt es keine Rolle, von wo sie den Kopierauftrag startet. D.h., auch wenn sie zuvor in sein Directory wechselt und dann kopiert, bleibt sie trotzdem alleiniger Besitzer der kopierten Datei: $ cd lusr/kurs/hans $ cp ..Imonika/Uebungen/neu geschenk $ Is -I dfWXfWxr-x -fW-f--f-dfWXfWXf-X 2 hans monlka 2 hans kurs kurs kurs 32 Aug 7 245 Nov 2 1985 befehle 12:28 geschenk 117 Spt 18:10 pro/ektS kopierte Datei. die .Hans, zwar Jesen. aber nicht verlindern durfte Bild 3-126: Beispiel Besitzrechte beim Kopieren von Dateien Nur Sie selbst als Besitzer oder der Systemverwalter k6nnen die Besitzrechte andern. Das Kommando hierzu: 181
3 UNIX - praktisch angewandt chown [- r] Besitzemame Dateiname(n) oder Directories I I 1 I L - - - - - ab der Version V.4 g b l t as auch die Mbgllchkeit, change owne, rekursiv aile Dateien eines Directories zu lIndern Wechsel des Besitzers chown - Kornrnando, urn Besitzrechte zu andern Um die kopierte Datei auf Hans umzuschreiben, ihm die 8esitzrechte zu Obergeben, muB Monika eingeben: $ chown hans geschenk $ Is -I $ drwxrwx,-x -rw-,--,-- 2 hans 1 hans drwx~ kurs kurs kurs 32 Aug 7 Nov 2 117 Spl 245 1985 be/ehle 12:28 geschenk 18:10 projektB Nun gehOrt die Dalel Hans, und Monika dart die Datei weder verllndern noch loschen. Bild 3-127: Beispiel Andem der Besitzerrechte - chown 182
3.4.7 Dateiverwaltung und -pflege 3.4.7 Suchen nach Dateien und Mustern in Dateiinhalten In diesem Kapitel haben wir zu Beginn Ordnung gemacht. Geht es Ihnen manchmal auch so, daB Ihnen momentan nicht einfallt, wo Sie etwas hingeraumt haben? Auch fOr diese Situation gibt es unter UNIX hilfreiche Dienstprogramme. Nehmen wir an, wir wissen, daB wir eine Datei mit dem Namen ,sichern· hatten. Wir k6nnen uns aber nicht mehr erinnern, unter welchem Directory sie abgelegt ist. Wo fangt man an zu suchen? Nun, wir k6nnten bei unserem Home-Directory beginnen, mit Is uns die Dateien anzeigen lassen und aile vorkommenden ,Unter-Directories. auf die gleiche Weise durchforsten. Genau diesen Vorgang kann uns das Kommando find abnehmen. Das find-Kommando hat allerdings seine Besonderheiten: o Sie mOssen unbedingt angeben, von wo ab im Dateibaum gesucht werden soli (Start-Directory). ODie Optionen werden nicht abgekOrzt sondern ausgeschrieben. o Wenn Sie ein Ergebnis angezeigt haben wollen, mOssen Sie dies dem Kommando explizit angeben (Ausgabeart). Doch sehen wir uns hierzu die Syntax (Regeln) an: find Start-Directory [ SUC,kriterienIMuster) I I I relativer oder absoluter Pfadname des Directories. von dem ab gesucht werden sOli. auch fOr das aktuelle Directory muB dann der Punk! (. )angegeben werden [ Ausgabeart ) I I -print -name Dateiname -user Benutzername -mtime n (Anzahl der Tage) -newer Dateiname Anzeige der gefundenen Dateien -exec Befehl "." (ausfiihren) , AusfOhrung der nachfolgenden Befehle Ohne Angabe von Suchkriterien werden aile Dateien gesucht und mit der Ausgaooart .-print. angezeigt. find - Kommando, um Dateien zu suchen und zu finden Beispiel: find lusrlkurs Start-Directory +- -name sichern -print Suchkriterium .,. Ausgabeart 183
3 UNIX - praktisch angewandt Das find-Kommando geh6rt zu den schwierigeren Kommandos unter UNIX. Jede einzelne Position des Kommandos hat ihre Besonderheiten. Betrachten wir diese der Reihe nach: Start-Directory Es muB unbedingt angegeben sein. Wenn Sie von Ihrem aktuellen Directory suchen wollen, muB zumindest ein Punkt als Kennzeichnung des Start-Directories angegeben werden. Die Pfadbezeichnung wird in gleicher Form den gefundenen Dateien mitgegeben. Haben Sie das Start-Directory mit einem >.< angegeben, beginnen die gefundenen Namen eben so mit .I z. B. .!Befehle .!Texte usw. Wurde als Start-Directory lusrlkurs angegeben, so werden die gefundenen Dateien ebenfalls mit dem absoluten Pfadnamen ausgegeben z. B. lusrlkurslmonikalBefehle lusrlkurslmonikalTexte, usw. Sie k6nnen auch mehrere Start-Directories angeben. Diese werden nacheinander, rekursiv durchsucht. 184 Suchkriterien Wie auch bei anderen Kommandos sind hier nur die Optionen ausgewahlt worden, die haufig ben6tigt werden. Zu ihnen gehOren (Bei den nachfolgenden Beispielen wird einfachheitshalber jeweils vom aktuellen Directory ausgehend gesucht): -name datei Der Dateiname wird durch ein Leerzeichen getrennt gleich nach der Option -name eingegeben. Hierbei k6nnen Metazeichen wie *, ?, [1 verwendet werden. Es ist jedoch wichtig, diesen mit Metazeichen versehenen Namen in AnfOhrungszeichen zu setzen, damit er nicht sofort von der Shell ersetzt wird, sondern dem find-Kommando Obergeben werden kann. Soli ab dem aktuellen Directory nach allen Namen gesucht werden, die mit >n< beginnen, so wird eingegeben: find . -name "n*" -print -user benutzer Auch hier wird anschlieBend an die Option der Name des Benutzers (so wie er in der Datei letc/passwd eingetragen ist) angegeben. Hier dOrfen keine Metazeichen verwendet werden, da es sich hierbei nicht um einen Dateinamen handelt! Das find-Kommando sucht dann aile Dateien, dessen Besitzer der angegebene Benutzer ist. -mtimen (modification date). Mit dieser Option werden Dateien mit einem bestimmten Modifikationsdatum gesucht. Unter
Dateiverwaltung und -pflege -mtimen (Fortsetzung) 3.4.7 n wird hierbei die Anzahl der Tage angegeben, die zur Ermittlung des gesuchten Datums fUhrt. Ohne Angabe eines Vorzeichens werden aile Dateien gesucht, die genau vor n Tagen verandert wurden. Soli z. B. nach allen Dateien gesucht werden, die genau vor 2 Tagen verandert wurden, wird eingegeben: find . -mtime 2 -print -mtime -n Es wird nach allen Dateien gesucht, die innerhalb der n Tage verandert wurden. Sollen beispielsweise aile Dateien, die innerhalb der letzten 7 Tage verandert wurden, gesucht werden, so wird eingegeben: find . -mtime -7 -print -mtime +n Es wird nach Dateien gesucht, die vor n Tagen und noch fruher verandert wurden. Wollen Sie feststellen, welche Dateien Sie vor einem Monat und noch frOher verandert haben, so geben Sie ein: find . -mtime +30 -print -newer datei Mit dieser Angabe wird nach allen Dateien gesucht, die ein jungeres (neueres) Modifikationsdatum aufweisen als die angegebene Datei. Mochten Sie z. B. aile Dateien suchen, die Sie seit Ihrer letzten Sicherung verandert oder neuerstellt haben, so konnen Sie auf eine Datei abprOfen, die Sie zum Zeitpunkt der Sicherung erstellt haben (z. B. sichlog). Die Eingabe lautet dann: find . -newer sichlog -print Ausgabeart Bei den obigen Beispielen haben Sie sicher bemerkt, daB bei -print allen Aufrufen -print angegeben wurde. Sollten Sie vergessen, -print anzugeben, dann konnen Sie nicht sehen, welche Dateien gefunden wurden. Bei einigen Systemen wird die Ausgabeart print generell gesetzt. -exec (execute - ausfiihren). Mit dieser Ausgabeart konnen Sie eine Kommandofolge angeben, die nach dem Suchvorgang durchgefUhrt werden soil. Hierbei konnen die gesuchten Dateien als Parameter (bzw. im Pipe-Mechanismus) Obergeben werden. Das Einsetzen der gefundenen Dateien wird mit der Zeichenfolge "0" erreicht. Diese Option ist jedoch etwas kompliziert. Sie verlangt exakt die Einhaltung bestimmter Regeln: 185
3 UNIX - praktisch angewandt -exec Fortsetzung -exec Kommando "0" ";" Statt der in AnfOhrungszeichen gesetzten geschweiften Klammern werden die gefundenen Dateien an dieser Stelle eingesetzt. Das find-Kommando ist trotz seiner ,Feinheiten- ein sehr haufig benutztes und wichtiges Kommando. Sie werden es hauptsachlich fOr die Sicherung Ihrer Dateien ben6tigen. Beachten Sie hierbei, daB die gefundenen Dateien immer mit der gleichen Pfadbezeichnung beginnen, mit der Sie das Start-Directory angesprochen haben. Sehen wir uns hierzu einige Beispiele an: $ find lusr/kurs -name sicher -print lusrlkurslmonikalBefehlelsicher - Angabe des gefundenenDateinamens mit dem absoluten Pfadnamen /usr/kurs ... lusrlkurslmonika $ find. -name "s*" -print .lTextelsprueche .IBefehlelsicher $ find. -print _ _ _ _ _ __ .lProjektA .lProjektAlbeispiel.c .IProjektAlio.c .lProjektAlpro. c .ITexte .ITextelkekse .ITextelsprueche .IUebungen .IUebungenlDatum .lUebungenlinhalt .IUebungenlneu .IUebungenlneuer .IUebungenlueb 1 .IUebungenldatum .IBefehle .lBefehlelsicher Suche nach allen Namen mit '5- beginnend Angabe der gefundenenDateinamen mit dem relativen Pfadnamen ab Such posit ion j $ cd $ pwd Anzeige aller Dateien mit dem Pfadnamen ab Suchposition. die rekursiv in dem angegebenen Directory gefunden wurden . Bild 3 -128: Beispiel Suchen und Finden von Dateien - find Wenn Ihnen etwa nur der Anfangsbuchstabe einer Datei eintallt, nach der Sie suchen, so ist dies fOr das find-Kommando auch kein Problem. Sie k6nnen auch Verknupfungen von Abfragen eingeben. Unter dem Anfangsbuchstaben ,n- haben Sie vielleicht mehrere Dateien. Sie wissen aber, daB Sie die gesuchte Datei in den letzten 10 Tagen verandert haben. Geben Sie mehrere Suchkriterien an, so bedeutet dies, daB aile Angaben erfullt sein mussen. Bei der Eingabe von find. -name "n*" -mtime -10 -print mussen die zu suchenden Dateien mit n beginnen und zusatzlich innerhalb der letzten 10 Tage verandert worden sein. 186
3.4.7 Dateiverwaltung und -pflege Eine oder-VerknOpfung ist m6glich durch die Option -0. Wenn Sie Dateien suchen, die entweder mit ,n< oder mit ,s< beginnen, also beide angezeigt werden sollen, lautet der Aufruf find. "(" -name "n*" -0 -name "s*" ")" -print Die Klammer wirkt hier ahnlich wie in der Mathematik. Wichtig ist hierbei, daB die Klammer in AnfLihrungszeichen steht und mit Leerzeichen von den anderen Eingaben getrennt wird, dam it sie an das find-Kommando weitergegeben und nicht vorab durch die Shell interpretiert wird. Um die Sonderbedeutung der Klammer fOr die Shell zu unterbinden, kann auch das Fluchtsymbol \ jeweils vor die Klammer gesetzt werden: find. \( -name "n*" -0 -name "s*" \) -print Wenn nicht nur die gefundenen Dateinamen mit der Pfadbezeichnung angezeigt, sondern zusatzlich auch die Merkmale der Datei mit Is -I angezeigt werden sollen, so k6nnen Sie dem find-Kommando diese Aufgabe Ober die -exec-Anweisung mitgeben: $ pwd Die AnfOhrungszeichen mOssen eingegeben werden, damit Sonderzeichen nicht von der Shell vorab interpretiert werden. Wichtig sind auch die Leerzeichen zwischen den einzelnen Eingaben! lusrlkurslmonika / \ $ find. -name" n.. 11 -print -exec ./Uebungenlneu -rw-r--r-1 monika kurs ./Uebungenlneuer -rw-r--r-1 monika kurs IS-I ' {t~ 19 I Aile gefundenen Dateien werden nacheinander als Parameter Obernommen neu neuer Ohne Angabe von -print wird nur das nachfolgende Kommando durch -exec ausgefOhrt $ find. -name "n*" -exec Is -I "{ }" -rw-r--r--rw-r--r-- 1 monika 1 monika kurs kurs It. II • 245 Okt 19 18:10 neu 245 Okt 19 18:10 neuer Ab Version V.4 kann das Kommando Is -I gleich als Ausgabefunktion angegeben werden : $ find. -name "n· II -Is Sollen die gefunden Dateien gelbscht werden, wird angegeben: $ find. -name "*.bak" -exec rm -i "{}" u ... • Bild 3-129: Beispiele Suchen und Finden von Dateien (find mit -exec Funktion) Das find-Kommando ist, wie wir in den beiden letzten Beispielen gut sehen konnten, leider nicht sehr einfach. Lassen Sie sich deshalb nicht entmutigen, wenn Sie nicht gleich beim ersten Mal Erfolg haben. 187
3 UNIX - praktisch angewandt Bei solch langen Kommandos wurde vielleicht eine Leerstelle zu wenig eingegeben oder das schlieBende AnfOhrungszeichen vergessen, oder nicht angegeben, was mit den gefundenen Dateien geschehen soil. Ein weiterer Trost: 1m Kapitel 3.7 Shell-Prozeduren lemen Sie u.a., wie Sie lange Kommandos, die Sie haufig benetigen, in eine Datei schreiben und dann nur noch mit dem Namen dieser Datei aufrufen kennen. 1m Kapitel Sicherung werden wir dann das findKommando mit weiteren Anwendungsbeispielen zeigen. Ein weiteres Kommando, das Ihnen hilft, Dateien wiederzufinden, ist grep I I . g et regular exp ression [-nilvwhJ I "Muster II Dateiname(n) Ih eader der Dateiname wird nicht mit ausgegeben w ord Such muster muB ein einzelnes Wort sein invert gibt aile leilen aus, die nicht dem Muster entsprechl l ine nur die Dateinamen werden angezeigt i gnore case GroB- und Kleinbuchstaben gleichbehandeln numerierte lellenanzeige der gefundenen lei len in einer Dalei grep - Kommando, um nach Mustern in Dateiinhalten zu suchen Erinnern Sie sich, dieses Kommando haben wir schon kurz im Kapitel ,Es shellt, angesprochen. Falls Sie sich weder an den Dateinamen, noch an einen Teil des Namens erinnern, aber wissen, daB es sich bei dem Dateiinhalt um einen Text handelt, in dem z. B. ,Frosch, vorkommt, dann kennen Sie mit Hilfe des grepKommandos danach suchen. In "Muster" kennen Metazeichen und regulare Ausdrucke wie im ed/vi verwendet werden (siehe Bild 3-90 auf Seite 134). Durch die Sonderzeichen " " wird erst das Kommando find ausgeliihrt und aile getundenen Daleien als Parameter dem Kommando grep ubergeben. (ErselzungsmechaI nismus der Shell) $ grep "Frosch" "find. -print" .lTexte/sprueche: Iss jeden Tag einen lebenden Frosch - $ grep -n " Frosch" " find. -print" .lTexte/sprueche: 1: Iss jeden Tag einen lebenden Frosch - I Mil Anzeige der laufenden leilennummer $ find. -exec grep -n "Frosch" "0" \j 188 (nur liir ca. 50 Daleien) andere Form der Eingabe Bi/d 3 -130: Beispiel Suchen und Finden von Dateiinhalten - grep
3.4.7 Dateiverwaltung und -pflege Bei der Vielzahl von Dateien, die Sie im Laufe Ihres ,Lebens mit UNIX, anlegen und aufraumen werden, konnte es auch passieren, daB Sie sich an eine Datei nicht mehr erinnern und partout nicht wissen, was sich in dieser Datei verbirgt. Hier hilft Ihnen das Kommando file I Datei Dateiname(n) I file - Kommando, das versucht, den Inhalt einer Datei zu klassifizieren Ais file wird im Englischen eine Datei bezeichnet. Das Kommando file versucht aufgrund der Anfangsdaten herauszufinden, um welchen Inhalt es sich bei der angegebenen Datei oder den Dateien handelt. Hier einige der Klassifizierungen, die file aufgrund der Anfangsdaten einer Datei vornimmt: Erkennung assembler program ascii-text c program text commands text Bedeutung Quelltext eines Assemblerprogramms Normale Datei mit Text Quelltext eines C-Programms Shellprozedur (Datei mit Kommandos) data Datei mit nicht druckbaren Zeichen (Biniircode) empty directory fortran program leere Datei Directory Quelltext eines Fortranprogramms $ cd lusr/kurs/monika Versuch, den Inhalt von $ file 'find. -print' Daleien zu klasslfizleren .: lusrlkurslmonika directory c program text .IProjekWbeispiel. c: c program text .IProjekWio.c .IProjekWpro.c c program text .lTexte: directory .lTextelkekse: English text Es handell Sich hierbel z. B . .ITexte/sprueche: English text nicht um enghschen. sondem .IUebungen: directory .IUebungenlDatum: ascii text um deutschen Text .IUebungenlinhalt: ascii text .IUebungenlneu. English text .IUebungenlneuer: English text .IUebungenlueb 1: empty .IUebungenldatum: ascii text .IBefehle: directory .IBefehle/sicher: commands text Bild 3 - 131: Beispiel Versuch einer Dateiklassifizierung - file 189
3 UNIX - praktisch angewandt 1m Laufe von Tagen, Wochen und Monaten sammeln sich eine ganze Reihe von Dateien an, die oft nicht mehr benotigt werden. Spatestens wenn der Systemverwalter eine Meldung auf der Systemconsole erhalt, die in etwa lauten konnte no space on Idevlhd1 (dies bedeutet: kein Platz mehr auf der Platte - und damit sic her auch kein SpaB mehr auf der Platte), ja dann bleibt nichts anderes Obrig, als eine Sauberungsaktion durchzufOhren. Je nach System sind die Platten unterschiedlich bezeichnet. Lassen Sie sich am besten von Ihrem Systemverwalter die Aufteilung der Platten Ihres Rechners zeigen. In der Regel wird eine physikalische Platte in mehrere Partitions aufgeteilt, die dann jede fOr sich als eigene ,Platte< behandelt wird. Meist sind dann die Plattenbezeichnungen entsprechend numeriert wie Idev/hd1 , /dev/hd2 usw. Bei den spater behandelten Kommando df sehen Sie u.a., welche Platten in Ihrem Rechner zur VerfOgung stehen (>mantiert, sind - bei dem Kapitel 3.5 Sicherung werden Sie das Kommando mount kennenlernen, das hierfOr verwendet wird). Kein Platz auf der Platte kann unter Umstanden bei bestimmten Anwenderprogrammen dazu fOhren, daB die letzten Veranderungen nicht mehr gesichert werden konnten und veri oren sind. Normalerweise wird der Systemverwalter dafOr sorgen, daB jeweils genOgend Platz frei ist und die Benutzer u.U. auffordern, nicht mehr benotigte Dateien zu loschen. Es schadet jedoch nichts, wenn Sie selbst prOfen, wieviel Platz Ihnen noch zur VerfOgung steht, bzw. wieviel Platz Sie benotigen oder verbraucht haben. 3.4.8 Oberprufen der Platten- oder Floppy-Belegung Wie konnen Sie feststellen, wieviel Platz Ihnen noch auf der Platte (den Platten) oder auf der Floppy zur VerfOgung steht? HierfOr gibt es zwei kleine Kommandos, die Sie sich leicht merken konnen: du [-5] disk used (plattenbelegung) I I [ Directory] sum nur Gesamtsumme des Datelbaumes, ab angegebenem DIrectory du - Kommando, um den belegten Platz (Blockanzahl) anzuzeigen (bei groBeren Dateibaumen kann dieses Kommando u.U. sehr lang dauern - also Geduld) und das GegenstOck dazu: 190
3.4.8 Dateiverwaltung und -pflege df disk'ree I (freie Plattenkapazitat) [-t] [Platte] I total Anzeige der freien Blocke je montierter Platte und Gesamtanzahl der Plattenkapazitat df - Kommando zur Anzeige der frei zur Verfugung stehenden Blocke aller im System montierten Platten/Floppies Auf einer GUUG-Tagung (German UNIX User Group) wurde zur Aufheiterung eine Knobelecke eingerichtet, in der neue Begriffserlauterungen fOr UNIX-Kommandos gesucht wurden. Pramiert wurde u.a. das Kommando du - Deine Untaten. Sehen wir uns also unsere bisherigen Untaten an, und stell en wir fest, wieviel Platz wir noch zur VerfOgung haben. Hier ein Beispiel des Seminarrechners, auf dem auch dieses Buch ursprOnglich entstanden ist (Auf Ihrem Rechner sind, wie schon erwahnt, die Plattenbezeichnungen sicher anderslautend): $ cd /usr/kurs/monika $ du .lProjektA 5 .lTexte .lUebungen .lBefehle 204 5 2 217 Summe der belegten BIOcke - - - - - - fUr den gesamten Datelbaum ab lusrlkurslmonika $ df-t lusrlkurs /usr I Anzeige der belegten BIOcke je Directory innerhalb des Dateibaumes F (ldev/iwO. 1) total: (ldevliwO.3) total: (ldevliwO.O) total: 2386 blocks 10240 blocks 16088 blocks 81032 blocks 7438 blocks 16384 blocks 703 1280 7099 10128 1772 2048 i-nodes- frei i-nodes - gesaml i-nodes i-nodes i-nodes i-nodes Namen der Platten Bild 3-132: Anzeige der freien und belegten PlattenkapaziUit Das Directory lusr/kurs ist in dem obigen Beispiel vom Systemverwalter auf eine eigene Platte mit dem Namen /dev/iwO.1 gelegt worden. In diesem Directory sind bereits 10240 - 2386 = 7854 Blocke je 512 Bytes belegt worden. Die wichtigste Aussage ist fOr uns, daB noch 2386 Blocke frei sind und wir noch maximal 703 Dateien auf dieser Platte anlegen konnten. Bei einigen Systemen konnen Siemit df-k die Gesamtanzeige in Kilobyte abfragen. 191
3 UNIX - praktisch angewandt Die wichtigsten Dateiverwaltungskommandos haben Sie damit kennengelernt: o Sie wissen, wie neue Directories (Unter-Directories) angelegt werden und wie Sie Directories loschen konnen; o o wie Sie Dateien kopieren, umbenennen und loschen konnen; o o Sie konnen sich jederzeit die wesentlichen Merkmale einer Datei ansehen; den Inhalt einer Datei ausdrucken lassen; Sie konnen die Zugriffsrechte und Besitzrechte Ihrer Dateien und Directories verandern; o Sie konnen nach bestimmten Kriterien Dateien suchen oder Inhalte aus Dateien wiederfinden, und o den Inhalt einer Datei versuchen zu klassifizieren. 3.4.9 Zusammenfassung der Kommandos Kommandoeingabe Funktion mkdir [-p] Directory-Name(n) make directory Legt Directories neu an -p pass noch nicht vorhandene Unter-Directories werden mit angelegt Soweit noch nicht vorhanden werden die Directories lusr/kurslben01 lusr/kurslben01/Uebung angelegt Beispiel: cd lusrlkurs mkdir -p ben011Uebung Uotcr DOS: mkdir, md rmdir Directory Unter DO : mtdir (rd) cp [-i] Dateialt Dateineu cp [-i] Datei1 Datei2 ... Directory cp [-ir ] Directory Directory 192 Umer DOS: copy, xcopy remove directory Loscht Directories, die keine Dateien mehr enthalten copy Kopiert eine oder mehrere Datei(en) in ein anderes Directory -i interactive Falls eine Datei mit gleichem Namen schon existiert, wird nachgefragt, ob uberschrieben werden darf -r recursive Der gesamte Dateibaum wird kopiert
3.4.9 Dateiverwaltung und -pflege Kommandoeingabe Funktion nn [-] [-fir] Dateiname(n) remove - /oschen Loscht Dateien (unwiederbringlichl) - ohne weitere Angabe Die nachfolgenden evtl. mit ,-< beginnenden Namen sind keine Optionen (sondern z. B. versehentlich mit ,-< beginnend angelegte Dateien) -f forced - verstarkt Auch bei Dateien, die schreibgeschutzt sind, wird ohne Nachfrage geloscht -i interactive die Loschung muB erst mit .y. bestatigt werden -r rekursiv Vorsicht! Loscht radikal aile Dateien und evtl. Unter-Directories! UmcrDO : del mv -i dateialt dateineu mv -i datei1 datei2 ... Directory UmerDO . reo (renam ) In [-5] Origina/datei Unkname In -5 Original-Directory Unk-Directory move, bewegen Andert einen Dateinamen oder verschiebt Dateien in ein anderes Directory -i interactive Eine bereits bestehende Datei wird nur dann uberschrieben, wenn dies mit y bestatigt wird link Vergibt Dateien zusatzliche Namen bzw. verweist auf eine andere Datei oder ein anderes Directory Der lokale Link (ohne os) kann nur auf Dateien innerhalb der gleichen Plattenpartition erfolgen -5 symbolic link Das Link-Directory soli mit vollem Pfadnamen eingetragen werden. Der symbolische Link wird als eigener Dateityp mit I (klein L -link) gekennzeichnet 193
3 UNIX - praktisch angewandt Kommandoeingabe Is -(abdFilRst) Unleroo : dir tree Ip (-dDlVckername) Dateiname UnrerooS: print cancel DlVck-Auftragsnr. Beispiel: cancel laser-124 Unl rOO : Ipstat 194 type/c Funktion list Zeigt den Inhalt von Directories bzw. Attribute von Dateien -a all Auch die mit Punkt beginnenden Dateien (.profile ... ) werden angezeigt -b binary Zeigt auch nicht darstellbare Zeichen am Bildschirm an -d directory Zeigt nur das Directory (nicht seinen Inhalt) an -F Format short Directories sind mit "I" gekennzeichnet, ausfOhrbare Kommandos/Programme mit "''', symbolische Links mit "@" -i inode Die Adresse (inodeNummer) wird angezeigt -I long format Anzeige mit Attributen Der Dateibaum mit samt-R Rekursiv lichen Unter-Directories wird angezeigt -s size Es werden zusatzlich die benotigten Blocke a 512 Bytes angezeigt -t time Die Liste wird chronologisch sortiert ausgegeben line printer Erstellt einen Druckauftrag fOr den IpSpooler -d destination Mit -d,Druckerqueue, kann ein Zieldrukker angegeben werden, soweit mehrere Drucker eingerichtet wurden annullieren, abbrechen Loscht mit Ip gestartete Druckauftrage Auftrags-Nr. fOr Drucker-Queue laser line printer status Zeigt aile mit Ip gestarteten Druckauftrage und deren Status an (analog Ipq fOr Ipr-Auftrage)
3.4.9 Dateiverwaltung und -pflege Kommandoeingabe Funktion line printer Erstelit einen Druckauftrag fUr den Ipq-Spooler (wird manchmal statt Ip verwendet) Ipr Unter DOS: print Ipq line printer queue Zeigt die Queue der mit Ipr gestarteten Druckauftrage an (analog Ipstat fUr Ip-Auftrage) Iprm Auftrag-Nr. line printer remove Loscht mit Ipr gestartete Druckauftrage pr [-In -on own -n Spaltenanzah/] \ print Dateiname(n) Bereitet Dateien fOr den Druck auf -I length Anzahl der leilen (Seitenlange) -0 offset leicheneinrOckung yom linken Rand (eine Einheit entspricht einem m) -w width Anzahl der leichen pro leile (Breite) -n numbering Die leilennummern werden mit ausgedruckt 1-9 (Spaltenanzahl) Der Text wird in die angegebene Anzahl Spalten umgebrochen chmod [-R] Directories Art Dateinamenl fUr wen wie was I I I chmod ugo :- rwx Dateinamenl Directories change modus Andert die Zugriffsrechte Art: symbolisch oder Ober Oktalzahl -R Rekursivdie Anderung erfolgt fOr aile Dateien/Unter-Directories Andert die Zugriffsrechte mit symbolischer Angabe user der Dateibesitzer die gleiche Gruppe group other aile anderen hinzufOgen + wegnehmen read Leseerlaubnis write Schreiberlaubnis execute ausfOhrbar 195
3 UNIX - praktisch angewandt Kommandoeingabe Funktion chmod Oktalzahl Dateinamen/Directories Errechnung der Oktalzahl Andert die Zugriffsrechte mit Oktalzahl r w x read 4 write 2 executable1 Beispiel: chmod 750 ben01 Das Directory erhalt die Zugriffsrechte: drwxr-x--- chown [-R] Benutzer \ Dateinamen/ Directories change owner Andert den Besitzer -R Rekursiv Die Anderung erfolgt fUr aile Dateien/Unter-Directories find Start Suchkriterien Ausgabe finden Sucht (findet) Dateien in Dateibaumen nach unterschiedlichen Suchkriterien Es muB ein Start-Directory angegeben werden (aktuelles Directory mit . angeben) Die Ausgabe muB bei den meisten Systemen noch mit -print angegeben werden Es wird eine Liste aller Dateien rekursiv durch aile Unter-Directories mit reJativem Pfadnamen ausgegeben Beispiel: find • -print Suchkriterien: -name Dateiname -mtimen -mtime -n -mtime +n -newer Datei -inum inode-Nr -mount 196 Besitzer Gruppe Andere r w x r-x --4+ 2+ 1 4+ 0+ 1 0+ 0+ 0 =5 =0 =7 Nach bestimmten Namen, Metazeichen ( *?[ ) )mit AnfUhrungszeichen eingeben Modifikationsdatum vor genau n Tagen innerhalb von n Tagen vor n Tagen und frOher neuer als die angegebene Datei mit der angegebenen inode-Nummer nur auf dem aktuellen (montierten) Plattenbereich Fortsetzung nachste Seile
3.4.9 Dateiverwaltung und -pflege Kommandoeingabe Funktion find Fortsetzung -user Benutzername Ausgabe: -print Dateien des angegebenen Benutzers Dateien werden mit absolutem Pfadnamen angezeigt -exec Kommando 0 \; -Is Logische Kombination -a -0 Beispie/e find. \( -name "a*" -a -user \ hans \) -exec head 0 \j find lusr \( -name core -0 \ -name "*.tmp" \) -exec rm 0 \; grep [hilnvw] Muster Dateiname(n) das Kommando wird mit jeder gefundenen Datei durchgefuhrt die gefundenen Dateien werden mit allen Attributen (wie Is -I) angezeigt Suchkriterien konnen logisch verbunden werden und-Verknupfung Suchkriterien klammern oder-Verknupfung Sucht nach Dateien, die mit a beginnen und "hans" gehOren. Von den gefundenen Dateien werden die ersten 10 Zeilen angezeigt Sucht ab lusr aile core-Dateien undloder Dateien, die mit .tmp enden. Die gefundenen Dateien werden gelescht get regular expression Durchsucht Dateiinhalte nach bestimmten Zeichenvorgaben/Suchmustern 1m Muster kennen Metazeichen (regular expression) wie im edlvi verwendet werden -h header der Dateiname wird nicht mit ausgegeben -i ignore case behandelt GroB- und Kleinbuchstaben gleich -I line nur die Dateinamen werden angezeigt -n number gibt zusatzlich die Zeilennummer mit aus Fortsetzung nachste Seite 197
3 UNIX - praktisch angewandt Kommandoeingabe grep Fortsetzung Beispiel: grep -v ""\." trofftext Uoter DOS~ 198 rmd Funktion -v invert gibt aile Zeilen aus, die nicht dem Muster entsprechen -w word Suchmuster muB ein einzelnes Wort sein Es werden aile Zeilen aus der Datei trofftext angezeigt, die nicht mit einem '.' beginnen file Dateiname(n) Datei Versucht den Inhalt oder die Art einer Datei zu bestimmen zum Beispiel ascii text c program text commands text directory du [-s] Directory disk used Zeigt den verbrauchten Plattenplatz -ssum Zeigt nur jeweils die Summe der Directories in S12-Byte-Blocken an df [-k] disk free Zeigt die verfugbare Plattenkapazitat in 512-Byte-Blocken fur aile montierten Plattenbereiche an -k kilo - Zeigt die Kapazitat in 1 KBBlocken an
3.5 Sicher ist sicher! Zwischenzeitlich haben Sie UNIX so gut kennengelernt, daB Sie vielleicht schon einige Dateien angelegt haben, die fOr Sie wichtig sind und nicht ge/6scht werden sollen. Sie haben auch gelernt, wie leicht versehentlich eine Datei Oberschrieben oder ge/6scht werden kann. Und noch etwas: Die Wahrscheinlichkeit, daB eine Platte in einem Rechner defekt wird, ist gr6Ber a/s die, daB Ihr BOro abbrennt. Eine Platte ist ein mechanisches Teil wie der Motor eines Autos, sie zeigt Abnutzungserscheinungen und kann daher pl6tzlich Leseund Schreibfehler aufweisen. Deshalb sollten Sie Ihre Dateien, zumindest jene, auf die Sie nicht verzichten wollen, sichern, d. h. zusatzlich auf ein anderes Medium kopieren. Die einzelnen Themen: 3.5.1 Was und worauf soil gesichert werden? 3.5.2 Montieren von Floppies oder Platten 3.5.3 Kopieren eines Dateibaumes mit epio 3.5.4 Einlesen gesieherter Dateien von einer Floppy (als Dateisystem) 3.5.5 Verwendung von Magnetband oder Streamer 3.5.6 Sieherung mit epio als Arehiv 3.5.7 Einlesen gesieherter Daten aus einem epio-Arehiv 3.5.8 Erstellen einer Sieherung mit tar 3.5.9 Restaurieren von Dateien aus einem tar-Arehiv 3.5.10 In welehem Turnus soli eine Sieherung erfolgen? 3.5.11 Austauseh von Daten mit dem PC 3.5.12 Zusammenfassung der Kommandos 199
3 UNIX - praktisch angewandt Sicher ist sicher! Das Thema ,Sichern< ist nicht trivial. Damit bescMftigen sich nicht nur Banken und Polizei. Seit es Datenverarbeitung Ober Computer gibt, hat das Thema ,Sicherung< eine besondere Bedeutung erhalten. Mancher Benutzer ist vor seinem Rechner schon in Tranen ausgebrochen, hat Wutanfalle bekommen, weil bestimmte Daten nicht mehr vorhanden waren; sei es, daB sie versehentlich ge16scht wurden, daB die Platte nicht mehr lesbar war oder sonst irgendwas passierte. Ober Sicherung wurden schon Doktorarbeiten geschrieben. Auf der GUUG-Tagung '86 war diesem Thema eine Reihe von Vortragen gewidmet. In einem dieser Vortrage wurde ein sehr passender Vergleich gebracht (auch 10 Jahre spater hat sich daran nichts geandert): Daten sichern ist wie Zahneputzen. Es kostet Zeit, und man sieht keinen sofortigen Nutzen. Doch wenn das Desaster zuschlagt, wOnscht man sich, man hatte die Sache ernster genommen. Auch wenn Sie in einer gr6Beren Firma arbeiten, in der eine eigene Abteilung fOr die Systembetreuung und Sicherung Ihrer Rechner zustandig ist, sollten Sie dieses Kapitel nicht Oberblattern. Abgesehen von manchen wichtigen Daten, die Sie vielleicht vorsichtshalber selbst sichern wollen, werden die Kommandos zum Sichern auch anderweitig ben6tigt, etwa zum Datenaustausch mit anderen Rechnern oder um Dateien noch straffer und platzsparender zu organisieren. 3.5.1 Was und worauf soli gesichert werden? Bei dem Kapitel3.3 Editoren hatten wir u.a. bei der Texterstellung vorsichtshalber ,zwischendurch< gesichert. Das heiBt, wenn wir Texte erstellt haben, wurden diese erst in einen sog. Arbeitspuffer geschrieben und dann mit einem speziellen Kommando (z. B. w beim ed bzw. :w beim VI) auf die Platte zurOckgeschrieben. Bei unseren Aufraumarbeiten wurden Dateien kopiert und die doppelten Dateien erst gel6scht, nachdem wir kontrolliert hatten, ob aile Dateien ordnungsgemaB Obernommen worden waren. Auch dies war eine Art der Sicherung. Wir k6nnen Sicherungen gliedern je nachdem, was und wann gesichert werden soli: 200 Zu sichern sind z.B.: o der aktuelle Stand wahrend der Erstellung von Dateien und die vorhergehende Version einer geanderten Datei o bestimmte Dateien, z.B. Testprogramme, Texte zu einem Buch usw. o wochentlich aile Dateien eines Benutzers oder einer Benutzergruppe oder aller Benutzer (Dateibaum) und taglich davon nur die veranderten Dateien Daile Benutzerprogramme (Anwenderprogramme), die meist ebenfalls unter bestimmten Directories abgelegt sind o Systemsoftware 0 gesamte Platte(n)
Sicher ist sicher! 3.5.2 In diesem Buch, das speziell fOr den Benutzer geschrieben ist, wird in erster Linie nur auf die Sicherung der Benutzerdateien oder Benutzergruppen eingegangen. Die Sicherung von Benutzerprogrammen, der Systemsoftware und gesamter Platten gehOrt in den Aufgabenbereich des Systemverwalters und ist nicht Inhalt dieses Buches. Lediglich am Ende dieses Kapitels sind einige Anregungen fOr ein Gesamtsicherungskonzept enthalten. Wir haben uns Gedanken gemacht, was wir alles sichern wollen, doch nun bleibt zu uberlegen: wie sichern wir und worauf? In einer Umfrage wahrend eines EinfOhrungsseminars wurden folgende Antworten gesammelt: o o o o o o o o auf Papier unter anderen Namen in ein anderes Directory auf eine andere Platte auf einen anderen Rechner (File-Server) auf Floppy (Diskette) oder entfernbare Wechselplatte auf Streamer-Kassette auf Magnetband Aile Antworten sind richtig. Ja, auch auf Papier, den ken Sie an Texte, Quelltexte von Programmen, Kalkulationen u. v. m. Abgesehen, daB durch FleiBarbeit die Daten wieder abgetippt werden konnen, konnte man heutzutage sogar die Texte durch Scannen und entsprechende Konvertierungssoftware wieder einlesen. Doch dies ware sicher die Ausnahme. Je nachdem, was gesichert werden soli und wieviel die Sicherung kosten dart, wird man eines der angebotenen Medien aussuchen. Sichert man eine Datei unter anderem Namen oder in ein anderes Directory, hat man bei Platten- oder Rechnerausfalileider Pech gehabt. Die teuerste Sicherung ist bestimmt ein zweiter Rechner, der aber bei bestimmten Anwendungen seine Berechtigung hatte und etlichen Komfort bietet, da die Sicherung automatisiert nachts laufen konnte. Bei dem heutigem Stand der Technik sind natUrlich auch magnetooptische Platten (MODs) ja sogar CDs (compact disk) ebenfalls als Sicherungsmedien geeignet. Floppy und Streamer-Kassetten sind sicher die am haufigsten verwendeten. Es handelt sich hierbei um entfernbare Datentrager, die dann, um jedes Risiko auszuschlieBen, sogar an einem anderen Ort und brandsicher untergebracht werden konnen. 3.5.2 Montieren von Floppies oder Platten Eine Floppy sieht etwa aus wie eine kleine Schallplatte. Es gibt sie in verschiedenen GroBen (z. B. 3 1/2", 5 1/4" und die ganz alte, kaum mehr verwendete 8"Floppy). Die meist genutzte ist sicher die 3 1/2"-Floppy, die etwa 1,4 MB speichern kann. Die anderen GroBen sind altere Modelle, die kaum noch verwendet werden. Welche Floppy Sie verwenden konnen, richtet sich nach dem Floppy201
3 UNIX - praktisch angewandt Laufwerk. Um das Laufwerk zu betreiben, ben6tigt man die einen entsprechenden Controller und die Treiber-Software, die letztlich Ober die Geratedatei unter /dev zugewiesen wird. Die verschiedenen UNIX-Rechner haben meist unterschiedliche Bezeichnungen fUr die Floppies, z.T. auch je nach dem, wie sie verwendet werden, als UNIX-Medium oder als DOS-Floppy. Bei unseren Beispielen nennen wir die Floppy z. B. /dev/fdO. Wie verwenden Sie eine Floppy? Ruckseite der Floppy Vorderseite der Floppy Schieber: oben schreibgeschiitzt unten schreibbereit Floppy-Laufwerk Floppy Bild 3-133: Floppy Eine Floppy kann auf unterschiedliche Weise genutzt werden: 202 1. Ahnlich wie eine Platte. Das bedeutet, Sie haben direkten Zugriff auf die Floppy und mOssen sie in das Dateisystem einhiingen. HierfOr muB die Floppy erstmalig formatiert (hier gibt es je nach System unterschiedliche Befehle) und ein Dateisystem auf der Floppy angelegt (mkfs - make file system) werden. Dies sind Aufgaben des Systemverwalters. 2. Ais Datentrager fUr ein Sicherungsarchiv. Dazu werden wir spezielle Kommandos kennenlernen (epio und tar). HierfOr ist keine Formatierung notwendig, da von den Sicherungsarchiv-Programmen eigene Strukturen verwendet werden. 3. Ais Austausch-Datentrager zu PCs (DOS-Systeme, Windows-NT, OS/2). Hier verwendet man am besten fUr DOS vorformatierte Floppies. Die meisten Systeme k6nnen auch die Floppies mit eigenen Befehlen fUr DOS formatieren (dosformat, siehe auch Seite 227).
3.5.2 Sic her ist sicher! Wir wollen zuerst die Floppy als Erganzung zu unserem Dateisystem nutzen. Die fUr Ihr System formatierte Floppy wird dann in das Dateisystem eingehangt (,montiert<). Das Kommando hierzu lautet: letc/mount I Geratenamen Imontieren Directory mit Pfadnamen ab I letc/mount - Kommando, urn Floppies oder Platten zu montieren Das Directory muB mit dem vollstandigen Namen ab der root (I) angegeben werden. Oft ist fUr ,entfernbare Datentrager< vom Systemverwalter bereits ein Directory eingerichtet, z. B. Imnt. In Ihrem Directory konnten Sie sich fUr das Montieren der Floppy auch ein eigenes Directory einrichten. Eine Floppy oder Platte wird in ein leeres Directory montiert und somit voll in das gesamte Dateisystem integriert. (Auf alteren Systemen war es moglich, Floppies/Platten auch in nicht leere Directories einzuhangen. Dann wurden die bereits vorhandenen Dateien ,Oberdeckt<. Dies bedeutet, daB diese Dateien nicht mehr sichtbar waren und auch nicht angesprochen werden konnten, solange ein anderes Dateisystem unter diesem Directory eingehangt ('montiert1 war. Erst wenn dieses Dateisystem wieder ausgehangt ('abmontiert)< wurde, kamen die Oberdeckten Dateien wieder zum Vorschein.) Unter dem Directory, in dem Sie z. B. die Floppy eingehangt haben, konnen Sie nun Dateien anlegen, kopieren, umbenennen, loschen und Unter-Directories anlegen, also samtliche Kommandos verwenden, die Sie bisher zur Dateiverwaltung und Pflege schon kennengelernt haben. FOr den Anwender ist nicht erkennbar, auf welchen Platten und Floppies das gesamte Dateisystem, d. h. der Dateibaum beginnend von der root (I) mit allen Unter-Directories aufgeteilt ist. Geben Sie das Kommando /etc/mount ohne Parameter an, erhalten Sie eine Aufstellung der montierten Gerate (Platten und Floppies). Beachten Sie bitte hierbei, daB natOrlich jeder Rechner eine eigene Aufteilung der Platten hat und mit diesem Beispiel nur die Funktion erklart werden soil. Namen und Zuordnung sind nur fUr den in diesem Buch genutzten Seminarrechner zutreffend. $ /etc/mount / /usr /usr/kurs on /dev/iwO.O on /dev/iwO.3 on /dev/iwO. 1 read/write on Thu Nov 6 9:03:34 read/write on Thu Nov 6 9:03:34 read/write on Thu Nov 6 9:03:34 Bild 3-134: Beispiel Anzeige der montierten Platten - fete/mount 203
3 UNIX - praktisch angewandt Erinnern Sie sich an das Kommando df (disk free)? Hier hatten Sie ebenfalls eine Aufteilung des Dateisystems erhalten mit den jeweils noch zur Verfugung stehenden freien Bl6cken. Diese Platten werden yom Systemverwalter bei der Konfigurierung des Systems zugeordnet und beim Hochfahren des Systems automatisch montiert. Ais Anwender k6nnen wir z. B. eine Floppy in das Dateisystem montieren oder einhangen. Hierfur richten wir uns in unserem Home-Directory einmalig beispielsweise das Directory >Floppy' ein. In dieses Directory montieren wir eine bereits formatierte und mit einem Dateisystem versehene Floppy (Ihr Systemverwalter wird Ihnen eine vorbereitete Floppy geben k6nnen). Ais Beispiel werden wir aile Dateien des Directories Texte auf die Floppy sichern. Sehen wir uns hierzu den Ablauf an. $ mkdir Floppy $ Is-F Befehlel Floppyl ProjektA/ Textel Uebungenl $ Is -I Floppy Das Directory, In das ein neues Dateisystem total 0 montiert werden soli, muB leer sein. $ letc/mount Idev/fdO lusr/kurs/monika/Floppy $ lete/mount I lusr lusrlkurs lusrlkurslmonikalFloppy on IdevliwO.O readlwn"te on IdevliwO. 1 readlwn"te on IdevliwO. 1 readlwn"te on IdevlfdO readlwn"te L on on on on Thu Nov 6 9:03:34 Thu Nov 6 9:03:34 Thu Nov 6 9:03:34 Thu Nov 711 :20:02 Die Anzeige zeigt nun das ergllnzte Dateisystem $ cp Texte/* Floppy Sicherung ~urch Kppieren von Dateien mit Hille $ Is _I Floppy von Metazelchen ' • total 200 -rw-r--r-1 monika kurs 101699 Nov 4 19:33 kekse 1 monika kurs 290 Nov 4 19:33 sprueche -rw-r--r-- Zur Orientierung der Teilbaum yom Directory lusr/kurs/monika Floppy 204 Bild 3 -135: Beispiel Sichern von Dateien auf Floppy - letclmount, cp
3.5.2 Sicher ist sicherl Die Sicherung wurde hier durch Kopieren bestimmter Dateien vorgenommen. Die Dateien wurden mit Hilfe der Dateinamenexpansion (Metazeichen *) gefunden. K6nnten wir die Floppy nun wieder entfernen? [> Beachten Sie: Bevor Sie eine mit /etc/mount ins Dateisystem eingehangte Floppy (oder entfernbare Platte) auf einem UNIX-Rechner wieder herausnehmen, muB sie mit dem Kommando letclumount abmontiert (abgemeldet, ausgehangt) werden; dann erst kann sie auch physisch entfernt werden. Also nicht wie beim PC, wo sie einfach aufs Kn6pfchen drOcken! Unter UNIX werden aile Dateien immer kontrolliert, registriert, bewacht. Wenn sie gewaltsam die Floppy entfernen wOrden, merkt das System die Inkonsistenz spatestens beim nachsten Hochfahren. Der Systemverwalter muB dann eine PlattenOberprOfung, sog. file system check (fsck), durchfOhren. /etc/umount Geratename I abmontieren, aushangen letc/umount - Kommando, urn Platten oder Floppies wieder auszuhangen Dem Betriebssystem muB unbedingt mitgeteilt werden, daB ein Gerat, auf dem ein Dateisystem eingerichtet wurde und das in den gesamten Dateibaum integriert wurde, wieder entfernt wird. UNIX beMlt die Informationen Ober ein Dateisystem im Speicher und schreibt nur nach einer bestimmten Zeit (wenn auch nur Sekunden) die sich durch Neuanlage, Modifikationen und L6schung von Dateien ergebenden Veranderungen auf die Platte oder Floppy zurOck. Durch das Kommando umount ist eine ordnungsgemaBe ROckschreibung aller Datei-Informationen gewahrleistet. Das Directory ,Floppy' ist auf der Platte wieder leer. $ /etc/umount /dev/fdO $ Is -I Floppy Sobald das Dateisystem ausgeMngt total 0 ist, ist das Directory wieder leer Bild 3-136: Beispiel Mount-Directory nach dem Aushangen der Floppy Die Dateien stehen ohne irgendwelche Pfadangaben auf der Floppy. Die Floppy kann nun in jedes freie Directory eingehangt werden, wenn der Benutzer die Schreiberlaubnis hierfOr besitzt. 205
3 UNIX - praktisch angewandt Platte Dateisystem unter UNIX / / / / I herausgenommene Floppy mit UNIX-Dateisystem Floppy Bild 3-137: Beispiel des Dateibaumes mit ausgehangter Floppy Die auf die Floppy kopierten Dateien bekommen automatisch den Pfadnamen des Directories, unter dem die Floppy montiert wird. WOrde sie z. B. unter dem Directory Imnt eingehangt werden, so lauteten die Dateinamen: Imntlkekse und Imntlsprueche Die Sicherung auf eine >entfernbare< Platte wOrde in gleicher Weise durchgefOhrt werden. Die Platte ist nur durch einen anderen Geratenamen, z. B. Idevliw1 .0, gekennzeichnet. 206
3.5.3 Sicher ist sicher! 3.5.3 Kopieren eines Dateibaumes mit cpio In dem gerade gesehenen Beispiel wurden bestimmte Dateien mit Hilfe der Dateinamenexpansion Ober Metazeichen herausgesucht. Welche weiteren MogIichkeiten gibt es? Nun, im vorherigen Kapitel haben wir ein schwieriges, aber sehr nOtzliches Kommando kennengelernt - das find-Kommando. Mit Hilfe von find konnen wir aile Dateien und Unter-Directories von einem Directory oder Dateien nach einem bestimmten Suchkriterium (alter als 2 Tage usw.) auswahlen und anzeigen lassen. Mit dem Kommando cp konnen zwar ab Version V.4 gesamte Dateibaume kopiert werden, jedoch nicht nach einer bestimmten Auswahl und vor allem erhalten die kopierten Daten jeweils ein neues Datum. Vor Version V.4 konnten mit cp nur Dateien, nicht aber Directories kopiert werden. Um Dateien und Directories mit Originalinformationen zu kopieren, gibt es das Kommando cpio (copy input output). Wie der Name andeutet, wird cpio sowohl fOr die Ausgabe einer Kopie, als auch fOr das Einlesen von kopierten Daten verwendet. Dieses Kommando hat die Besonderheit, daB es nur in Verbindung mit einer Dateiliste eine Ausgabe erstellt. Die Dateiliste wird entweder Ober eine Pipe oder eine Umleitung Obergeben; oder die Namen der zu kopierenden Dateien werden einzeln Ober die Standardeingabe (Terminal) eingetippt. Sehen wir uns das Kommando cpio an, wie es in Verbindung mit dem find zum Kopieren eines Dateibaumes verwendet wird: find Directory -print I cpio -p[vmud] Ziel-Directory '~----~vr--------~/ Ausgabe der Oateiliste des Dateibaumes, der kopier! werden soli copy input output Kopierbefehl fOr Einund Ausgabe. p ass kopiert die als Datelliste ubergebenen Dateien und Unter-Directories in das liel-Directory I I Name des Directories, unter dem der kopierte Dateibaum ausgegeben wird. (liel-Directory) directory Falls Unter-Oirectories noch nicht vorhanden sind, werden sie angeleg!. u nconditional Ole koplerte Datei wird auf jed en Fall ubernommen, auch wenn sie schon vorhanden ist. m odification date Die kopierte Oatei erhillt das gleiche Datum wie die Originaldatei. verbose Anzeige der kopierten Daleien find •.. I cpio ••• - Kommandos, urn einen Dateibaum zu kopieren 207
3 UNIX - praktiseh angewandt Es empfiehlt sich, folgende Optionen anzugeben: -v (verbose), damit Sie am Bildschirm verfolgen kennen, welche Dateien kopiert wurden; -m (modification date), um das ursprungliehe Datum der kopierten Datei zu erhalten (und nicht wie bei dem Kommando ep das aktuelle Datum); -u wenn die kopierte Datei auch dann ubernommen werden wenn bereits eine Datei mit gleichem Namen und neuerem Datum vorhanden ist (ohne die Option -u werden bei cpio nur dann Dateien gleichen Namens uberschrieben, wenn sie ein alteres Datum als die zu kopierende Datei aufweisen); (unconditiona~, 5011, -d (directory), wenn Unter-Directories angelegt werden sollen. Wenn wir aile Dateien von /usr/kurs/monika auf eine Floppy sichern wollen, sind folgende Schritte notwendig: 1. Floppy montieren; 2. evtl. Daten auf der Floppy leschen; 3. Kontrollieren, ob Sie sich in dem zu kopierenden Dateibaum befinden, um uber find die relativen Dateinamen so zu erhalten, wie sie unter dem Ziel-Directory mit gleichem Namen kopiert werden sollen; 4. Kopieren des Dateibaumes mit cpio in Verbindung mit find; $ fete/mount /dev/fdO /usr/kurs/monikaiFloppy $ Is -I Floppy 1. Montieren der Floppy {ota1200 -rw-r--r-1 monika kurs 101699 Nov 4 19:33 kekse 1 monika kurs 290 Nov 4 19:33 sprueche -rw-r--r-$ rm -r Floppy/" 2. Vomandene Daten loschen $ pwd 3. Kontrolle, ob im richtigen /usr/kurs/monika Directory . $ find. -print I epio -pvmd Floppy 4. Kopieren des Datelbaumes Floppy/. .r-.-----'-'-.....:.....--.- - - - - - - - - - - ' - - . Floppy/ProjektA Fortsetzung Blldschlrm FloppylProjektAlbeisJ. FloppylUebungenlinhalt FloppylProjektAlio.c FloppylUebungenlneu FloppylProjektAlpro.c FloppylUebungenlneuer Floppy/Texte FloppylUebungenlueb 1 FloppylTextelkekse FloppylUebungenlOatum linked to Floppy/Texte/spruech FloppylUebungenldatum FloppylUebungen FloppylFloppy FloppylUebungenlOa FloppylBefehle FloppylBefehle/sicher 209 blocks Bild 3-138: Beispiel einer Sicherung auf Floppy mit find I cpio a/s Dateibaum 208
3.5.3 Sicher ist sicher! 5. Ein Hilfsmittel zur Wiederauffindung von Dateien ist, ein Inhaltsverzeichnis auszudrucken, das Sie zusammen mit der Floppy aufbewahren. Z. 8., indem wir von dem Directory Floppy mit Is -I ein Inhaltsverzeichnis ausgeben und auf den Drucker weiterleiten oder das find-Kommando nochmal aufrufen und die Ausgabe an den Ip-Spooler weiterleiten: find Floppy -print I Ip oder ab Version V.4 find Floppy -Is I Ip 6. Die Floppy softwaremaBig abmontieren und herausnehmen und sofort beschriften, welche Daten wann und von wem gesichert wurden. $ Is -R Floppy I Ip - - $ $ /etc/umount /dev/fdO Is -I Floppy total 0 Ausdruck eines Inhaltsverzeichnisses Sobald das Dateisystem ausgeMngt ist, ist das Directory wieder leer Datelsystem auf der ausgeMngten Floppy, die Sie auch physikalisch aus dem Rechner entnehmen Bild 3-139: Beispiel Abmontieren (Aushiingen) von einer Floppy nach der Sicherung eines Dateibaumes -/etc/umount Eine Floppy ist als Sicherungsmedium von kleineren Datenmengen gut geeignet. Sie ben6tigt wenig Platz und laBt sich sogar in Ordnern oder Ablagekastchen unterbringen. Der Hauptzweck einer Sicherung ist, daB der Benutzer jederzeit schnell und zuverlassig Daten, die etwa versehentlich gel6scht wurden oder nur noch teilweise lesbar sind, auch einzeln wieder restaurieren kann. Aus der Beschriftung der Floppy sollten Sie deshalb ersehen k6nnen, welche Daten Sie wann gesichert haben, so daB es fOr Sie kein Problem ist, die richtige Floppy mit den gesuchten Daten wiederzufinden. Wir werden spater noch kennenlernen, wie wir auch auf einer Floppy noch wesentlich mehr Daten unterbringen k6nnen (epio oder tar als Archiv und verdichtet mit compress siehe Bild 3-157 auf Seite 247). 209
3 UNIX - praktisch angewandt 3.5.4 Einlesen gesicherter Dateien von einer Floppy (als Dateisystem) 1. Sie hiingen die Floppy in ein feeres Directory ein und kopieren die gewOnschte Datei in das entsprechende Directory (cp). 2. Soli ein ganzer Dateibaum kopiert werden, so wechsefn Sie in das Directory der Floppy und 3. kopieren mit cpio in Verbindung mit find. Ais Ziel wird das Directory angegeben, unter dem der Dateibaum restauriert werden soil. Sind nur einzelne Dateien geloscht, oder zwischenzeitlich neuere Dateien mit gleichem Namen auf der Platte vorhanden, werden nur die Daten kopiert, die auf der Floppy ein neueres Datum aufweisen. Dies ist auch ein wesentficher Vorteil gegenOber dem Kommando cp -ri, mit dem Sie zwar ebenfalls einen Dateibaum kopieren, bei dem aber nicht automatisch auf neuere Daten abgefragt wird. Gehen wir in unserem Beispiel davon aus, daB etwa versehentfich unter /usrlkurs/monika das Directory Texte vollstandig geloscht wurde. Wir nehmen also die vorhin erstellte Sicherungs-Floppy und hiingen Sie unter dem leerem Directory >Floppy' ein. $/etc/mount /dev/fdO /usr/kurs/monikalFloppy $pwd ~I______________ 1. Montieren der Floppy /usr/kurs/monika $ cd Floppy _____________ 2. Wechselln das Directory $ find. -print I cpio -pvmd .. _ ..ITexte } ..ITexte/sprueche ..ITexte/kekse 200 blocks $ der Sicherung I - - - - - - 3. Kopieren des Dateibaums, Abfrage auf modificatio~ date das Ziel-Directory ist d.h., aile kopl~rten DateJen ~rlusr/kurslmonika, h~lten. d.as glelche Datum wle angegeben mit ' .. ' die OngJnaldatelen. Das Directory Texte wird automatisch durch die Option d angelegt. Bild 3 - 140: Beispiel Einlesen von Dateibaumen aus der Sicherung auf Floppies - cpio (als Dateisystem) Sollte z. B. der gesamte Dateibaum ab /usr/kurs/monika nicht mehr vorhanden sein, konnten wir die Floppy unter irgendeinem leeren Directory einhiingen, unter dem wir schreibberechtigt sind. Wichtig ist hier, daB zumindest das Directory /usrlkurs/monika noch existiert, da relativ zu diesem Directory die Dateien gesichert wurden. Sollte auch das Home-Directory geloscht sein, mOBte der Systemverwalter erst wieder Ihr Home-Directory mit mkdir anlegen. 210
3.5.5 Sicher ist sicher! Floppies gehOren zu den kostengOnstigen Datentragern. Aber Sie haben den Nachteil, daB nur verhaltnismaBig geringe Datenmengen untergebracht werden kennen. Die Kapazitaten der Floppies reichen von ca. 0,36 MB (Megabytes) bis ca. 2,88 MB. AuBerdem ist es schwierig, Floppies auf unterschiedlichen UNIXRechnern zu lesen, da sich die Formatierungen von System zu System unterscheiden kennen. Die Floppy kann .auch ,nur< als Datentrager verwendet werden. In diesem Fall wird sie nicht in das Dateisystem eingehangt (kein mount-Befehl), sondern ahnlich wie das Magnetband oder der Streamer verwendet. Das Kommando cpio wird dann mit den Optionen -0 > IdevlfdO (fOr output - Erstellen der Kopie) und mit -i < IdevlfdO (zum Wiedereinlesen der Sicherung) verwendet. Sehen Sie hierzu die Verwendung von cpio bei Magnetband oder Streamer. Das Kommando tar (siehe auch Seite 219), ahnlich dem cpio-Kommando, hat sich ebenfalls fOr Datentrageraustausch zwischen unterschiedlichen Rechnern bewahrt. Ein Beispiel, wie Floppies als Austausch zwischen UNIX-Dateien und PC verwendet wird, erfahren Sie im Abschnitt 3.5.11 auf Seite 227. 3.5.5 Verwendung von Magnetband oder Streamer Der Streamer kann als problem los bezeichnet werden. Er wird eingesetzt zur Sicherung von grOBeren Datenmengen und zum Austausch von Daten mit UNIXRechnern anderer Hersteller. Ein Streamer kann fast auf allen Rechnern gelesen werden. Das Magnetband wird meist nur noch in Mainframe-Umgebung (GroBrechner) verwendet. Der wesentliche Unterschied zwischen Platte oder Floppy und Magnetband oder Streamer ist die Zugriffsmethode. Auf eine Platte kennen Sie direkt zugreifen, an einer bestimmten Stelle (Adresse) lesen und schreiben; ahnlich wie Sie auf einer Schall platte den Tonarm auf eine bestimmte Rille setzen kennen. Ein Magnetband oder Streamer kann nur sequentiell (hintereinander) beschrieben oder gelesen werden. Denken Sie an Musikkassetten. Wenn Sie ein bestimmtes StOck heren wollen, mOssen Sie vor- oder zurOckspulen. Dies ist zeitaufwendig. Man verwendet Magnetbander oder Streamer nur als Datentrager. Dies bedeutet: ein Magnetband oder Streamer muB in der Regel nicht formatiert zu werden und es wird kein Dateisystem angelegt. Auf manchen Systemen werden Magnetbander vorab initialisiert, mit einer Kennung (z. B. fortlaufende Bandnumerierung etc.) versehen. Wir wollen in diesem Buch die einfachste Form kennenlernen, wie Magnetbander oder Streamer verwendet werden. I I .,11 Magnetband-Gerat Bild 3-141: Magnetband Schreibring Magnetband 211
3 UNIX - praktisch angewandt Das Magnetband hat auf einer Seite einen Schreibring, den Sie abnehmen konnen. Ohne Schreibring kann das Magnetband nur gelesen und nicht beschrieben werden. Wenn Sie z. B. nur Daten von einem Magnetband einlesen wollen, empfiehlt es sich, zur Sicherheit den Schreibring abzunehmen. Je nach Bandgerat fadelt sich das Band automatisch ein oder Sie mOssen entsprechend einer Anleitung das Magnetband manuell einlegen. Danach wird meistens eine Taste gedrOckt, um das Band zu einer Anfangs-Bandmarke vorzuspulen (Beginn des beschreibbaren Bandes). In der Regel wird sichtbar angezeigt, daB .hardwaremaBig' das Magnetband bereit ist und vom Rechner gelesen und/oder beschrieben werden kann. Beim Streamer ist die Handhabung wesentlicher einfacher. Es gibt unterschiedliche GroBen. Das sog. Ole-Format (60 MB bis ca. 1,2 GB Gigabyte) und Streamer fOr OAT-Laufwerke (Digital Archiv Tape - ca. von 1,2 GB bis etwa 10GB) gehoren zu den Z. Z. am meisten eingesetzten. FOr groBe Datenmengen werden DL T-Bander verwendet, die sogar bis zu 40 GB speich ern konnen. Sicherheitschieber: offen: schreibgeschiitzt geschlossen: schreibbereit Streamer-Laufwerk OAT Sicherheitschraube: @ - SAVE = schreibbereit ~ SAVE Streamer-Laufwerk Qle Qle-Streamer ~ . =schreibgeschiitzt Bild 3 -142: Streamer Die Kassette wird in ein Streamer-Laufwerk eingeschoben. Ahnlich wie beim Magnetband konnen Sie die Kassette vor irrtOmlichem Beschreiben schOtzen. Urn den Schreibschutz einzustellen, ist an den meisten Kassetten ein Schieber vorgesehen oder eine kleine Schraube auf .SAVE, zu drehen. Da unterschiedliche Gerate auf dem Markt sind, laBt sich hier nur allgemein die Bedienung erklaren. Auch die Kontrollbefehle fOr Magnetband und Streamer sind meist rechnerspezifisch und sind evtl. bei Ihrem Rechner unter anderen Namen aufzurufen. Fragen Sie Ihren Systemverwalter, welche Befehle fOr Ihren Rechner gOltig sind. 212 Sie konnen auf ein Magnetband oder einen Streamer mehrere Sicherungen hintereinander schreiben. Bei jeder Sicherung (Schreibvorgang) wird automatisch eine Bandmarke als Endemarkierung auf das Band geschrieben. Man nennt diesen Bereich auch Oateiset. Wenn Sie auf ein schon beschriebenes Magnetband oder Streamer eine Sicherung anhiingen wollen, mOssen Sie um die Anzahl der schon vorhanden .Dateien, (in diesem Fall Sicherungsbereiche, die
3.5.5 Sicher ist sicher! durch Bandmarken voneinander getrennt sind) vorspulen. Das Kommando hierzu lautet: Funktion ZurOckspulen um eine oder .ne Dateisets Vorspulen um eine oder .ne Dateisets Magnetband mt mt -rew [ n) -fsf [ n] mt - Kommando, um ein Magnetband/Streamer vor- und zuruckzuspulen Auf Magnetband und Streamer sind Etiketten vorhanden, auf denen Sie sofort beschriften sonten, was, wann und wo und von wem gesichert wurde. Ich personlich empfehle, lieber auf den Rest freier Kapazitat eines Magnetbandes oder Streamers zu verzichten und nur jeweils eine Sicherung pro Band zu schreiben. Die Fehlerquelle, versehentlich eine falsche Sicherung einzulesen oder gar zu Oberschreiben, ist zu groB. Wenn Sie immer wieder die gleichen Bander in einem bestimmten Turnus verwenden, empfiehlt es sich, die Eintragungen mit Bleistift vorzunehmen. Bei DATBandern ist jedoch darauf zu achten, daB sie It. Garantie maximal nur 20-mal benutzt werden dOrian. I> Achten Sie darauf, daB Sie immer ausreichend Bander und/oder Kassetten zur VeriOgung haben. Wir werden uns anschlieBend Gedanken darOber machen, wie lange ein Band, eine Kassette oder Sicherungsfloppy aufbewahrt werden sollte. Unsere Kassette oper das Magnetband ist nun startklar (ready - online), und wir konnten sichern, doch wie? Um auf Magnetband oder Streamer-Kassetten zu sichern, eignet sich hervorragend das bereits gelernte Kommando: epio. Das Kommando wird sowohl fOr die Erstellung der Sicherung (output), als auch fOr das Wiedereinlesen (input) der Dateien verwendet. Wie Sie es verwenden wollen, kennzeichnen Sie durch die Option -0 fOr output oder -i fOr input. 213
3 UNIX - praktiseh angewandt 3.5.6 Sieherung mit epio als Arehiv Mit epio kann ein Arehiv auf Magnetband, Streamer, Floppy oder als Datei angelegt werden. Um eine Sicherung zu erstelien, ein Archiv anzulegen, wird epio wie folgt verwendet: Wichtig 1st hier die Angabe des Umleitungszeichens! I I Dateifiste (z. B. Ober Is, echo oder das find-Kommando) I epio -o[vB] > f copy input output I Kopierbefehl fUr Einund Ausgabe. output kopiert die als Daleiliste Obergebenen Dateien und Unter-Direclories auf das angegebene GerlU verbose Anzeige der kopierten Daleien Block Blockungsfaktor fOr Magnetband epio -0 - Gerate'- oder Dateifame z. B. I/deV/nrmlO L-r:-" fUr no Ma~nelband' rewind ohne automalisches ROckspulen IdevlrstO IdevlrmtlO IdevlfdO fOr Floppy oder als Datei z. B.: Sicherungcpio Kommando, um ein Arehiv auf Magnetband, Streamer, Floppy oder als Datei anzulegen, zu erstellen Das epio-Kommando haben wir bereits beim Kopieren von Dateibaumen kennengelernt. Je naehdem, welche Option angegeben wird, kann epio verwendet werden fOr: epio -p[vmud] Ziel-Direetory (pass) zum Kopieren von Dateibaumen epio -o[vB] > Geratenamen (output) zum Erstelien eines Archivs auf Magnetband, Streamer, Floppy oder als Datei epio -i[vmudB] < Geratenamen (input) zum Einlesen von vorher auf Magnetband oder Streamer gesieherten Daten Die Option -i wird unter 3.5.7 auf Seite 216 behandelt. Bei den ersten beiden M6glichkeiten (-0 und -p) mOssen die zu kopierenden Dateien als sag. Dateiliste im Pipe-Mechanismus Obergeben werden. 214 • Die Geratenamen sind je Rechner unterschiedlich. Erkundigen Sie sich bei Ihrem Systemverwalter, welche Geratenamen fOr Streamer bzw. Floppy Ihnen zur VerfOgung stehen.
Sicher ist sicher! 3.5.6 Die Dateiliste kann erstellt werden z. B.: Omit dem Kommando find o durch Dateinamenexpansion Ober Metazeichen (*, ?, [] ), wobei die so gefundenen Dateien Ober das Kommando Is oder echo als Liste ausgegeben werden o oder Umleitung der Eingabe von einer Datei (z. B. Iiste), in der die zu sichernden Dateinamen pro Zeile eingetragen sind. cpio -ovB < Iiste > Idev/rmtO (Geratenamen nur als Beispiel) Wenn Sie z. B. in einem bestimmten Directory aile Dateien, die mit .c enden, auf Magnetband sichern wollen, geben Sie ein: Is *.c I cpio -ovB > Idev/rmtO (Geratenamen nurals Beispiel) Nur wenn Sie anschlieBend eine weitere Sicherung auf das gleiche Magnetband schreiben wollten, wOrde als Geratenamen IdevlnrmtO verwendet werden. >n, steht in diesem Fall fOr nicht zurOckspulen (no rewind). Eine Sicherung auf Streamer wird in gleicher Form vorgenommen, lediglich der Geratenamen kann anderslautend sein. Da jedoch kaum noch Magnetband-Gerate an UNIX-Rechner angeschlossen sind, sondern hauptsachlich StreamerLaufwerke, die Datenmengen in Gigabyte speichern konnen, wird IdevlrmtO meist fOr den Streamer verwendet. Es empfiehlt sich, die durch die Option >v, (verbose) angezeigte Liste der gesicherten Daten in eine Datei umzuleiten und anschlieBend auf dem Drucker auszugeben. Diese Umleitung wird erreicht durch >2><, obwohl es sich hierbei nicht um Fehlermeldungen, sondern um >Meldungen des Programms< handelt. Wollen wir bei dem letzten Beispiel das Protokoll in die Datei >sichliste< umleiten, lautet die Eingabe: Is *.c I cpio -ovB > Idev/rmtO 2> sichliste Die Datei sichliste kann anschlieBend mit Ip sichliste ausgedruckt werden. Sehen wir uns ein Obungsbeispiel zur Sicherung an. Aile Dateien von dem Directory lusrlkurslmonika sollen auf Streamer gesichert werden: 215
3 UNIX - praktiseh angewandt (ROckspulen des Magnetbandes k.ann meist entfallen, da Streamer automatisch zurOckspulen Kontrolie, ob 1m richtigen Directory $ mt rew $ pwd lusrlkurslmonika $ find. -print I epio -ovB > Idev/rmtO ProjektA - - - - Anzelge der Dateinamen durch die ProjektA/beispiel.c Option v. Befehlelsicher 240 blocks Bild 3 -143: Beispiel Sicherung als Archiv auf Streamercpio in Verbindung mit find 3.5.7 Einlesen gesieherter Daten aus einem epio-Arehiv Um vom Magnetband, Streamer, Floppy oder aus einer Archivdatei Daten wieder einzulesen, wird das Kommando epio -i wie folgt verwendet: * Beim Einlesen der Daten muB das Eingabe-Umleitungszeichen angegeben werdenl I I epio -i [VUmdtjl I copy input output Kopierbefehl fOr Einund Ausgabe. I input Einlesen von Dateien verbose Anzeige der kopierten Dateien unconditional keine AbprOfung auf das Datum [ Dateiname(n )] I < Band Blockungsfaktor fOr Magnetband title Ausgabe eines Inhaltsverzeichnisses directory Unter-Directories werden eingerichtet modification date Obernahme des Originaldatums Geratename· I I z. B. Idev/nrmtO no rewind I fOr Magnetbandl Streamer ohne automatisches ROckspulen /devlrstO /dev/rmtJO /dev/fdO fOr Floppy oder als Datei z. B.: Sicherungcplo Umleitung der Standardeingabe epio -i - Kommando, um Dateien aus einem epio-Arehiv wieder einzulesen 216 • Die Geratenamen sind je Rechner unterschiedlich.
3.5.7 Sicher ist sicher! Die einzelnen Optionen haben wir zum Teil schon kennengelernt. 1m einzelnen bedeuten sie: -v (verbose) Sie erhalten ein Protokoll (Anzeige auf dem Bildschirm) Ober samtliche Dateien, die eingelesen werden. -u (unconditionaQ Mit dieser Option schalten Sie den Vergleich auf ein eventuell neueres Datum einer schon existierenden Datei aus. Dies bedeutet: so lite eine Datei mit gleichem Namen auf der Platte bereits existieren, wird sie mit der Datei, die auf dem Band steht, Oberschrieben. Die Dateien erhalten das aktuelle Datum. -m (modification date) Die kopierten Dateien erhalten das gleiche Datum, wie es die Originaldateien aufweisen. -d (directory) Sind In dem einzulesenden Dateibaum Directories mit enthalten, die noch nicht auf der Platte existieren, werden Sie vom Programm angelegt. -t (table) Mit dieser Option konnen Sie sich vorab den Inhalt eines Bandes anzeigen lassen. Der Aufruf muB in Verbindung mit der Option -i erfolgen. z.B. cpio -ivtB < IdevlmtO -B (Block) Nur wenn das Sicherungsband ebenfalls mit der Option -B erstellt wurde, muB auch das Einlesen mit dieser Option erfolgen. Die Daten werden dann blockweise (ca. 5000 Bytes per Block) eingelesen. Geben Sie beim Aufruf von cpio -i ... keinen Dateinamen an, so werden aile Dateien, die auf dem Sicherungsband stehen, eingelesen. Mochten Sie nur bestimmte Dateien einspielen, so muB die Datei mit der gleichen Bezeichnung, wie sie auf dem Band gesichert ist, angegeben werden. Um sich zu vergewissern, kann man sich vorab das Band mit cpio -ivt ansehen. Wichtig ist auch, daB die Datei mit dem gleichen Pfadnamen zurOckgeschrieben wird. l> Achten Sie deshalb beim Einlesen von Dateien darauf, daB Sie sich im richtigen Directory befinden. Zu beachten ist auBerdem, daB Sie bei der Eingabe von cpio -i nicht von der Standardeingabe lesen wollen, sondern von dem Gerat bzw. der Archivdatei, d. h., Sie mOssen die Eingabe umleiten mit <. Sehen wir uns anhand von Beispielen den Ablauf des Kommandos an. Angenommen, die Dateien unter dem Directory /usrlkurs/monika/Uebungen wurden versehentlich geloscht. Dies ist fOr uns kein Problem, da aile Dateien gesichert sind. Um von dem richtigen Directory einzulesen, ist es wichtig zu wissen, mit welchem Pfadnamen die Datei auf das Sicherungsband geschrieben wurde. Sollte es aus der Beschriftung des Etikettes nicht hervorgehen, so bietet das Kommando cpio die Moglichkeit, sich ein Inhaltsverzeichnis anzeigen zu lassen: cpio -ivtB </dev/rmtO (Die Bezeichnungen fOr die Geratenamen von Streamer oder Magnetband sind auch hier wieder nur ein Beispiel. Fast jedes Rechnersystem verwendet andere 217
3 UNIX - praktisch angewandt Bezeichnungen}. Sie erhalten eine Liste, die Ihnen ahnlich wie das Kommando Is -I die Dateiattribute anzeigt. $ cpio -ivt < Idev/rmtO - Anzeige des Inhaltsveneichnisses Qvt - table) 40775 monika 0 Nov 6 16:30:05 40755 monika 32 Oct 26 20:06:44 ProjektA 10664 monika 98 Oct 26 20:06:44 ProjektAlbeispiel.c 10664 monika 150 Oct 26 20:06:44 ProjektAlio.c 10664 40755 10755 monika 29 monika 32 monika128 Oct 19 18:18:06 Oct 26 13:36:44 Oct 18 21:02:26 Datum und Uhrzeit verschliisselte Nummer (Dateityp und Zugriffsrechte) GroBe der Datei in Bytes Name des Dateibesitzers Uebungenldatum Befehle Befehlelsicher Name der Datei mit dem Pfadnamen, wie er beim Wiedereinlesen vom aktuellen Directory angelegt wird. Bild 3-144: Beispiel Anzeige des Inhaltsverzeichnisses eines cpio-Archivs Die Nummer, die mit angezeigt wird, verschlOsselt den Dateityp (Directory=4, normale Datei=1).Die letzten drei Ziffern stelien die Oktalzahl der Zugriffsrechte dar (die Summe je fOr user, group und other aus read=4, write=2, executable= 1). Aus dem Inhaltsverzeichnis konnen Sie den Pfadnamen der Datei ersehen, den Sie in der gleichen Form angeben mOssen, um die entsprechende Datei(en} wieder einzulesen. Bei cpio konnen Sie die Ihnen bekannten Metazeichen nOtzen. Achten Sie darauf, daB Sie wie beim Kommando find AusdrOcke mit Metazeichen in AnfOhrungszeichen setzen, damit diese nicht sofort von der Shell expandiert werden, sondern erst bei AusfOhrung von cpio. Beispiel fOr das Einlesen der Dateien unter lusrlkurs/monikalUebungen: $ pwd Kontrolle, ob Sie im richtigen Directory sind. unter dem die gesicherten Dateien mit dem eingetragenen Pfadnamen angelegt werden lusrlkurslmonika $ cpio -ivmdB "Ueb/*" < Idev/rmtO L - Um aile Dateien aus dem Directory Uebungen UebungenlDatu,t, I zu emalten. muB das Trennungszeichen / mit Uebungenlinhalt angegeben werden. Uebungenlneu _ Ware das Directory Uebungen auch mit geUebungenlneuer loscht worden. wiirde es automatisch wieder Uebungenlueb1 angelegt werden. UebungenlDatum linked to Uebungenldatum 240 blocks 1'--___ Zusatzlich vergebene Namen (In) werden ebenfalls iibernommen 218 Bild 3 -145: Beispiel Einlesen bestimmter Daten aus einem cpio-Archiv
3.5.8 Sicher ist sicherl 3.5.8 Erstellen einer Sicherung mit tar Statt des Kommandos cpio wird oft das Kommando tar (tape archiv) speziell zum Austausch von Daten zwischen verschiedenen Rechnern verwendet. Das Kommando tar ist kompatibel zu unterschiedlichen Rechnersystemen. Den Befehl tar gibt es z. B. auch fOr MS-DOS, OS/2 und fOr MAC-OS (Betriebssystem vom Apple Macintosh). Auch ist tar etwas einfacher zu bedienen als cpio (hat allerdings auch nicht die Funktionalitat, z. B. Auswahl von Dateien nach bestimmten Kriterien, wie es bei cpio mit find in zahlreichen Variationen erfolgen kann). Verlangt das Kommando cpio bei der Erstellung zusatzlich eine Dateiliste, so wird bei tar der gesamte Dateibaum vom aktuellen Directory bzw. dem angegeben en Directory kopiert oder nur die angegebenen Dateien. Die wichtigsten Funktionen, um ein Archiv mit tar zu erstellen, sind: tar -c[bhvf Gerat-/Dateiname] Start-Directory oder Dateiname(n I tape archive create Erstellen eines tar-Archivs file Das direkt nachfolgende Wort ist die Bezeichnung fUr das Gerlit oder der Name fiir die Archivdatei f wird deshalb stets als letzte Option eingeben z. B. -f IdevlrmtO -f IdevlfdO oder als Datei -f ItmplSich.tar I Hier muS, wenn yom aktuellen Directory abgesichert werden soli, der Punkt • angegeben werden; Dateinamen kOnnen iiber Dateinamenexpansion (z.B. '.c) ermittett werden verbose zeigt aile kopierten Dateien an -h (hard/ink) verfolgt aile symbolischen Unks und kopiert die dort aufgefundenen Dateien block Blockungsfaktor fUr Magnetband l> tar -c - Kommando, um ein tar-Archiv zu erstellen Achtung: Bei tar -c wird ein Band oder eine Floppy uberschrieben bzw. eine Datei automatisch neu angelegt bzw. eine bereits vorhandene geloscht. Hatte man beim cpio-Kommando auf das Umleitungszeichen achten mussen, so ist bei tar der Geratename/Archiv-Dateiname uber die Option -f anzugeben, wenn es sich nicht um die Standardausgabe (meist /devlrmtO) handelt. Die Standardausgabe (default) bei tar ist auf den verschiedenen Rechnern unterschiedlich. Auch hier kann Ihnen Ihr Systemverwalter weiterhelfen - bzw. probieren Sie es einfach aus. Meist ist das am Rechner angeschlossene Streamer-Laufwerk die Standardausgabe. Wie sie mit tar im Netz arbeiten, finden Sie im KapiteI3.6.3 auf Seite 241. 219
3 UNIX - praktisch angewandt Sichern wir unser Directory lusrlkurslmonika in eine Archivdatei unter dem Directory Itmp. Da, wie wir im Kapitel 3.6 spater erfahren, Archivdateien oft uber Netz verschickt werden, ist es unter UNIX-Anwendern gebrauchlich, die tar-Archivdateien entsprechend mit . tar zu kennzeichnen (ist aber kein MuB). $ pwd Es wird eine Sich~rung vom gesamten Dateibaum lusrlkurslmonika _ _ ab /usr/kurs/monlka erstellt $ tar -cvf Itmp/SichJuli.tar I .lProjektA - - - Anzeige der Dateinamen durch die Option -v .IProjektAlbeispiel.c .IBefehlelsicher 175 blocks $ Is -I Itmp/SichJulLtar -rw-rw-r-- 1 monika kurs 89S12JuI3117:02SichJuli.tar Bild 3-146: Beispiel Erstellung eines tar-Archivs Die Archivdateien (cpio und tar) benotigen etwas weniger Platz als die Originaldateien, da samtliche Dateien (mit jeweils mindestens 1KB) in eine Datei gespeichert werden (die BlockgroBe ist 512 Byte). Wir werden im Kapitel 3.6.3 (Welche Netzwerk-Kommandos sind fUr Sie interessant?) auf Seite 247 erfahren, wie Dateien weiter verdichtet werden konnen (compress). Doch die Platzersparnis ist hier nur zweitranig zu sehen, wichtig ist in erster Linie, daB jederzeit aile oder nur einzelne Dateien wiederhergestellt, restauriert werden konnen. Sehen wir uns hierzu das Kommando an. 220
3.5.9 Sicher ist sicher! 3.5.9 Restaurieren von Dateien aus einem tar-Archiv Wichtig beim Restaurieren von Dateien ist, daB Sie sich bewuBt sind, daB bei tar die Dateien stets in das aktuelle Directory kopiert werden und zwar so, wie sie bei der Sicherung mit ihrem relativen Pfadnamen angezeigt wurden. Wenn beim Speich ern der Dateien die Anzeige z.B . .lBefehle/sicher erschien (siehe Bild 3146 auf Seite 220), wird in dem aktuellen Directory ein Unter-Directory Befehle angelegt. Um sich zu vergewissern, wie die Dateien gespeichert sind, kennen Sie sich vorab ein Inhaltsverzeichnis ausgeben lassen. Das Kommando hierzu lautet: tar -t[vf Gerat-IDateiname] I I tape archive I table Inhaltsverzeichnis I file [Dateiname(n) ] I Das direkt nachfolgende Wort ist die Bezeichnung fUr das Ger!!t oder der Name fUr die Archivdatei verbose zeigt zuslitzlich Attribute der Dateien an l.terden Dateinamen angegeben. wird nur nach diesen gesucht und die gefundenen angezeigt tar -t - Kommando, um ein Inhaltsliste eines tar-Archivs zu erhalten Es ist also empfehlenswert, sich noch einmal zu vergewissern, im richtigen Directory zu sein (pwd). Erst dann sollten Sie Daten wieder einlesen bzw. Daten aus dem Archiv extrahieren, herausholen (was allerdings nicht bedeutet, daB die Datei aus dem Archiv gelescht wird. Sie wird nur zuruckkopiert, bleibt aber in der Archivdatei erhalten). l> Bei tar werden Metazeichen in Dateinamen nicht expandiert (also nicht wie bei cpio, wo Metazeichen verwendet werden kennen) tar -x[mvf Gerat-IDateiname] l tape archive extract Herausholen Kopieren von Dateien I file Das direkt nachfolgende Wort ist die Bezeichnung fur das Gerat oder der Name fOr die Archivdatei Dateiname(n) I Wird kein Dateiname an· gegeben. werden aile Dateien aus dem Archiv zu ruckko piert verbose zeigt zUrUckkopierten Dateien an modification date Obernahme des Originaldatums (wie auch bei cpio) tar -x - Kommando, um Dateien aus einem tar-Archiv zuruckzukopieren 221
3 UNIX - praktisch angewandt Auch hierzu ein kurzes Beispiel. Angenommen, Monika hat die Datei Uebungenldatum versehentlich geloscht, so kann sie aus dem tar-Archiv diese Datei wieder restaurieren: $ pwd . . h . O' lusrlkurslmonika ___ KontroIIe, 0 b 1m nc ligen Irectory $ tar -xvf Itmp/tarSichJuli .IUebungenldatum Uebungenldatum - - Anzeige der Oateinamen durch die Option -v Bild 3-147: Beispiel Restaurieren einer Datei mit tar-x Wir wissen jetzt, wie man sichert und Dateien zurOckkopiert. Doch wann ist es sinnvoll zu sichern und wie lange sollten die Sicherungsdaten aufbewahrt werden? Lassen Sie uns hierzu ein paar Gedanken machen. 3.5.10 In welchem Turnus soli eine Sicherung erfolgen? Hierbei sollten Sie berOcksichtigen, daB Sie nicht immer sofort einen evtl. Fehler innerhalb von Dateien oder das Fehlen bestimmter Dateien bemerken. Auch ist es bei einem groBen Datenbestand aus Zeit- und PlatzgrOnden zu empfehlen, nicht jeden Tag aile Dateien zu sichern, sondern nur noch jene, die sich seit der letzten Sicherung verandert haben oder neu angelegt wurden. Nehmen Sie die Sicherung genau. Die Zeit, die Sie vielleicht einsparen, wenn Sie nur von Zeit zu Zeit sichern, konnte Ihnen teuer zu stehen kommen. Denken Sie an den eingangs erwahnten Vergleich mit dem Zahneputzen. Die Sicherung sollte zur taglichen Routine werden. Am besten erstellen Sie einen Sicherungsplan. Eine ideale Losung ware, die Sicherung z. B. nachts automatisch Ober das Netz auf einen eigenen Rechner (File-Server) mit ausreichender Plattenkapazitat durchzufOhren. Hier gibt es unter UNIX Kommandos, mit denen zu bestimmten Zeiten Befehle gestartet werden sollen. Hierzu gehort at Zeitangabe [Kommando] [Kommando(s)] I I Auszufuhrende Kommandos konnen in eigenen Zeilen angageben werden. Ende mil <ClrI+d> Eingabe mit HHMM (4 Ziffem) z.B. 2330 (am selben Tag urn 23:30 Uhr) at - Kommando, urn Befehle zu bestimmten Zeiten zu starten 222
3.5.10 Sic her ist sic her! Das at-Kommando ist nicht auf allen Systemen fUr aile Benutzer verfOgbar. Sehen wir uns trotzdem kurz die Funktionen von at in einem Beispiel an: $ at 2330 tar -cvf Julsich.tar . <Ctrl +d> Job monika.345678 wird am Mittwoch 31 Jul 2330 ausgefOhrt I at-Job-Nummer $ Bild 3-148: Beispiel Kommando mit at zu einer bestimmten Zeit ausfOhren zu lassen Bereits gestartete at-Jobs kennen nachtraglich kontrolliert oder wieder gelescht werden. Hierzu wird das at-Kommando mit Optionen angegeben: at [-r Jobnummer] [-Ii Jobnummer] remove loscht den angegebenen at-Job I I display zeigt den Inhalt des at-Jobs an list zeigt aile noch vorhandenen at-Jobs an at [rid] - Kommando, um at-Jobs anzuzeigen oder zu loschen FOr den Systemverwalter gibt es noch das Kommando crontab, das eine gesamte Tabelle abarbeitet (welches Kommando an welchen Tagen um wieviel Uhr gestartet werden soli). Mit crontab kennen Sicherungen automatisch ablaufen. Der Systemverwalter kann hier z. B. auch steuern, daB jeden Tag nachts um 3:00 Uhr die Sicherung von bestimmten Platten oder Dateien erfolgen soil. Die nachfolgende Tabelle enthalt Vorschlage fUr einen System-Sicherungsplan. Hierin ist, um einen Gesamteindruck zu erhalten, auch die Sicherung der System software mit aufgefUhrt, obwohl sie in diesem Buch nicht beschrieben wird. Worauf gesichert werden soli, entscheidet letztlich, welche Gerate vorhanden sind und wie groB die Datenmenge ist, die gesichert wird. Die Kapazitat von Streamern reicht, wie zum Anfang dieses Kapitels erwahnt, von 60 MB bis 40 GB. Der Streamer ist sicher das am haufigsten verwendete Sicherungsmedium. Floppies dagegen kennen nur fUr geringe Datenmengen verwendet werden. 223
3 UNIX - praktisch angewandt Doch was wann wie worauf gesichert wird und wie lange die Aufbewahrungszeit sein sollte oder muB, hangt von vielen Faktoren abo Jede Firma muB letztlich ihr eigenes Sicherungskonzept erarbeiten. Hier einige Anregungen: Was? 8emerkung Wie lange aufbewahren Original Systemsoftware UNIX nach Insta"ation bis zur neuen Version danach ca. 1/2 Jahr Backup der auf dem Rechner installierten und angepaBten System-Software nach Insta"ation wieoben 1.3 root- Oateisystem monatlich 2 Monate 1.4 bestimmte verl:lnderte Systemdateien (z.B. /etclpasswd u.a.) UNIX-Systemsoftware 1 .-11.1 1.2 - ~ 2 - - - 2.1 2.2 - - I-- wOChentlich ---1 -< I Original-Software wie Oatenbanken, Textverarbeitung, Betriebswirtschaftliche Software nach Insta"ation wie 1.1 Installierte und angepaBte Software nach Insta"ation wieoben Zu~tzliche - monatlich Spezifische Software-Verl:lnderungen (z. B.Oatenbanken, t:>etriebsw. Software, wie SAP (meist mit eigenen Sicherungsprogrammen» [ 2.4 --< 2 Wochen Optionale Software -Pakete . -2.3 Platten mit zu~tzlicher Software Benutzerdaten allgemeln 3 3.1 Plattent:>ereiche der Benutzerdaten - - --- tl:lglich/ wOchentlich 2 Wochen bzw. gesetzl. Aufbewahrungspflicht monatlich zusatzlich wOchentlich 12 Monate 4 Wochen tl:lglich 14 Tage ~ - tl:lglich verl:lnderte Benutzerdaten Qnkremente"e Sicherung) 4 Spezl elle Dat en 4.1 z. B. eigene Software-Produktion, Dokumentation nach Fertigste"ung - mit Versionspflege (evtl. spez. Versions-Software) nach Fertigste"ung Teilbereiche - spezie"e Dokumentation nach Bedarf nach Bedarf Finanzdaten nach best. Abschliissen gesetzl. Aufbewahrungspflicht 4.2 4.3 I I --I - r- --- ~d. '" ~ 2 Monate 3.2 _. 1 Ja: - -~-~ - Bild 3 -149: DenkanstOBe zu einem Sicherungsplan 224 ~ Wann?
3.5.10 Sicher ist sicher! Systemsoftware: Andert sich die Systemsoftware (z. B. durch eine neue Release, durch HinzufOgen weiterer Hardware etc.), muB die Originalsoftware u. U. erneuert werden. Sie erhalten dann meist vom Hersteller ein neues Band. Sollten Sie dagegen nur eine Erganzung zu den bisherigen Bandern oder dem entsprechenden Auslieferungsmedium erhalten haben, sind natOrlich beide Datentrager aufzubewahren. Auf jeden Fall sollte die altere Version solange aufbewahrt werden, bis sich die neue Version als stabil gezeigt hat. Benutzerdaten: Diesen Sicherungsplan k6nnen Sie analog fOr Ihre pers6nliche Datensicherung verwenden. Bei groBen Systemen werden in der Regel samtliche Daten vom Systemverwalter gesichert. Bei kleineren Systemen obliegt die Sicherung der Anwenderdaten den jeweiligen Benutzern. Sicherlich laBt sich lange darOber diskutieren, wann, was, wie und worauf gesichert werden soli und vor allem, wie lange die jeweiligen Sicherungen aufzubewahren sind. Aufbewahrungsort: Generell sollten Sicherungen auf Datentrager vor Staub, Schmutz, Feuchtigkeit, Feuer und magnetischen EinflOssen geschOtzt sein und nur fOr Systemverwalter oder bestimmten Personen zuganglich sein - also gut abgeschlossen z.8. in einem Schrank. FOr wichtige Dateien empfiehlt es sich, die Sicherungsbander sogar in einen Tresor zu geben. Bei eigenen Produkten (Software, Dokumentation etc.) ware als Aufbewahrungsort ein Banksafe nicht verkehrt. Allgemein: Der Sicherungsplan soli lediglich eine Anregung sein. Wie Sie Ihre Sicherung einrichten, hangt zweifelsohne von der Wichtigkeit und Anderungshaufigkeit des Datenbestandes abo Doch nehmen Sie die Sicherung nicht auf die leichte Schulter, fragen Sie nach, wie das Sicherungskonzept Ihrer Firma bzw. Ihrer Abteilungsrechner aussieht. Inkrementelle Sicherung: Sinnvoll ist z. 8., wahrend der Woche nur aile geanderten und neu angelegten Dateien zu sichern (inkrementelle Sicherung). Das Kommando find bietet die M6glichkeit, aile Dateien anzuzeigen, die neuer als eine bestimmte Datei sind. Wenn Sie also bei Ihrer Sicherung gleichzeitig eine Datei anlegen, mit date> sichlog k6nnen Sie bei der nachsten inkrementellen Sicherung abfragen, welche Dateien neuer sind als das Modifikationsdatum von der Datei sich/og. Zusatzlich k6nnen Sie selbst jeweils nachsehen, wann die letzte Sicherung durchgefOhrt wurde (fag und Uhrzeit). Wenn Sie sich vergewissert haben, daB Sie in Ihrem Home-Directory sind, geben Sie folgenden Kommandoaufruf fOr die inkrementelle Sicherung an: find • -newer sichlog -print I cpio -ovB > Idev/rmtO oder je nach Gerateauswahl z.B. auf die Floppy als Datentrager > IdevlfdO 225
3 UNIX - praktisch angewandt oder falls Sie die Floppy vorab in das Dateisystem montiert haben: cpio -pvmd Ziel-Directory Nach dieser Sicherung mussen Sie die Datei sichlog mit dem neuem Sicherungsdatum uberschreiben, damit die nachste inkrementelle Sicherung erst ab diesem Datum erfolgt: date> sichlog Da sich diese Kommandofolgen taglich wiederholen und dabei leicht Fehler getippt werden konnen, oder es vergessen wird, >sichlog< neu zu erstellen, wird es fUr Sie hochste Zeit zu lernen, wie Sie eigene Prozeduren schreiben konnen. Beispiele von Shell-Prozeduren fUr die tagliche und wochentliche Sicherung finden Sie im KapiteI3.7.2 auf Seite 259. Doch gonnen Sie sich erstmal eine kleine Ruhepause. 226
Sicher ist sicher! 3.5.11 ~~--------------~----~--~--~~~- 3.5.11 Austausch yon Daten mit dem PC Bei dem vorigen Abschnitt hatten wir uns nur auf UNIX-Rechner bezogen. In der Praxis zeigt sich jedoch mehr und mehr, daB in einer Firma nicht nur eine Rechner-Plattform genutzt wird, sondern verschiedene. In erster Linie aus KostengrOnden hat sich der PC (Personal Computer) mehr und mehr durchgesetzt. Daten mOssen also entsprechend ausgetauscht werden konnen. Die komfortabelste Art ist sicher Ober das Netz, z. B. mit ftp (siehe auch Abschnitt 3.6.4 auf Seite 245), doch dies kann u. U. manchmal aufwendiger sein als Ober einen Datentrager. Ais Datentrager bieten sich die fOr den PC bereits vorformatierten Floppies an. Fast jeder UNIX-Rechner kann diese Floppies lesen, beschreiben und auch formatieren. Um DOS-Floppies zu bearbeiten, wird die Floppy lediglich in das Laufwerk geschoben. Die Kommandos sind leider nicht auf allen Rechner gleich. Informieren Sie sich deshalb bei Ihrem Systemverwalter. Die gebrauchlichsten Kommandos sind: dosdir dosdir - Kommando, um sich den Inhalt eines Directories auf einer DOS-Yorformatierten Floppy anzusehen dosread DOS-Datei(en) UNIX-Datei (oder Directory) dosread - Kommando, um DOS-Dateien auf einen UNIX-Rechner zu kopieren doswrite UNIX-Datei(en) DOS-Datei (oder -Directory) doswrite - Kommando, um UNIX-Dateien auf eine DOS-Floppy zu kopieren Sollten Sie keine DOS-Floppy zur Hand haben, konnen Sie eine unformatierte oder UNIX-Floppy neuformatieren: dosformat dosformat - Kommando, um eine Floppy im DOS-Format zu formatieren Diese Kommandos sprechen das Standard-Floppy-Laufwerk an und schreiben/lesen dort im DOS-Format. Die Geratedatei wird bei diesen Kommandos 227
3 UNIX - praktisch angewandt ------------------------~-- nicht angegeben. Hier ein Beispiel, wie Monika von einer DOS-Floppy Textdateien in Ihr Directory Texte kopiert: $pwd lusrlkurs/monikafTexte $ dosdir ________ Inhaltsverzeichnis der Floppy Kopieren einer Datei in das aktuelle UNIX-Directory mit neuem Namen gruSS. txt text1.txt text2.txt $ dosread gruss_txt Dostext $ dosread t*." . ~ Kopieren von mehreren Dateien, wobei die bisherigen Namen beibehalten werden Bild 3 - 150: Beispiel Kopieren von DOS-Dateien nach UNIX l> Beachten Sie, daB Metazeichen fOr DOS-Dateien nur fOr den 8-stelligen Namen gelten, fOr die durch den Punkt getrennte Extension mOssen die Metazeichen getrennt angegeben werden (z. B. t*.*). Ein weiteres Beispiel. Mochte Monika nun umgekehrt aus Ihrem Directory z. B. die Datei Uebungenlueb1 auf ihrem PC zu Hause weiterbearbeiten, also von UNIX eine Datei auf die DOS-Floppy kopieren, gibt sie ein: $ cd ../Uebungen $ doswrite ueb1 ueb1.txt $ dosdir gruss.txt text 1. txt ~ Ergllnzte Datei von UNIX text2.txt ueb 1. txt Bild 3-151: Beispiel Kopieren von UNIX auf DOS-Floppy l> 228 Achten Sie beim Kopieren von UNIX-Dateien nach DOS-Dateien darauf, daB Sie unter DOS nur maximal achtstellige Namen vergeben dOrfen und eine entsprechende Endung, z.B. >.txt, anhangen.
Sicher ist sicher! 3.5.11 Noch ein paar Tips fOr den Austausch zwischen PC und UNIX-Rechnern I> I> Wenn Sie formatierten Text aus Textverarbeitungsprogrammen von UNIX fOr ein anderes Programm auf DOS Obertragen wollen (oder umgekehrt z.B. von MS-Words nach Applixware), empfiehlt es sich, das Austauschformat rtf (rich text format) hierfOr zu verwenden. Es ist bei den meisten Textverarbeitungsprogrammen verfOgbar. Dieses Format hat den Vorteil, die unterschiedlichen Darstellungen der Umlaute zwischen DOS, UNIX und Macintosh richtig zu interpretieren und die Textformatierungen (Fettschrift, kursiv, Absatze, Kopfzeilen etc.) zu konvertieren (in ein anderes Format zu ubertragen). Analog gilt fOr Kalkulations-Software als Austauschformat (z.B. von EXCEL nach Applixware oder Lotus bzw. umgekehrt) das SYLK-Format, abgekOrzt mit .slk. Es Obertragt die unterschiedlichen Aufzeichnungen der Spreadsheet-Programme in das jeweils richtige Format. Da die Floppy im Beispiel Bild 3-151 auf Seite 228 nur als Datentrager genutzt wird, also nicht im Dateisystem eingehangt wurde, kann sie einfach wieder entfernt werden. Bei manchen Systemen gibt es, um die Floppy zu entfernen, eigene Kommandos (z. B. bei Sun - eject). Auf einigen Systemen werden DOS-Floppies auch Ober den Dateimanager automatisch erkannt, und die Dateien k6nnen dann Ober Drag and Drop' kopiert werden (z. B. bei Sun Open Win im Dateimanager und hier im Menu File -t Check for Floppy) . Ober eine Schaltflache, auf der ein entsprechender Hinweis steht, (z.B. eject Floppy) wird dann gesteuert, daB die Floppy wieder ausgeworfen wird. • Drag und Drop bedeutet: mit der Maus die Datei(en) anwahlen und in ein anderes Fenster ziehen 229
3 UNIX - praktiseh angewandt 3.5.12 Zusammenfassung der Kommandos Kommandoeingabe Funktion r- . mount Idev/Gerat \ mont/eren Directory mit absolutem Pfadnamen Montiert Platten/Floppies Formatierte und mit einem UNIX-Dateisystem versehene Platten/Floppies werden in den Gesamtdateibaum unter dem angegebenen Directory eingehangt umount Idev/Geratename mt [-rew] [-fst] [n] I 'Wieder abmontieren Hangt montierte Dateisysteme wiederab magnetic tape Kontrollfunktionen -rew rewind Spult um n Dateisets zuruck -fsf files forward Spult um n Dateisets vor Ausgabe Dateiliste I epio \ -p[dmuv] Ziel-Directory Beispiel: cd /usr/kurslhans find. -print I epio -pvmd \ /Sicherunglhans Unler DOS: 230 copy copy input output -p pass - weiterreichen Kopiert Dateien von Platte zu Platte Uber eine Dateiliste, z. B. mit find . -print werden die zu kopierenden Dateien ubergeben -d directory Unter-Directories werden angelegt, falls sie noch nicht vorhanden sind -m modification date Die kopierte Datei erhalt das Datum der Originaldatei -u unconditional Die kopierte Datei uberschreibt evtl. schon vorhandene Dateien. Dateien werden sonst nur dann uberschrieben, wenn deren Modifikationsdatum alter ist -v verbose - geschwatzig Aile ausgefuhrten Kopien werden angezeigt Aile Dateien des aktuellen Directories werden mit gleichem Namen in das D;rect"", !S;cherunglhans kO~
3.5.12 Sieher ist sieher! Kommandoeingabe Funktion Ausgabe Datei/iste I epio -o[vB] \ > Gerate- oder Archivdatei copy input output - Ausgabe Kopiert Dateien auf einen Datentrager oder in eine Arehivdatei Aehtung: Ausgabe-Umleitungszeichen > angeben! -0 output kopiert die als Dateiliste Obergebenen Dateien und Unter-Directories auf das angegebene Gerat oder in die Archivdatei -v verbose - geschwatzig Aile ausgefOhrten Kopien werden angezeigt Beispiel: find. -print I epio -ovB > /dev/mtO -B block Blockungsfaktor fUr Magnetband Unter DO : xcopy Aile Dateien vom aktuellen Directory werden auf Magnetband geschrieben Ci)iO -i[dmuv] [Dateien] \ < Gerat- oder Archivdatei Unter DOS: xcoPY. copy input output - Einlesen liest Dateien aus einem mit epio erstellten Datenarehiv (Datei oder Datentrager) zUrUek Aehtung! Eingabe-Umleitungszeichen < angegeben! -i input Einlesen/ZurUckschreiben der Sicherung -d directory Unter-Directories werden angelegt, falls sie noch nicht vorhanden sind -m modification date Die kopierte Datei erhalt das Datum der Originaldatei -u unconditional I Die kopierte Datei Oberschreibt evtl. schon vorhandene Dateien, sonst werden Dateien nur dann Oberschrieben, wenn deren Modifikationsdatum alter ist -v verbose - geschwatzig Aile ausgefUhrten Kopien werden angezeigt 231
3 UNIX - praktisch angewandt Kommandoeingabe tar -c[bhvf Gerat-/Dateiname] Start-Directory Beispiel: tar -cvf /tmp/Sich.tar. tar -t[vf Gerat-/Dateiname] tar -x[mvf Gerat-/Dateiname] [Datei(en)] Beispiel: tar -xvml /tmp/tarSich .Itext1 232 Funktion ~ . --:-:--------~--- tape archive -c create Sichert Dateien auf Magnetband oder in eine Archivdatei -8 Block Blockungsfaktor fUr Magnetband -h verfolgt aile symbolischen Links und kopiert die dort aufgefundenen Dateien -v verbose aile ausgefUhrten Kopien werden angezeigt -f file Das direkt nachfolgende Wort ist die Bezeichnung fUr das Gerat oder der Name fUr die Archivdatei (f deshalb stets als letzte Option eingeben) Kopiert aile Dateien des aktuellen Directories ( • )in die Archivdatei Itmp/Sich. tar Die Datei Itmp/Sich.tar wird automatisch neu angelegt bzw. eine bereits vorhanden uberschrieben -t table Es wird nur ein Inhaltsverzeichnis des Archivs ausgegeben -v verbose zeigt zusatzlich aile Attribute der Dateien an tape archive -x extract extrahieren Liest Dateien von einem mit tar erstellten Datentrager oder einer Archivdatei zUrUck -m mOdify die zUrUckgelesenen Dateien erhalten das Original datum (nicht das aktuelle Datum) -v verbose aile ausgefUhrten Kopien werden angezeigt -I file Das direkt nachfolgende Wort ist die Bezeichnung fUr das Gerat oder der Name fUr die Archivdatei Kopiert aus der Archivdatei die Datei ./text1 zUrUck ins aktuelle Directory
Sicher ist sicher! Kommandoeingabe at [Zeit [Datum] ] [Kommando] Beispiel: at 18:00 write hans < Ende Weitere Option en: at [-~ (-r Jobnummer] dosdir Unter DO: FOhrt Kommandos zu bestimmten Zeiten aus Um 18:00 wird "hans" die Nachricht, die in der Datei Ende steht, geschickt -I list listet vorhandene at-Jobs -r remove loscht den at-Job DOS Directory Zeigt den Inhatt eines DOS-Directories auf einer PC-Floppy DOS Floppy formatieren Formatiert eine DOS-Floppy ronn t dosread DOS-Datei UNIX-Datei Unter DO: Funktion at - zu bestimmter Zeit dir dosformat Unter DOS: 3.5.12 DOS Datei lesen Kopiert eine DOS-Datei nach UNIX copy doswrite UNiX-Datei DOS-Datei DOS Datei schreiben Kopiert eine UNIX-Datei auf eine DOS-Floppy 233
3 234 UNIX - praktisch angewandt
3.6 Wissenswertes uber Netze In diesem Kapitel wollen wir nicht ins, sondern ans Netz gehen, nicht gefangen werden, sondern neue Verbindungen knDpfen. Das Thema Netzwerke fUlIt BDcherregale! Was sollten Sie als UNIX-An wender, Dber Netze wissen? Nur das Wichtigste ist in diesem Kapitel kurz zusammengestellt. Damit Sie die Vorteile von UNIX im Netz praktisch nutzen konnen. Die einzelnen Themen: 3.6.1 Was ist ein Netz - ein paar Grundinformationen 3.6.2 Wie wird eine Verbindung hergestellt? 3.6.3 Welche Netzwerk-Kommandos sind fOr Sie interessant? 3.6.4 Wie arbeiten Sie mit ftp? 3.6.5 Zusammenfassung der Kommandos 235
3 UNIX - praktisch angewandt 3.6.1 Was ist ein Netz - ein paar Grundinformationen Was fallt Ihnen spontan zum Thema Netz ein? Vielleicht Fischernetz, Einkaufsnetz, Haarnetz, Spinnennetz - World Wide Web? Aile haben etwas gemeinsam, sie sind >geknOpftc oder >verwoben c. 1m Bild 3-2 (M6gliche Terminalverbindungen) auf Seite 35 sahen Sie eine Netzverbindung, wobei hier Ober Kabel und ein kleines Kastchen die Verbindung zu anderen Rechnern dargestellt war. Um Rechner miteinander zu verbinden, gibt es je nach Art des Netzes mehrere M6glichkeiten. Zum einen ben6tigen wir hardwaremaBig eine Verbindung und zum anderen entsprechende Software, die den Austausch zwischen den Rechnern steuert. Benotigte Hardware o Kabel, wie z. B. Terminalleitungen (V-24 reicht fOr uucp aus -unix to unix copy) oder Ethernet-Kabel bzw. auch Cheapernet-Kabel (meist die Grundlage fOr TCP/IP) mit dem entsprechenden Controller-Boards (z. B. Ethernet-Karte). o Ober gr6Bere Strecken mOssen diese Leitungen verstarkt, OberbrOckt oder neu aufbereitet werden, man spricht hier auch von Repeater, Bridge und Router. o Wenn Verbindungen an andere Netze angeschlossen werden (z.B. ans Telefonnetz), ben6tigt man ein Modem (Modulator Demodulator - Umwandlung von digital auf analog und umgekehrt). Benotigte Software Hier unterscheidet man zwischen der Protokoll-Software, die den Austausch von Informationen zwischen den Rechnern steuert, und den Diensten, die dem Benutzer angeboten werden. ODie einfachste Protokoll-Software Ober Terminal-Leitungen ist uuep, siehe auch Seite 22. 236 o Ais Protokoll-Software wird unter UNIX am haufigsten TCP/IP (Transmission Control Protocol/Internet Protoco~ eingesetzt. o An Diensten steht fOr TCP/IP u. a. zur VerfOgung: • rep (remote copy), um Dateien im Netz zu kopieren • rsh (remote shell), um eine Shell zur AusfOhrung anderer Programme auf einem entfernten Rechner im Netz zu starten • rlogin (remote login) oder tel net (telecommunication netware), um sich an einem entfernten Rechner anzumelden • ftp (file transfer protoco~, um Dateien auszutauschen AuBer dem UNIX-Netz gibt es eine Reihe anderer Netze, die herstellerspezifisch sind: Hierzu geh6ren u.a. SNA von IBM, DNA oder DECNet von DEC oder TRANSDATA von Siemens (SNI). Die meisten dieser Netze unterstOtzen die Einbindung von Netzwerkknoten mittels TCP/IP. Um nun herstelierObergreifende unabhangige Kommunikation von unterschiedlichen Rechnerplattformen zu erm6glichen, wurden Standards von ISO (International Standards Organization),
3.6.1 Wissenswertes Ober Netze einem internationalen NormungsausschuB, entwickelt. Die einzelnen Voraussetzungen und Dienste werden im sog. OSI-Model (Open Systems Interconnection) zusammengefaBt und in 7 Schichten (Layers) unterteilt. Ais Anwender ist es zwar gut zu wissen, daB Standards existieren und gepflegt werden, aber letztlich mOssen Sie die Zuordnung der einzelnen Schichten nicht kennen. Nachstehen de Tabelle dient nur als Hintergrundinformation (but irs nice to know): Nr. 7 6 5 Schichten-Bezeichnung - Funktion Application - Anwendungsschicht Die hochste Ebene, die den Austausch zwischen Program men erlaubt XAOOIX.SOO 3 Network - Vermittlungsschicht Um eine Verbindung aufzubauen, sind Teilverbindungen notwendig. Diese werden hier verknOpft und die Daten >verpackt. (Paketierung) >- 1/1 1/1 Dl c: :::J "t:I c: Q) ~ c: < .... Q) :J o a: Data Link - Sicherungsschicht Diese Schicht ist fOr die fehlerfreie Obertragung zustandig. Hier werden die Fehlerkontrollmechanismen und Zugangsverfahren festgelegt. PhysicalPhysikalische Bit-Ubertragungsschicht Es ist die Schnittstelle zum Obertragunsmedium und basiert auf binaren Informationen. Sie sendet und empfangt die Signale, die Ober das physikalische Medium (z. B. Modem) geschickt werden. Bild 3 -152: OS/-Schichtenmodel E Q) 1/1 Session Kommunikations-Steuerungsschicht Sie dient der Steuerung und Koordinierung der Kommunikation zwischen den Prozessen beider Rechner Transport - Transportschicht Hier erfolgt der Auf- und Abbau einer Verbindung zwischen den zwei Rechnern und die Umsetzung der logischen Namen in Netzadressen. Es ist zusatzlich die Schnittstelle zwischen Anwendungssystem (S-7) und dem Transportsystem (1-3) 1 ftp. rlogin, tel net, Teletext, Presentation - Datendarstellungschicht Hier werden die Daten entsprechend .ausgepackt., Codekonvertierung, Kompression 4 2 Zuordnung Q) Cl "0 .t: co .... Q) w ~ n; o a. Q) o ~ Q) a: 237
3 UNIX - praktisch angewandt 3.6.2 Wie wird eine Verbindung hergestellt? Ais UNIX-Anwender konnen Sie davon ausgehen, wenn Ihr Rechner im Netz arbeitet, daB Ihr Systemverwalter die n6tigen Voraussetzungen geschaffen hat. Dazu geh6rt u.a., daB er Rechnernamen mit den zugeh6rigen IP-Adressen verknOpft, dies wird z. B. in der Datei letelhosts eingetragen. Somit ist es fOr Sie nicht notwendig, die IP-Adresse eines Rechners zu kennen, sondern der Rechnername genOgt. Eine typische IP-Adresse ist z. B. '150.270.115.7<. TCP/IP muB installiert und die Startroutinen mOssen eingetragen sein. Damit nicht jeder, der die IP-Adresse eines Rechners ken nt, Zugang zu dem Rechner Ober Netz erhalt, hat der Systemverwalter mehrere M6glichkeiten, ein System vor fremden Zugriff Ober Netz zu schOtzen. Eine M6glichkeit ist, in der Datei letclhosts.equ;v einzutragen, welche Rechner, Benutzer und Benutzergruppen Ober Netz mit den Kommandos rlogin oder telnet, rsh und rcp arbeiten dOrfen, bzw. davon ausgeschlossen sind. Zusatzlich kann bei den einzelnen Benutzern im Home-Directory in der Datei .rhosts eingetragen werden, wer von welchem Rechner zu diesem login-Directory Zugang bzw. keinen Zugang hat. 3.6.3 Welehe Netzwerk-Kommandos sind fOr Sie interessant? Um die Namen der Rechner, zu denen Sie direkten Kontakt aufnehmen m6chten, zu erfahren, k6nnen Sie sich mit pg letc/hosts den Inhalt der Datei anzeigen lassen. Wollen Sie wissen, ob Sie einen bestimmten Rechner momentan erreichen k6nnen, geben Sie ein ping Rechnername ping - Kommando, um zu kontrollieren, ob andere Rechner momentan erreichbar sind Das Kommando ping gibt Ihnen dann eine entsprechende Information, z. B. $ ping asterix asterix is alive $ ping idefix no answer from idefix $ 238 Bild 3 -153: Beispiel ping - Erreichbarkeit anderer Rechner kontrollieren
3.6.3 Wissenswertes uber Netze Wissen Sie den Namen Ihres Rechners nicht, geben Sie ein: hostname hostname - Kommando, um den eigenen Rechnername zu erfragen Um Nachrichten an Benutzer anderer Rechner zu schicken, haben wir ja bereits das Kommando mail kennengelernt (siehe auch Seite 73). Hier wurde der Benutzername zusammen mit dem Rechnernamen, verbunden mit @, angegeben: mail benutzemame@Rechnemame Mit diesem Kommando konnen auch Rechner weltweit erreicht werden. Die Post wird, wie wir schon gehort haben, z. B. Ober sog. Provider weitergeleitet. D. h. Sie konnen auch einemail an Benutzer anderer Netze wie Z. B. an CompuServe' schicken. Viele Systeme bieten zu diesem mail-Kommando komfortablere Mail-Software an, die es auch erlaubt, Dateien mit anzuhangen. Doch auch ohne diese Zusatzsoftware konnen Sie Dateien von oder an entfernte Rechner kopieren, wenn Sie hierfOr eine Berechtigung haben. U.a. sind hierfOr die Dateien letclhost.equiv und falls vorhanden .rhosts in dem jeweiligen Home-Directory des Benutzers auf dem entfernten Rechner maBgebend. Bei groBen Firmen ist es abteilungsweit oder gar firmenweit so geregelt, daB Sie sich mit Ihrem Benutzernamen auch bei anderen Rechnern innerhalb der Firma anmelden konnen und demzufolge auch die nachfolgenden Kommandos verwenden dOrfen. rep entfernter_Rechnername:Datei(en) DateCoder_Directory_(Iokal) oder rep Dateiname(n)jlokalj entfemter Rechnemame:DateCoder_Directory rcp - Kommando, um Dateien von oder an entfernte Rechner zu kopieren Bei rep (remote copy) mOssen Sie allerdings die Directory-Strukturen des anderen Rechners kennen, wissen, wo die Datei, die Sie kopieren wollen, zu finden , Obrigens, wenn Sie mir eine e-mail schicken wollen, 100712.1411 @CompuServe.com Sie erreichen mich unter 239
3 UNIX - praktisch angewandt ist, bzw. wohin die Datei kopiert werden soil. Selbstverstandlich mOssen Sie in dem dafOr vorgesehenen Directory Schreibberechtigung haben. Wissen Sie noch, welches Directory Ihnen in solchen Fallen immer erlaubt, Dateien neu anzulegen (wenn auch meist nur temporar)? Der Hinweis temporar hat Sie sicherlich auf den richtigen Namen gebracht: das Directory /tmp. [> Doch Vorsicht, auf vielen Systemen werden nachts oder spatestens beim nachsten Neustart des Rechners aile Dateien im Directory /tmp gel6scht. Nehmen wir an, Monika arbeitet auf dem Rechner idefix. Auf dem Rechner asterix ist fOr aile Benutzer des Rechners idefix die Zugriffsberechtigung erteilt. Monika k6nnte sich dann die Datei protokol/ ,abholen<. Die Datei protokol/ wurde ihr zuvor von einem anderen Benutzer, der ebenfalls Erlaubnis hat, auf den Rechner asterix zuzugreifen, in dem Directory /tmp auf asterix bereitgelegt. Dieses Verfahren, nur Ober einen bestimmten Rechner Dateien Ober Netz auszutauschen, wird aus SicherheitsgrOnden oft angewendet. 1m Internet ist es auch Oblich, spezielle Directories auf den Netz-Rechner zum Austausch von Dateien bereitzustellen. Diese Directories sind z. B. /pub/incoming (public - 6ffentlich, eingehende Sendungen) und /pub/outgoing. Die Zugriffsrechte sind aus SicherheitsgrOnden meist so gesetzt, daB Sie unter incoming nur Dateien ablegen dOrfen (Schreibrecht -wx) und bei outgoing Dateien nur lesen und somit kopieren dOrfen (Leseerlaubnis r-x). Rechner malefix Benutzer Xoo7 protokoll Rechner idefix /usrlkurs/monika protokoll Rechner asterix Directory Itmp protokoll $ rep asterix:/tmp/protokoll + fremder Rechner t aktuelles Directory $ rep protokoll asterix:ltmp • Datei im aktuellen Directory r fremder Rechner BNd 3 -154: Beispiel rcp - Kopieren von und auf fremde Rechner 240 Apropos Rechnername. Hier muB ich oft schmunzeln, wenn ich bei verschiedenen Firmen im Netz arbeite. Innerhalb einer Abteilung sind Namen fOr Rechner vergeben, die auch ein biBchen die Interessen der Mitarbeiter widerspiegeln. So z. B. wurden die Rechner nach bekannten Komponisten benannt, es gab also Rechner mozart, bach, vivaldi, schubert, oder nach Comicfiguren: asterix, idefix, obelix usw., andere hatten Sternbilder und Planeten gewahlt oder einfach nur
3.6.3 Wissenswertes tiber Netze die Farbpalette (rot, blau, gelb usw.) verwendet. Wie lauten die Rechner in Ihrer Firma? Wissen Sie noch, wie Sie dies herausfinden? Vernetzte Rechner bieten neben diesem zur netten Arbeitsatmosphare beitragenden personlichen Touch auch eine Reihe von Vorteilen. So konnen Hardund Software auch von anderen Rechnern genutzt werden und auf gleiche Dateien (z. B. Datenbanken) zugegriffen werden. Wollen Sie z. B. Ihre Dateien auf Streamer sichern, aber an Ihrem Rechner befindet sich hierfur kein Laufwerk, so konnen Sie auf einen anderen Rechner mit Hilfe von rsh (remote shell) z. B. die Ausgabe von tar umleiten. Um dann auf den Streamer zu schreiben, wird ein allerdings sehr getahrliches Kommando eingesetzt, das Kopien von einem Gerat zum anderen Gerat durchfUhrt: dd (device to device). Seien Sie also vorsichtig. [> Das Kommando dd ist deshalb so gefahrlich, weil es radikal Gerate (devices) uberschreibt (soweit kein Schreibschutz dies verhindert). Speziell Systemverwalter konnten mit dd durch einen Fehler (falsche Ausgabe 0=) wichtige Platten uberschreiben! Wir benotigen, um auf ein Gerat eines entfernten Rechners zu schreiben, also drei verschiedene Kommandos: 1. das uns bereits bekannte Kommando tar (siehe auch Seite 219), das in diesem Fall nicht auf ein Gerat oder eine Datei schreiben soli, sondern die Ausgabe an eine Pipe umleitet. Statt eines Dateinamens wird hier dann ein ,-< eingegeben. 2. das Kommando rsh, das ebenfalls voraussetzt, daB Sie eine Berechtigung haben, auf den entfernten Rechner zuzugreifen (/etclhosts.equiv bzw . .rhosts im jeweiligen Home-Directory des Benutzers auf dem entfernten Rechner) 3. und das Kommando dd Neu sind fUr uns die Kommandos rsh und dd: rsh Rechnemame [Kommando oder Date/] "I I I remote shell I Kommando, das ausgefOhrt werden 5011. Wird eine Datei angegeben, nimmt die Shell an, daB es sich hierbei urn ein Shellscript handelt. wenn nicht, werden Fehlermeldungen ausgegeben rsh - Kommando, um auf einem entfernten Rechner eine Shell zu starten 241
3 UNIX - praktisch angewandt Nur kurz das N6tigste yom Kommando dd fOr die Umleitung von tar: id [if=eingabe] [of=ausgabe] optionr wert z. B. device to devici bL64 blocksize=64 KB (Kilobyte) output f ile Angabe der Datei oder des Gerates z. B. Idev/rmtlO input file Dateiname oder Gerat. Erfolgt die Eingabe wie in unserer Anwendung uber die Pipe, wird kein input file angegeben dd - Kommando, um Dateien oder gesamte Platten 1:1 zu kopieren Ausgabe wird uber die Pipe an die rsh ubergeben, die dann mit dem Kommando dd auf den Streamer am entfemten Rechner schreibt . I rsh rechnerB dd of=/dev/rmUO bs=64k I I blocks;ze=64 KB (Kilobyte) output file Angabe der Datei oder des Gerates z. B. IdevlrmtlO samtliche Dateien des aktuellen Directories werden kopiert Stall eines Dateinamens wird hier ,-, angegeben, wenn die Ausgabe umgeleitet wird. Kurz zur Wiederholung: create - erstellen, h - hard/inks verfolgen und kopieren vemose - geschwalzig, anzeigen der erfolgten Kopien Bild 3 -155: Beispiel Ausgabe von tar mit rsh und dd auf ein Gerat im Netz Sind in einer Firma mehrere Rechner vernetzt, so werden bestimmte Systemverwalterdateien gemeinsam auf einem Server gehalten. Die Pflege und Verwaltung kann Ober das Program NIS (Network Information Service) erfolgen. Mit NIS werden z. B. innerhalb eines Netzes aile Benutzernamen einheitlich gefOhrt. Sie k6nnen sich dann in der Regel unter Ihrem Benutzernamen auf einem entfernten Rechner anmelden. Hierzu gibt es zwei Kommandos, die fast die gleichen Funktionen haben (sie sind aus den unterschiedlichen UNIX-Entwicklungen entstanden): telnet oder rlogin: 242
3.6.3 Wissenswertes uber Netze telnet [Rechnername] Wird beim Aufruf kein Rechnemame mit angegeben. kann mit den Kommandos open Rechnername die Verbindung aufgebaut werden. mit close die Verbindung zu dem Rechner abgebrochen werden ? geben Sie ein Fragezeichen ein. erhalten Sie die moglichen Kommandos angezeigt Das Programm telnet kann beendet werden mit quit oder <CTRL + d> telnet - Kommando, um sich an einem entfernten Rechner anzumelden rlogin [-I Loginname] [Rechnername] I remote login I I login - I Mit -I wird der Login-Name mit angegeben Wird beim Aufruf kein Rechnemame mit angegeben. kann mit den Kommandos open Rechnername die Verbindung aufgebaut werden. mit close die Verbindung zu dem Rechner abgebrochen werden Das Programm rlogin kann beendet werden mit exit oder <CTRL + d> rlogin - Kommando, um sich an einem entfernten Rechner anzumelden In der Regel werden mit NIS bzw. Ober NFS (Network File System) aile Benutzerdaten. also auch Ihr Home-Directory auf einem eigenen Rechner (File-Server) gefUhrt. Mit NFS werden Dateibaume eines anderen Systems im lokalen Dateisystem eingehangt (z. B. Ihr Home-Directory auf dem File-Server in das Dateisystem Ihres lokalen Rechners bzw. auf dem Rechner. auf dem Sie sich anmelden). Das EinMngen von Dateibaumen darf in der Regel nur durch den Systemverwalter erfolgen (fetc/mount). Sie arbeiten dann also immer mit Ihren Dateien, obwohl Sie sich auf einem anderen Rechner mit telnet oder rlogin angemeldet haben. Dies hat den Vorteil. daB Sie. z. B. auf einem dort verfOgbaren Streamer mit tar direkt zugreifen k6nnen. Mit den Kommandos rlogin oder telnet k6nnen Sie nach erfolgreicher Verbindung und Anmeldung aile UNIX-Kommandos aufrufen. wie Sie es bisher bei der direkten Eingabe an Ihrem Terminal gewohnt waren. Allerdings muB. um mit einer grafischen Oberflache zu arbeiten, zusatzlich der Variablen DISPLAY der Name des Rechners, an dem Sie sitzen. zugewiesen werden, z.B. DISPLAY=asterix:O.O; export DISPLAY (fOr die Bourne- oder Korn-Shell) und setenv DISPLAY asterix:O.O (fOr die C-Shell) 243
3 UNIX - praktisch angewandt Sie mOssen, um auf einem entfernten Rechner arbeiten zu kennen, einen dort gefOhrten Benutzernamen und das PaBwort dazu wissen. Sie werden bei beiden Kommandos rlogin und telnet danach gefragt. Auch bei diesen beiden Kommandos wird die Zugriffsberechtigung Ober die Dateien letclhosts.equiv und soweit vorhanden .rhosts in dem jeweiligen Home-Directory des Benutzers auf dem entfernten Rechner geprOft. Erst wenn die Erlaubnis vorliegt und bei richtiger Eingabe des Passworts, kennen Sie auf dem entfernten Rechner arbeiten. Wenn netzweit die gleiche Benutzerkennung, z. B. Ober NlS, eingerichtet ist, kann die Abfrage der Passwerter entfallen. Ais Bereitzeichen der Shell wird bei telnet der Rechnername angezeigt. Eine Sitzung an einem entfernten Rechner, hier nur um Datum und Uhrzeit zu kontrollieren, kennte dann wie folgt aussehen: $ telnet asterix asterix> trying 150.270.115.7 connected to asterix login: monika Password: PaBwort nicht sichtbar Last login: rue Jul 9 13:33 from asterix asterix> date u+%d. %h % T" to. Jul 15;20:03 asterix> exit oder <CTRL + d> connection closed by foreign host $ wieder zurUck am eigenen Rechner Bild 3 - 156: Beispiel Anmelden an einem entfemten Rechner mit telnet Wenn Sie oft Ober Netz an anderen UNIX-Rechnern arbeiten, empfiehlt es sich, das Bereitzeichen Ihrer Shell generell mit dem Rechnernamen zu erganzen. Wie Sie Ihr Bereitzeichen abandern kennen, erfahren Sie etwas spater im Kapitel 3.8.6 auf Seite 316. Ein sehr wichtiges Kommando, um netzweit Daten auszutauschen, ist ftp (file transfer protocol). Mit diesem Kommando kennen Sie Verbindungen auch zu anderen Rechnerplattformen (wie DOS, Macintosh oder zu Mainframes) knOpfen. Es ist ein komfortables Kommando, um auf Dateien von einem entfernten Rechner zuzugreifen, Dateien zu kopieren oder auf den entfernten Rechner zu Obertragen. 244
Wissenswertes uber Netze 3.6.3 3.6.4 Wie arbeiten Sie mit ftp? Auch fOr dieses Kommando benetigen Sie eine Benutzerkennung und ein PaBwort. Manche Herstellerfirmen bieten allerdings die Meglichkeit, sich als ,Gast, anzumelden. Vielleicht haben Sie in Fachzeitschriften schon ab und zu den Hinweis gelesen, daB Updates oder Informationen mit ftp abgerufen werden kennen, wie z. B. Filtersoftware von FrameMaker auf dem Rechner ftp.frame.com. Hier kennen Sie sich dann mit Ihrem Namen anmelden und geben als PaBwort nur Ihren Rechnernamen an. Der Aufruf des Kommandos ist ahnlich wie bei telnet oder rlogin. Sie geben entweder den Rechnernamen gleich mit an oder mit dem internen Kommando open. ftp [Rechnername] '1 file transfer protocol I I Wird beim Aufruf kein Rechnername mit angegeben, kann mit den Kommandos open Rechnername die Verbindung aufgebaut werden, mit close die Verbindung zu dem Rechner abgebrochen werden Das Programm ftp kann beendet werden mit quit oder bye ftp - Kommando fur Arbeiten mit Dateien eines entfernten Rechners Sobald die Verbindung zu dem anderen Rechner steht, kennen Sie mit einer Reihe von internen Befehlen arbeiten.Hier eine Auswahl der wichtigsten Befehle: Interner ftp-Befehl Bedeutung/Hinweis cd Directory change directory Wechselt in das Directory auf dem entfernten Rechnero soweit Sie Zugriffsrechte hierfur haben pwd print working directory Zeigt das aktuelle Directory auf dem entfernten Rechneran Is oderdir fist Zeigt den Inhalt des aktuelien Directories auf dem entfernten Rechner get Dateiname get - holen, bekommen Kopiert die Datei des entfernten Rechners in das aktuelle Directory des lokalen Rechners mget Dateiname(n) multiple get - mehrfach holen, bekommen Kopiert aile angegebenen Dateien (z.B. Auswahl der Dateien evtl. uber Dateinamenexpansion) in das aktuelle Directory des lokalen Aechners 245
3 246 UNIX - praktiseh angewandt Interner ftp-Befehl Bedeutung/Hinweis put Dateiname put - abgeben Kopiert die angegebene Datei von Ihrem lokalen Rechner in das aktuelle Directory des entfernten Rechners mput Dateiname(n) multiple put Kopiert mehrere Dateien (z. B. Auswahl der Dateien evtl. Ober Dateinamenexpansion) vom lokalen Rechner in das aktuelle Directory des entfernten Rechners binary binar Schaltet in den Binarmodus um. Mit binary werden z. B. Programme, tar- oder cpio-Archiv-Dateien Obertragen, die im Binarformat gespeichert sind ascii ASCII-Obertragung ist als Standard eingestellt. Wenn Sie zuvor mit binary Dateien Obertragen haben, sollten Sie wieder auf ASCII (default-Einstellung) umstellen delete Dateiname 16schen Soweit es die Zugriffsrechte zulassen, kann eine Datei auf dem entfernten Rechner gelescht werden mdelete Dateinamen 16schen Soweit es die Zugriffsrechte zulassen, kennen mehrere Dateien auf dem entfernten Rechner gel6scht werden (z. B. Auswahl der Dateien evtl. Ober Dateinamenexpansion) mkdir make directory Legt auf dem entfernten Rechner ein Directory an led Directory local chance directory Wechselt auf dem lokalen Rechner das Directory (Ieider gibt es kein Kommando, um sich die Dateien auf dem lokalen Rechner anzusehen. Sie soli ten sich deshalb, bevor Sie ftp starten, informieren, welche Dateien sie fOr ftp von Ihrem lokalen Rechner ben6tigen. Am besten wechseln Sie dann gleich in das betreffende Directory, bevor Sie ftp starten) bye oder quit Beendet die Verbindung zum anderen Rechner
3.6.4 Wissenswertes tiber Netze Sehen wir uns hierzu ein Beispiel aus der Praxis an. Sollen mehrere Dateien Ober Netz auf einen anderen Rechner geschickt werden, empfiehlt es sich vorab, die Dateien zu komprimieren (verdichten) und mit tar eine Archivdatei zu erstellen. Man kann jedoch auch vorab die Dateien in ein tar-Archiv schreiben und dieses dann komprimieren. Hierbei ist die Ersparnis nicht ganz so hoch, aber immer noch wesentlich besser, als die Dateien in ihrer OriginalgroBe zu verschicken. Um Dateien zu komprimieren, gibt es das Kommando compress Dateiname(n) compress - Kommando, urn Dateien zu verdichten Mit compress verdichtete Dateien sparen etwa 30 % - 65 % Plattenplatz. Der Dateiname wird mit .Z erganzt. Durch die Endung .Z erkennen Sie also, daB es sich um eine mit compress verdichtete Datei handelt. Oft werden Dateien in dieser Form bereitgestellt, da sie wesentlich weniger Platz benotigen. Doch sehen wir uns nun ein Beispiel an. Um einen Kurs vorzubereiten, wurden eine Reihe Obungen in ein tar-Archiv gesichert. Die GroBe ist betrachtlich mit 1,6 MB. Um die Dateien Ober ftp auf den Schulungsrechner >seminar. zu Obertragen, wird zuerst mit compress die Datei verdichtet. $Is -I *.tar -rw-r--r-- 1 root olher 1 rool other 1620480 Jul23 15:58 kursfiles.tar $ compress kursfiles.tar $ Is _I *Z _____ Einsparung von ca. 65% -rw-r-(-- 574571 Jul23 15:58 kursfiles.Iar.Z $ flp seminar Connected to seminar. 220 seminar FTP Server Name (seminar.hans): trainer Anmeldung als trainer Password: PaBwort nicht sichtbar 230 Login ok, access restrictions apply. ftp> binary 200 Type set to I. ftp> cd lusr/kurs ftp-CWD command successful. ftp> put kursfiles.tar.Z kursfiles.tar.Z 200 PORT command successful. 150 Opening BINARY mode data connection for kursfiles.lar.Z 226 Transfer complete. 574571 bytes sent in 1.7 seconds (3.3e+02 Kbytesls) ftp> quit BNd 3-157: Beispiel komprimiertes tar-Archiv mit ftp auf einen anderen Rechner Dbertragen 247
3 UNIX - praktisch angewandt Um die Dateien auf dem entfernten Rechner wieder auszupacken, werden die Kommandos un compress und tar -x ben6tigt. uncompress Dateiname(n){.Z] uncompress - Kommando, um mit compress verdichtete Dateien wieder in den Normalzustand zu bringen In unserem Beispiel meldete sich der Trainer am Schulungsrechner Ober rlogin an, kontrollierte die Obertragene Datei, brachte sie wieder in den Normalzustand und packte das tar-Archiv aus: $ rlogin -I trainer seminar connected to seminar Password: $ cd lusrlkurs $Is -I *.Z -rw-,--'--rw-,--,-- 1 root PaBwort nlchl slchlbar 574571 Jul23 15:58 kursfiles.tar.Z other $ uncompress kursfiles.tar; Is -I *.tar 1 root other 1620480 Jul 23 15:58 kursfiles. tar $ tar -xvf kursfiles.tar .lGestalten.html .IGestalten.txt .IMuster 3156 blocks $ Bild 3-158: Anmelden mit rlogin und Auspacken der komprimierten tar-ArchivObertragung mit uncompress und tar -x Handelt es sich um eine Textdatei, kann eine Datei auch in komprimierter Form angesehen werden. HierfOr gibt es das Kommando zeat Dateiname(n) zcat - Kommando, um mit compress komprimierte Text-Dateien anzusehen 248
3.6.4 Wissenswertes Ober Netze Die Datei Gestalten.txt soli in komprimierter Form abgelegt werden. Da es sich hierbei nur um einen ASCII-Text handelt, kann sie jederzeit mit zcat angesehen werden: $ Is -I Gestalten.txt -rw-r--'-- 1 tempir2 30005 2088 Jul 23 17:43 Gestalten.txt $ compress Gestalten.txt $Is -I G*.Z -rw-r--'-- 1 tempir2 30005 $ zeat Gestalten.txt.Z 1322 Jul23 17:43 Gestalten.txt.Z Gestalten von Dokumenten Die Sprache a/s Verstilndigung zwischen Menschen wird erst lebendig du,ch Betonung und Gesten. Umgesetzt in Schrift entfBllt diese wichtige Ausdrucksform. Um geschriebenen Text dennoch schnell versttindlich zu $ Bild 3-159: Ansehen einer komprimierten Textdatei mit zcat Auch um Platz auf dem Rechner zu sparen, empfiehlt es sich, mit compress ganze Dateibaume zu verdichten, wenn sie fOr langere Zeit nicht benotigt werden. Hiermit sind wir zwar in diesem Kapitel beim ,Z< angelangt, doch es wird hochste Zeit, daB wir etwas Ober die Vereinfachung von Kommandoeingaben lemen. Doch zuvor wie bei allen Kapiteln eine Zusammenfassung. 249
3 UNIX - praktisch angewandt 3.6.5 Zusammenfassung der Kommandos Kommandoeingabe pg letc/hosts Funktion r---page Zeigt aile Rechner an, die im Netz eingebunden sind I-:::-:' p mgpong ping Rechnername Kontrolliert, ob der angegebene Rechner erreichbar ist hostname Zeigt den eigenen Rechnernamen an crep Datei(en)[@Rechner 1\ remate copy Datei(IDirectory)[@Rechner 1 Kopiert Dateien von/auf entfernte Reehner, die mit TCP/IP verbunden sind Etwa gleiche Syntax wie cp rsh Rechner remote shell Startet eine Shell auf einem entfernten Rechner Auf dem entfernten Rechner muB der gleiche Benutzername eingetragen sein. Das PaBwort wird abgefragt. I dd if=Dateiname of=Geratename \ device to device I Option=Wert Kopiert Dateien, Dateibereiehe oder gesamte Platten 1:1 Beispiel: Ausgabe von tar Ober Netz auf tar -evf - . I rsh Rechner \ einen Streamer an einen entfernten Rechner bs block size Wert (in diesem dd of=/dev/rmtlO bs=64 Beispiel) 64 KB tel net Rechner rlogin 250 H Login-Name] Rechner telecommunication netware Anmelden an einem entfernten Rechner Wird die Verbindung hergestellt, muB ein gOltiger Benutzername und ein PaBwort eingegeben werden d Etwa gleich wie rlogin remote login Anmelden an einem entfernten Rechner, der mit TCP/IP verbunden ist Wird die Verbindung hergestellt, muB ein gOltiger Benutzername und ein PaBwort eingegeben werden Etwa gleich wie telnet j
3.6.5 Wissenswertes uber Netze Kommandoeingabe Funktion ftpRechner connected to ... login: Benutzemame Password required for: Pa8wort file transfer protocol Kopiert Dateien von/auf entfemte Rechner Rechnername des entfernten Rechners sowie ein dort gOltiger Benutzername und PaBwort mOssen angegeben werden Auswahl der meist ben6tigten Kommandos change directory Wechselt in das Directory auf dem entfernten Rechner print working directory Zeigt das aktuelle Directory auf dem entfernten Rechner list Zeigt den Inhalt des aktuellen Directories auf dern entfernten Rechner get - holen. bekommen Kopiert in das aktuelle Directory des 10kalen Rechners die Datei des entfernten Rechners multiple get - mehrfach ho/en Kopiert in das aktuelle Directory des lokalen Rechners aile angegebenen Dateien (z. B. Ober Dateinamenexpansion) put - abgeben Kopiert die angegebene Datei von Ihrem lokalen Rechner in das aktuelle Directory des entfernten Rechners multiple put Kopiert mehrere Dateien (evtl. Ober Dateinamenexpansion) vorn lokalen Rechner in das aktuelle Directory des entfernten Rechners binar Schaltet in den Binarmodus um. Mit binary werden z. B. Programme. tar- oder cpio-Archiv-Dateien Obertragen. die im Binarformat gespeichert sind Umstellung wieder auf ASCII (defaultEinstellung) Kommandos unter ftp: cd pwd Is (dir) get Dateiname mget Dateiname(n) put Dateiname mput Dateiname(n) binary ascii 251
3 UNIX - praktiseh angewandt Kommandoeingabe ftp: Fortsetzung delete Dateiname mdelete Dateinamen mkdir led Directory bye oder quit compress Dateiname(n) Beispiel: compress farsicherung zeat Dateiname.z uncompress Datei[.Z] t Funktion loschen Soweit die Zugriffsrechte es zulassen , kann eine Datei auf dem entfernten Rechner (mit mdelete mehrere) geloscht werden make Directory Legt auf dem entfernten Rechner ein Directory an local chance directory Wechselt auf dem lokalen Rechner das Directory Beendet die Verbindung zum anderen Rechner - verdichten VerdichtenlKomprimieren von Dateien Oft in Verbindung mit tar/ftp Der Dateiname wird mit.Z erweitert. -cat von .Z-Datelen . Zeigt den Dateiinhalt von mit compress komprimierten Dateien an dekomprimieren Eine zuvor mit compress verdichtete Datei wird wieder in den Normalzustand gebracht Wiehtige Dateien: Datei ~ letc/hosts Zuordnung von IP-Adressen zu Rechnernamen letc/hosts.equiv Datei, um den Zugriffsschutz im Netz zu steuern fUr die Netzkommandos wie rep, rsh, rlogin oder telnet FOr aile oder nur den angegebenen Benutzer des Rechners erlaubt nicht erlaubt FOr den angegebenen Benutzer von alIen Rechnern aus erlaubt Beispiel eines Eintrages hostname [usemame] -hostname [usemame] + usemame $HOME/.rhosts 252 Bedeutung Eintrag wie bei letclrhosts.equiv Private Datei fUr den Benutzer, die zusatzlich zur letclhosts. equiv zur PrOfung herangezogen wird I
3.7 Shell-Prozeduren Nun >shellt< es intensiver Dieses Kapitel zeigt Ihnen, wie Sie unter UNIX durch Kommandofolgen in einer Datei eigene kleine Programme schreiben konnen, sog. Shell-Prozeduren. Das Wort Prozedur hat bei uns im Deutschen zwar auch die Bedeutung von ,schwierige, unangenehme Behandlungsweise<, doch das Wort selbst leitet sich von procedere (lat.) ab und bedeutet ,zu Werke gehen<. Sie werden erfahren, daB die Programmierung unter der Shell ,keine Prozedur< fOr Sie sein wird. FOr diejenigen von Ihnen, die bereits eine Programmiersprache kennen, wird es ein VergnOgen werden, ein Programm zu erstellen, ohne schwierige Syntaxregeln beach ten zu mOssen, und es auszufOhren, ohne erst zu compilieren. Die einzelnen Themen: 3.7.1 Die Vorteile von Shell-Prozeduren 3.7.2 Erstellen eigener Shell-Prozeduren 3.7.3 Vordefinierte Shell-Variable 3.7.4 Verwendung von Positionsparametern 3.7.5 Ablaufsteuerung einer Shell-Prozedur 3.7.6 Beispiele zur Erstellung von eigenen Shell-Prozeduren 3.7.7 Schleifenverarbeitung 3.7.8 Weitere nutzliche Kommandos fur Shell-Prozeduren 3.7.9 Zusammenfassung 253
3 UNIX - praktisch angewandt Shell-Prozeduren - Nun >shellt< es intensiver Wenn Sie bis zu diesem Kapitel vorgedrungen sind und die Beispiele nachvollzogen haben, k6nnen Sie bereits mit UNIX arbeiten. Meinen GIOckwunsch! Denn es war sicher nicht immer leicht. Doch ich hoffe, Sie hatten auch SpaB daran und haben sich Ober Ihre eigenen Erfolge gefreut. Das, was Sie bisher Ober UNIX gelernt haben, reicht im Normalfall aus, um als Anwender mit Softwarepaketen zu arbeiten, die auf UNIX basieren. Die meisten Applikationen, wie Anwendungen fOr die verschiedenen Branchen im Handel und in der Industrie, z. B. BOroautomation, Finanzbuchhaltung oder im CAD/CAMBereich, enthalten meist zusatzliche Hilfsprogramme, etwa zum Sichern und zur Dateiverwaltung. FOr diese Faile ware es nicht notwendig zu wissen, wie man unter der Shell eigene Shell-Prozeduren schreiben kann. FOr Sie ware das nachfolgende Kapitel eher ein Hobby oder der erste Schritt, sich zum UNIXSpezialisten zu entwickeln. Auf der Shell-Ebene k6nnen Sie dann bereits kleine Programme, sog. Shell-Prozeduren, mit vielen Raffinessen erstellen. Der nachste Schritt ist, Programme in Coder einer anderen Programmiersprache zu schreiben. Anhand von Beispielen, wie Sie eigene Kommandos zum Sichern, Listen von Directories, Kopieren und L6schen von Dateien schreiben k6nnen, werden Sie die wesentlichen Funktionen der Shell-Prozeduren kennenlernen. 3.7.1 Die Vorteile von Shell-Prozeduren Was sind Shell-Prozeduren? Shell-Prozeduren sind im Grunde nichts anderes als Kommandofolgen, abgelegt in einer DateL Kommandos, die Sie bisher am Terminal aufgerufen haben, schreiben Sie in eine DateL Mit dem Kommando sh k6nnen Sie die Kommandofolgen in dieser Datei von Ihrer Shell ausfOhren lassen. sh Dateiname shell sh - Kommando, um Dateien mit Kommandofolgen auszufuhren 254 Bisher haben wir von Kommandos gesprochen, wenn wir einen Auftrag an den Rechner schickten. Ein Kommando kann ein ausfUhrbares Programm sein, ein ,Shell-internes< Kommando oder eine Shell-Prozedur. Statt Shell-Prozedur spricht man auch von Shell-Script. Ein ausfUhrbares Programm wurde ursprOnglich in einer Programmiersprache geschrieben und compiliert (ubersetzt) in den entsprechenden Maschinencode des Rechners. Ein Shell-internes Kommando ist im Programm der Shell selbst verankert, also ein Teil der Shell. Eine
Shell-Prozeduren 3.7.1 Datei, die Kommandofolgen enthalt, kann eine eigenstandige Shell-Prozedur werden, wenn die Zugriffsrechte z. B. mit chmod +x auf ausfOhrbar geandert werden (executable). Nehmen wir an, es gibt eine Datei mit dem Namen heute, in der z. B. die Kommandos date und who stehen. Die Zugriffsrechte sind so geandert, daB aile die Datei ausfOhren dOrfen (z. B. rwxr-xr-x). Damit sind bereits die Voraussetzungen fOr eine Shell-Prozedur erfOlit. Rufen Sie das Kommando heute auf, so sucht die Shell in all jenen Directories, die in der Variablen PATH als Suchpfad angegeben sind, nach einer Datei mit dem Namen heute, die als ausfOhrbar gekennzeichnet ist. Die so gefundene Datei wird von der Shell gelesen und die darin enthaltenen Kommandos werden der Reihe nach ausgefOhrt. Die AusfOhrung dieser Shell-Prozedur soli die nachfolgende Grafik verdeutlichen: Platte Inhalt der Datei heute $ heute Wed Nov 12 18.56:02 '-------':::... root console Nov 11 20:28 monika Hy22 Nov 12 13:25 $ Eingabe: heute ---- ~ Bild 3 -160: Ablauf einer Shell-Prozedur grafisch dargestellt Aile Kommandos, also Programme, Shell-interne Kommandos und Shell-Prozeduren sind gleichberechtigt. Bei der Shell-EinfOhrung (3.2 Es >shellt.) haben Sie gelernt, wie Sie Kommandos verwenden konnen: 255
3 UNIX - praktisch angewandt Aufruf des Kommandos Kommandoname [Parameter 1 (z. B. Option -I)] \ [Parameter 2] ... im Vorder- oder Hintergrund (&) Die Parameter konnen hierbei Ober Metazeichen (*,?, \, [] ) und die Ihnen bereits bekannten Ersetzungsmechanismen (" ","" ,$, \ Kommando \) expandiert werden. Abbruch des Kommandos (Unterbrechung des laufenden Programms): bei Vordergrundprozessen je nach Rechner entsprechen de Funktionstasten z. B. <CTRL> + coder bei Hintergrundprozessen mit dem Kommando kill -9 ProzeBnummer Hier werden Sie in der Korn-Shell noch weitere Moglichkeiten kennenlernen Umleitung der Standardeingabe und Standardausgabe: <, >, », 2> Verkettung von Kommandos mit; Pipe-Mechanismus mit I Bild 3-161: Eingabem6glichkeiten von Kommandos Aile diese Moglichkeiten bestehen auch fOr Shell-Prozeduren. Sie konnen sich also eigene Kommandos schreiben und diese genauso nutzen wie UNIX-Kommandos. Die Frage ist: Benotigen Sie eigene Shell-Prozeduren? Wenn Sie sich an das Kapitel Sicherung erinnern, an die langwierigen Kommandos von find und cpio, dann dOrfte Ihnen die Antwort zu einem ·Ja< nicht schwerfallen. Oder den ken Sie nur an die Kommandos mv und cp, die Ihnen wertvolle Dateien Oberschreiben konnen oder gar an die zerstorende Wirkung von rm -r '. Hier konnen Sie durch eigene Kommandos die Wirkung entscharfen. Welche Vorteile bieten Ihnen eigene Shell-Prozeduren? o Sie konnen haufig benutzte und/oder langwierige Kommandofolgen mit einem Aufruf (einem kurzen Namen) aktivieren. o Eigene Shell-Prozeduren konnen Sie auch auf andere UNIX-Rechner ubernehmen. ODie Funktionalitat der Shell-Prozeduren ahnelt der Programmiersprache C, man benotigt aber keinen Ubersetzungslauf (Compilieren). o 256 Sie konnen benutzerfreundliche, deutschsprachige und sichere Kommandos schaffen.
Shell-Prozeduren 3.7.2 3.7.2 Erstellen eigener Shell-Prozeduren Wie erstellen Sie eigene Shell-Prozeduren? Anstatt ein Kommando (oder eine Kommandofolge) direkt am Terminal aufzurufen, schreiben Sie es mit einem Editor in eine Datei, beenden den Editor, verand ern die Zugriffsrechte durch chmod +x Dateiname und schon haben Sie eine eigene Shell-Prozedur. Diese konnen Sie nunmehr mit dem Namen der Datei aufrufen und die enthaltenen Kommandos werden ausgefOhrt. Was konnen Sie in eine Prozedur eingeben? Aile Meglichkeiten, die Sie bisher bei einem Kommandoaufruf kennengelernt haben, kennen Sie auch in einer Shell-Prozedur verwenden. Dies bedeutet: o Sie kennen auch in Shell-Prozeduren die Kommandos so eingeben, wie es in der Tabelle, 3-161 (Eingabemoglichkeiten von Kommandos) auf der vorigen Seite gezeigt ist. o Um Erlauterungen einzufOgen, gibt es die Zeichen ':< und '#<, die den nachfolgenden Text bis Zeilenende als Kommentar kennzeichnen. o Wie Sie schon zu Beginn gehOrt haben, gibt es verschiedene Sheil-Programme, neben der hier besprochene Bourne-Shell, die Korn- und C-Shell. Um zu gewahrleisten, daB die Shell-Prozedur von der richtigen Shell ausgefOhrt wird, gibt man, soweit unterschiedliche Shells eingesetzt sind, in der 1. Zeile ein sog. Run-Kommando an: #!/bin/sh oder #!/bin/ksh oder #!/bin/csh Dies ist besonders wichtig, wenn sonst die C-Shell verwendet wird, da die Syntax und einige Befehle hier z.T. abweichen (siehe Kapitel 3.9). o Wie bei dem Ersetzungsmechanismus bereits erlautert, kennen Sie ShellVariable verwenden, die durch ${Name der Variablen} mit dem jeweils zugewiesenen Wert ersetzt werden. Sie lernen noch eine Reihe weiterer Einsatzmoglichkeiten von Variablen kennen; so z.8., wie Sie unterschiedliche Parameter Obergeben, sog. Positionsparameter, oder wie Sie vordefinierte Variable verwenden kennen und wie Sie den Wert einer Shell-Variablen verandern. o Um den Ablauf zu steuern, kennen Sie mit echo Nachrichten (Fragen) auf den Bildschirm ausgeben, mit read eine Antwort am Bildschirm lesen und mit test den Inhalt dieser Antwort prOfen. o In Abhangigkeit von Ergebnissen konnen Sie unterschiedliche Kommandofolgen aufrufen (&&, II und if - then - else - f/l o Kommandofolgen kennen mehrmals durchlaufen werden; man spricht hierbei von Schleifen (for - do - done). o Abhiingig von einem Wert konnen unterschiedliche Kommandofolgen ausgewahlt werden (case - esac). 257
3 UNIX - praktisch angewandt o Sie k6nnten sogar auftretende Fehler Ober die sog. trap-Behandlung abfangen (was soli Z. B. geschehen, wenn ein Unterbrechungssignal Ober <CTRl> +c gesendet wird?). Auf die Fehlerbehandlung wird in diesem Buch allerdings nicht tiefer eingegangen. Bei der Zusammenstellung der Kommandos find en Sie unter trap auf Seite 301 ein paar weitere Informationen. Auch wenn wir hier nicht aile M6glichkeiten der Shell-Programmierung durchsprechen, verspricht dieses Kapitel, interessant zu werden. Beginnen wir mit einem einfachen Beispiel. Erstellen Sie sich eine Datei heute, andern Sie die Zugriffsrechte und probieren Sie einfach mal aus, ob es funktioniert. Bevor Sie die Datei erstellen, richten Sie sich am besten, wie in unserem Beispiel, ein Unterdirectory Befehle ein, in das Sie samtliche von Ihnen selbst erstellten Kommandos (Shell-Prozeduren) ablegen: append - anhilngen Eingabemodus: Beenden der Eingabe Beenden vom vi a vi heute 1. Erstellun$! der Dalei mit einen Editor nicht sichtbar ae whO§ [zz nicht sichtbar $ chmod +x heute $ heute I 2. Andern der Zugriffsrechte 3. Autruf der Shell-Prozedur Wed Nov 12 19:30:22 Anzeige von date root console Nov 11 20:28 von who monika tty22 Nov 12 13:25 Bild 3 -162: Beispiel Erstellen einer Shell-Prozedur Hat es geklappt? Erhalten Sie das Datum und eine Liste der aktiven Benutzer angezeigt, wenn Sie heute aufrufen? Wenn nicht, prOfen Sie Ihre Variable PATH, ob das aktuelle Directory (.) nach Kommandos durchsucht wird. Sie k6nnten dann den Befehl, um zu testen, mit sh heute aufrufen. Wenn es wirklich so einfach geht, dann schreiben wir gleich unser Sicherungskommando fUr die tagliche (tsich) und wochentliche Sicherung (wsich). Falls Sie unter der grafischen Obertlache einen Texteditor zur VertOgung haben, ist es sicher leichter, mit diesem zu arbeiten. Gerade wenn der vi Ihnen noch nicht so recht von der Hand geht, ist die Anstrengung der Eingabe und die Fehlerquelle durch den vi gr6Ber als die Eingabe der Shell-Prozedur als solche. 258 Um beim Ablauf der Sicherung zu sehen, was im einzelnen passiert, geben wir mit dem Kommando echo Nachrichten auf den Bildschirm aus. Unter der ShellEinfOhrung haben wir dieses Kommando kurz kennengelernt:
Shell-Prozeduren 3.7.2 Widerhan no new line (bel lilteren Versionen von UNIX) In der Texteingabe bedeuten folgende Steuerzeichen: \007 \c \n \t Klingelzeichen Cursor bleibt in gleicher Zeile neueZeile Tabulator echo - Kommando, um Nachrichten auszugeben Das echo-Kommando gibt aile ihm Obergebenen Worter bis zum Zeilenende oder einem ,;, als ,Echo, auf den Bildschirm aus. Es empfiehlt sich, den Text grundsatzlich in AnfOhrungszeichen zu setzen, damit nicht z. B. ein Fragezeichen oder Sternchen von der Shell durch vorhandene Dateinamen ersetzt wird. Wollen Sie, daB die Antwort in derselben Zeile wie die Nachricht eingegeben wird, geben Sie als letztes Text-Argument\c ein (bei alteren Versionen von UNIX als Aufruf echo -n). Innerhalb des Textes konnen Sie mit \t ein Tabulatorzeichen setzen, mit \n eine Zeilenumbruch erwirken oder gar mit \007 ein Klingelzeichen aktivieren, allerdings muB hierfOr Ihr Terminal entsprechend voreingestellt sein. Urn einen Text Ober mehrere Zeilen auszugeben, konnen Sie entweder in jeder Zeile neu das Kommando echo eingeben oder Sie setzen das Anfilhrungszeichen II nur nach echo in der ersten Zeile und dann erst am Ende der letzten Zeile. r> Einer der haufigsten Fehler ist, daB das schlie Ben de Anfilhrungszeichen vergessen wurde (sei es bei dem Kommando echo, oder wie wir spater noch sehen, beim Setzen von Variablen). Die Shell-Prozedur wird dann meistens mit einem Fehlerhinweis der Shell abgebrochen. Also achten Sie darauf! Die einzelnen Schritte zur Erstellung unserer Sicherungskommandos: 259
3 UNIX - praktisch angewandt 1. Wir rufen einen Editor auf, schreiben die zur Sicherung notigen Kommandos und die Nachrichten, die am Bildschirm erscheinen sollen, und beenden den Editor. 2. Wir andern die Zugriffsrechte auf ausfOhrbar. 3. Das Kommando ist fertig, wir konnen es fOr unsere Sicherung benutzen. vi wsich a C 1. Erstellen der Shell-Prozedur fUr nicht sichtbar wochentliche Sicherung mit vi Wechsel in das Home-Directory echo "Es wird eine woechentliche Sicherung ab" echo "dem Directory pwd' erstellt." Nachricht auf Bildschirm mt rew # ROckspulen des Bandes Bei Streamer nicht notwendig find. -print I cpio -ovB :> Idev/rmtO # Sicherungskommando date :> sichlog # Datei sichlog erstellen ------ Kommentarzeichen echo "Woechentliche Sicherung" )---- Nachricht auf Bildschirm echo "vom \ date\ fertig II § - - Beenden der Eingabe und Sichern (Schreiben) der Datei ZZ - - - - - - - - - - - - - - - wsich auf Platte und Beenden des Editors 2. Andern der Zugriffsrechte $ chmod +x wsich Bild 3 -163: Beispiel einer Shell-Prozedur zur wochentlichen Sicherung Nun haben wir ein eigenes Sicherungskommando, das wir z. B. jeden Freitag verwenden konnen. Wir brauchen nur noch das Band einzulegen und die Sicherung lauft sicher abo $wsich - - - - - - - - - - - ! ' 1 . Aufruf der Shell-Prozedur Es wird eine woechentliche Sicherung ab dem Directory lusrlkurslmonika erstellt ProjektA ProjektAlbeispiel. c } _ _ _ _ _ cpio gibt die Uste der gesicherten Dateien aus (-v) "fJ'efehlelwsich sichlog Der Streamer wird automatisch 240 blocks _ _ _ _ _ _ zuriickgespult, es dauert ein Woechentliche Sicherung paar Sekunden bis die Nachricht vom Fri Nov 14 13:20:57 fertig $ am Bildschirm erscheint Bild 3 -164: Beispiel Aufruf der Shell-Prozedur fOr wochentliche Sicherung 260
3.7.2 Shell-Prozeduren Die gleichen Arbeitsschritte sind erforderlich, um die Shell-Prozedur fOr die tagliche Sicherung zu schreiben. Hier kennen wir mit einbauen, daB als Nachricht angezeigt wird, wann das letzte Sicherungsdatum war, d.h., daB nur jene Dateien gesichert werden, die ein neueres Modifikationsdatum als die Datei sichlog aufweisen. Erstellen wir uns mit einem Editor die Datei tsich, die folgenden Inhalt aufweist: 1. Erstellen der Shell-Prozedur rur tagliche Sicherung mit einem Editor $ vi tsich a nicht sichtbar C Wechsel In das Home-Directory echo liEs werden aile veraenderten und Nachricht auf Bildschirm neuerstellten Dateien seit der Sicherung vom 'cat sichlog ab Directory 'pwd' gesichert" - - - SchlieBendes Anfiihrungszeichen mt rew zur 1. Zeile find. -newer sichlog -print I cpio -ovB > Idev/rmtO $icherungsbefehl date > sichl~g . echo "taegilche Sicherung" echo "vom 'cat sichloQ' ist fertig" ~ Datei mit Sicherungsdatum erstellen ;- Nachricht auf Bildschirm §---- Beenden der Eingabe und Sichern (Schreiben) der Datei - - - - - - - - - - - - - - - tsich auf Platte und Beenden des Editors chmod +x tsich 2. A.ndern der Zugriftsrechte ZZ $ Bild 3-165: Beispiel einer Shell-Prozedur zur taglichen Sicherung Um unsere tagliche Sicherung zu erstellen, reicht es, das Band vorzubereiten und tsich aufzurufen: $tsich 3. Aufruf der Shell-Prozedur Es werden aile veraenderten und neuerstellten Dateien seit der Sicherung vom Fri Nov 14 13:20:57 ab Directory lusrlkurslmonika gesichert Befehle Befehleltsich 120 blocks taegliche Sicherung vom Mon Nov 1714:00:00 ist fertig $ Bild 3 -166: Beispiel Aufruf der Shell-Prozedur fOr tagliche Sicherung Voraussetzung ist allerdings, daB Sie sich in jenem Directory befinden, in dem Sie das Sicherungskommando angelegt haben. Zusatzlich muB in Ihrem PATH 261
3 UNIX - praktisch angewandt (Suchpfad der Shell fOr Kommandos) zumindest enthalten sein, daB auch das aktuelle Directory mit durchsucht wird. Wollen Sie Ihre Kommandos von jedem beliebigen Verzeichnis (Directory) aufrufen, so mOssen Sie die Shell-Variable PATH erweitern um jenes Directory, in das Sie Ihre eigenen Kommandos ablegen. Die Variable PATH geh6rt zu den vordefinierten Shell-Variablen. 3.7.3 Vordefinierte Shell-Variable Wie konnen Sie Ihren .PATH. erweitern? Um den PATH zu erweitern, sollten Sie sich erst vergewissern, welche Directories in dem fOr Sie vorgegebenen Suchpfad eingetragen sind. Das Kommando echo $PATH gibt Ihnen hierOber Auskunft: $ echo$PATH : :. Ibin:lusrlbin:usrllocal:lusrlucb I Der Punkt zwischen zwei Doppelpunkten zu 8eginn bedeutet, daB zuerst das aktuelie Directory nach dem aufgerufenen Kommando durchsucht wird. Danach werden In der Reihenfolge von links nach rechts alie Directories durchsucht, bis das Kommando gefunden wird. Die Doppelpunkte zwischen den Directories gelten als Trennungszeichen. Bild 3 - 167: Beispiel: Wert der Variablen PATH Die Variable PATH wird von der Shell verwendet, um Kommandos zu suchen. Sollen die von Ihnen erstellten Kommandos Vorrang vor den UNIX-Kommandos erhalten, dann mOssen Sie den PATH so belegen, daB das vorrangig zu behandelnde Directory zu Beginn steht, z. B.: PATH=/usr/kurs/monika/Befehle:$PATH; export PATH Unter dem Kapitel ,Es shellt, wurde kurz bei dem Ersetzungsmechanismus die Funktion der Variablen erklart. Bei der obigen Eingabe wird der Wert von PATH neu gebildet, wobei $PATH ersetzt wird durch lusrlkurslmonikalBefehle plus den bisherigen Werten, die PATH zugeordnet waren. Der Befehl export Obertragt die GOltigkeit der Variable fOr eventuelle Unterprogramme. Mit dem Kommando set werden die in dem aktuellen Programm gesetzten Variablen angezeigt, mit env die Variablen, die exportiert wurden. ~_____se_t______~1 I~_____e_n_v______~ set - Kommando, um definierte Variable der aktuellen Shell anzuzeigen 262 env - Kommando, um definierte und exportierte Variablen anzuzeigen
3.7.3 Shell-Prozeduren Sehen wir uns also die Variablen an, nachdem die Variable PATH neu gesetzt wurde. $ set Zuordnung erfolgl baim Login (letc/passwd) IFS= Nichl sichlbare Zeichen fOr Separator (Leerzeichen, Tabulatorzeichen und Zeichen fOr Zeilenende (Internal Field Separators) wird von cd verwendel, wenn Sie keine weiteren HOME=I us~/k ursI mom'ka / " Angaben machen LOGNAME=monika - - - Zuordnung erfolgt beim Login (/etc/passwd) PATH=lusrlkurslmonikalBefehle:.:lbin:lusrlbin:lusrllocal:1usrlucb I erweiterte Variable PATH PS1 =$ - ________ Bereitzeichen der Shell PS2=> - - - - - - - - - Hinweiszeichen der Shell, wenn sie weitere Ein- gaben zu einem Aufruf erwartet Variable fOr Programme, die mit zusAtzlichen Angaben der Terminals arbeiten (z. B. vi, more etc) Unler dem angegebenen Namen stehen unler dem Directory lusrlliblterminfo charakteristische Angaben fur das betrefiende Terminal - - - - - - - Variable fur die Zeitzone, die bei .weltweiten. mail-Aktionen jeweils beri.icksichtigt wird TERM=vt220 TZ=MET-l $ Bild 3 -168: Anzeige und Erlauterung der vordefinierten Shel/-Variablen Die Variablen gelten immer nur fOr die Dauer des Programms. Die vordefinierten Variablen werden beim Starten Ihrer Shell zugewiesen (beim login). Sobald Sie sich abmelden, verlieren sie ihre GOItigkeit. Die Erweiterung des PATH mOBten Sie also jeweils neu vornehmen. Um Ihre Shell-Umgebung automatisch mit den Variablen zu besetzen, die fOr Sie GOltigkeit haben sollen, kennen Sie sich eine Datei .profile in Ihrem Home-Directory einrichten. In der Regel wird diese Datei beim Einrichten eines Benutzers mit angelegt, wenn er mit einer Bourne- oder Korn-Shell arbeitet. FOr die C-Shell wird statt .profile die Datei .Iogin gelesen. Arbeiten Sie mit einer grafischen Oberflache, mOssen die Angaben von .profile u. U. in andere Datei Obernommen werden bzw. ein Querbezug in der Datei .dtprofile (Variable DTSOURCEPROFlLE=true) erfolgen. In der Bourne- und Korn-Shell wird .profile automatisch beim Login wie eine Shell-Prozedur ausgefOhrt. In dieser Datei kennen Sie auBer der Um- oder Neubesetzung von Variablen auch Kommandos mit auffOhren, die dann nach Ihrem Login automatisch der Reihe nach ausgefOhrt werden. Speziell beim CDE, das nicht unbedingt ein Terminal-Fenster beim Anmelden mit ereffnet, sind in .profile Befehle fOr eine Terminalausgabe nicht meglich. 263
3 UNIX - praktisch angewandt Erstellen oder iindern wir mit einem Editor die Datei .profile mit folgendendem Inhalt: PATH=$HOMEIBefehle:$PATH;export PATH _ _ Anderung des Suchpfades PS1="alies klar: " Anderung des Bereitzeichens PS2="da fehlt noch was. "; export PS1 PS2 __ Anderung des FoIgezeichens k=/usr/kurs } Setzen von eigenen Varia bIen h=/usr/kurslhans; export k h echo "Guten Morgen, heute ist date • ~~~ "und es arbeiten bereits folgende kollegen:" auszufOhrende Kommandos' who echo ohne Angabe gibt eine Leerzeile aus 'r • Unter CDE kOnnen Kommandos nicht aus der .profile gestartet werden (da keine direkte Terrninal-Fenster-Ausgabe zugewiesen ist) Bild 3-169: Beispiel von .profile mit Anderung der Variablen In dem obigen Beispiel wurde die Variable $HOME verwendet, anstatt den Pfadnamen lusrlkurslmonika auszuschreiben. Somit konnte die Datei .profile auch fUr andere Benutzer kopiert werden und das jeweilige Home-Directory wird richtig eingesetzt. Weiterhin wurden eigene Variable gebildet, um die Pfadnamen lusrlkurs oder lusrlkurslhans mit der entsprechenden Variablen $k oder $h in kOrzerer Form eingeben zu konnen. Beenden Sie Ihre Sitzung lind melden Sie sich neu an. Sehen wir uns an, welche Nachrichten uns das System bringt: LOGIN Bitte melden Sie sich an: monika Password: Guten Morgen, heute ist Fri Nov 148:30:22, und es arbeiten bereits folgende Kollegen monika tty11 Nov 148:33:00 hans tty13 Nov 148:05:00 gisela tty15 Nov 148:20:00 aJles klar: set HOME=lusrlkurslmonika IFS= PATH=lusrlkurslmonikaIBefehle: :Ibin:lusrlbin:lusrllocal:lusrlucb LOGNAME=monika MAIL=lusrlmaillmonika PS1 =alles klar: PS2=da fehlt noch was: TERM=vt 1OOc TZ=MET-1 k=lusrlkurs h=lusrlkurslhans alles klar: Bild 3 -170: Beispiel einer Anmeldung mit geandertem .profile 264
3.7.3 Shell-Prozeduren Fassen wir das Wesentliche Ober die Shell-Variablen zusammen: o Shell-Variable werden gebildet durch eine Wertzuweisung frei definierbar oder vordefinierte Namen Text oder Ziffern Kommen in einem >Wert, Leerzeichen vor, so muB er in AnfOhrungszeichen gesetzt werden, z.B. PS1="Alies klar". Zwischen dem Namen, dem Gleichheitszeichen und dem Wert durfen keine Leerzeichen sein. o $Name wird ersetzt durch den Wert, der der Variablen >Name' zugewiesen wurde. $ Name Verwenden Sie den Wert der Variablen, um z. B. neue Dateinamen zu erstellen, wobei die Ersetzung nur ein Teil des Namens ist, dann wird der Name der Variablen durch geschweifte Klammern abgegrenzt: ${Name} M6chten Sie z. B. Dateien erstellen mit dem jeweiligen Login-Namen desjenigen, der die Prozedur aufgerufen hat, erganzt durch z. B. eine Nummer, dann geben Sie an: > $(LOGNAME}1 bzw. touch $(LOGNAME}1 Das Gr6Berzeichen (Um/eitung der Standardausgabe) ohne Angabe eines Kommandos erstellt eine leere Datei (dies gilt nicht bei der C-Shel/), stattdessen kann das Kommando touch verwendet werden. Die Datei wurde in unserem Beispiel angelegt werden mit: monika1 o Variable k6nnen verandert werden durch die Zuweisung eines neuen Wertes. 1m Verlaufe dieses Kapitels werden wir das Kommando expr kennenlernen, mit dem Sie eine Variable mit allen Grundrechenarten verandern k6nnen, wenn es sich bei der Wertzuweisung um eine Zahl handelt. 1m Kapitel KornShell 3.8 lernen Sie eine noch einfachere Art kennen, um mit Variablen zu rechnen (/nteger- Variable). OShell-Variable gelten nur fOr das aktuelle Shell, sollen sie ebenfalls fOr Unterprogramme (Sohnprozesse) gelten, so sind sie zu exportieren. export Name der Variablen 265
3 UNIX - praktisch angewandt Einige vordefinierte Shell-Variable (gleich mit einigen Variablen und Hinweisen, die erst im Kapitel3.B Korn-Shell naher erlautert werden): 266 Shell-Variable Bedeutung $OISPLAY Diese Variable muB gesetzt sein, wenn eine grafische Oberflache benutzt wird. Ais Wert wird der Rechnername (bzw. Name des XTerminals) eingetragen. gefolgt von :0.0 z.B. OISPLAY=amadeus:O.O export OISPLAY $ENV Hier wird als Wert der Dateinamen angegeben. der Voreinstellungen fUr die Korn-Shell enthalt. In der Regel $HOME/.kshrc (im Kapitel 3.8.2 wird darauf eingegangen) $EXINIT Als Wert werden Voreinstellungen fUr den ex- bzw. viEditor eingetragen (siehe auch Kapitet 3.3 Editoren) $HOME Beim Login wird der absolute Pfadname des LoginDirectories aus der letclpasswd der Variablen zugeordnet. Diese Variable wird u.a. von cd (ohne weitere Angaben) als default verwendet $IFS Hier sind die Separatorzeichen zugewiesen. Standard: Leerzeichen, Tabulator und Neue Zeile $LANG Als Wert wird die jeweilige Sprache zugewiesen, in der die Systemmeldungen erfolgen sollen - soweit im System enthalten $LOGNAME Hier wird als Wert der Login-Name des Benutzers zugewiesen $PATH Als Wert sind all jene Directories mit absolutem Pfadnamen aufgefUhrt. unter denen die Shell nach Kommandos sucht. Getrennt werden die einzelnen Directories durch Doppelpunkte Beispiel einer Neubesetzung: PATH=/usr/bin:/bin:/usr/ucb/bin Beispiel einer Erganzung: PATH=$PATH:$HOME/Eigenbefehle $PS1 Ais Wert ist das Bereitzeichen der Shell zugewiesen. Beispiel einer Neubesetzung: PS1 ="" $PWO" > " nur ksh siehe Kapitel 3.8 Hiermit wird jeweils das aktuelle Directory als Bereitzeichen angezeigt z. B. lusrlkurslhanslTexte > I
3.7.3 Shell-Prozeduren Shell-Variable Bedeutung $PS2 Ais Wert ist das Zeichen > zugeweisen (Fortsetzungszeile eines Kommandos) -- $PWD $SHELL $TERM - $TZ $VISUAL Manche Programme fragen den Wert dieser Variablen ab, um die entsprechende Shell zu starten (z. B. Wertzuweisung csh, ksh) - - ~, - Ais Wert wird jeweils das aktuelle Directory zugeordnet nur in der Korn-Shell Ais Wert ist hier der Terminaltyp der Dialogstation zugeordnet. Die richtige Zuordnung ist wichtig bei vielen bildschirmorientierten Programmen (z. B. grafische Oberflache, vi, more etc.) Dieser Variable kennen Angaben zur Zeitzone zugewiesen werden (z. B. fUr automatische Berechnung der Ortszeiten bei mail) 1st diese Variable belegt, kann die Befehlszeile editiert nur in der Korn-Shell werden - Bild 3 -171: Obersichtstabelle vordefinierter Variablen Vordefinierte Variable kennen Sie auch in Ihren Shell-Prozeduren verwenden (soweit dies Sinn macht). Innerhalb einer Shell-Prozedur stehen Ihnen weitere Shell-Variable zur Verfugung. Die Shell analysiert Ihren Kommandoaufruf und erkennt, getrennt durch ein oder mehrere Leerzeichen, folgende Teile: $0 ,~_$_1__________~~~~__________~$n ~/ aile Parameter: $* Die einzelnen Teile eines Kommandoaufrufs werden je nach Position des Kommandoteils der Variablen 0, 1,2 bis 9 zugewiesen. Den Namen des Kommandoaufrufs kennen Sie innerhalb Ihrer Shell-Prozedur mit $0 erhalten, den Parameter 1 mit der Variablen $1. Aile Namen der Parameter werden durch die Eingabe von $* ersetzt. Zusatzlich kennen die Anzahl der Parameter oder die ProzeBnummer abgefragt werden. Diese Variablen werden auch Positionsparameter genannt. In der nachstehenden Aufstellung sind sie zusammengefaBt: 267
3 UNIX - praktisch angewandt Positionsparameter Bedeutung Positionsparameter $0 Name der Shell-Prozedur $2 $1 Wert des 1. Parameters Wert des 2. Parameters $9 Wert des 9. Parameters $* Werte aller angegebenen Parameter $# Anzahl der Parameter $1 Exit-Status des letzten Kommandos $$ ProzeBnummer der Shell-Prozedur '------_...... ---------- Bild 3 -172: Obersichtstabe/le Positionsparameter 3.7.4 Verwendung von Positionsparametern Um die Funktion der Positionsparameter zu verdeutlichen, erstellen wir eine kleine Shell-Prozedur, die nichts anderes tun soli, als uns die Werte der einzelnen Parameter anzuzeigen. Wir erstellen mit einem Editor die Oatei posi mit folgendem Inhalt: #!/bin/sh Bafehl fOr die Shell, dieses Kommando mit der Bourne-Shell auszu!Uhren #Diese Prozedur gibt nur die einzelnen Parameter aus echo "Oer Name der Shell-Prozedur lautet: $0' echo "Es wurden $# Parameter angegeben" echo "Oer 1. Parameter lautet: $1 " echo "Oer 2. Parameter lautet:$2" echo "Oer 3. Parameter lautet:$3" echo "Dies sind aile angegebenen Parameter: $ •• echo "Die Nummer der Shell-Prozedur ist: $$" Kommentarzeile Bild 3 -173: Beispiel: She/l-Prozedur mit Positionsparameter Andern wir die Zugriffsrechte auf ,ausfOhrbar< und rufen die Shell-Prozedur mit unterschiedlichen Parameter auf: 268
3.7.4 Shell·Prozeduren $ chmod +x posi $ posi was passiert Zuweisung der einzelnen lelle des Aufrufes: posl was passiert •• • Der Name der Shell·Prozedur lautet: posi o 1 Es wurden 2 Parameter angegeben Der 1. Parameter lautet: was Der 2. Parameter lautet: passiert Der 3. Parameter lautet: Dies sind aile angegebenen Parameter: was passiert Die Nummer der She/l·Prozedur ist: 84 2 Die ProzeBnummern werden ab Hochfahren des Systems durchnumeriert $ posi nochmal aufgerufen mit mehr als nur 3 Parametern Der Name der Shell-Prozedur lautet: posi Es wurden 8 Parameter angegeben Der 1. Parameter lautet: nochmal Der 2. Parameter lautet: aufgerufen Der 3. Parameter lautet: mit Dies sind al/e angegebenen Parameter: nochmal aufgerufen mit mehr als nur 3 Parametern Die Nummer der Shell-Prozedur ist: 85 Bild 3 -174: Beispiel Ausgabe der Positionsparameter In dem ersten Beispiel sehen Sie, daB der Positions parameter $3 keinen Wert enthalt. 1m zweiten Beispiel wurden mehr als drei Parameter Obergeben, obwohl in der Prozedur nur die ersten drei abgefragt werden. Eine Shell-Prozedur Obernimmt aile Obergebenen Parameter, auch wenn sie nicht in der Prozedur abgefragt, also nicht benotigt werden. Wenn eine Prozedur mit bestimmten Parametern aufgerufen werden soli, dann mOssen Sie in der Shell-Prozedur eigens darauf abfragen. Doch davon spater, wenn wir den Ablauf einer Prozedur von bestimmten Bedingungen abhangig machen. In der Praxis benotigen Sie Positionsparameter, wenn Sie unterschiedliche Werte mitgeben wollen. Zu den bisher am meisten verwendeten Kommandos gehort Is. Einmal haben wir es fOr das aktuelle Directory aufgerufen, ein andermal fOr /bin oder unsere Unterdirectories Uebungen, Texte usw. Schreiben wir ein eigenes Kommando listen, das folgende Funktionen ausfOhrt: o Es soli ein Inhaltsverzeichnis mit Oberschrift ausgegeben werden; ODie aufgefOhrten Dateien sollen alphabetisch sortiert werden, wobei GroBund Kleinbuchstaben gleichberechtigt sein sollen; ODie Dateien sollen seitenweise auf dem Bildschirm angezeigt werden; 269
3 UNIX - praktisch angewandt o Das Kommando soli von unterschiedlichen Directories aufgerufen werden k6nnen. Versuchen wir es. Mit einem Editor erstellen wir die Datei listen mit folgendem Inhalt: #!/binlsh Befehl fOr die Shell, dieses Kommando mit der Bourne-Shell auszufOhren # Shell-Prozedur, um das Inhaltsverzeichnis von Directories auszugeben echo "Um die naechste Seite zu sehen, druecken Sie bitte die Aeturntaste. Wollen Sie das Programm abbrechen, geben Sie q ein. Das Directory $1 enthaelt folgende Dateien:" Is -F $1 I sort -f I pg Bild 3 - 175: Beispiel einer Shell-Prozedur ,Listen eines Directories' Muster 1 - Positionsparameter Nachdem wir die Zugriffsrechte der Datei mit chmod +x listen auf ausfOhrbar gesetzt haben, k6nnen wir listen mit unterschiedlichen Parametern aufrufen: $ listen Um die naechste Seite zu sehen, druecken Sie bitte die Returntaste. Wollen Sie das Programm abbrechen, geben Sie q ein. Das Directo1Jj enthaelt folgende Dateien: h,.etute. Keine Ersetzung der Variablen $1 da kein Parameter mitgegeben wurde sicher' tscich. wsich' Ohne Angabe eines Parameters gibt das Is-Kommando das aktuelie Directory aus IS er' POSI' W°F): Ausgabe vom pg-Kommando Bild 3 -176: Beispiel Aufruf der erstellten Shell-Prozedur ,listen' Aufen Sie das gleiche Kommando mit e n i em Parameter auf, erhalten Sie folgende Ausgabe: 270
3.7.5 Shell-Prozeduren $ listen •.IUeb* Um die naechste Seite zu sehen, druecken Sie bitte die Returntaste. Wollen Sie das Programm abbrechen, geben Sie q ein. Das Directo~ ..IUebungen enthaelt folgende Dateien: Ersetzung der Variablen $1 durch die Datum datum von der Shell expandierte Angabe .JUeb' inhalt neu neuer ueb1 W°F): Ausgabe vom pg -Kommando Bild 3 -177: Beispiel Aufruf der erstellten Shell-Prozedur >/isten, mit Parameter Bisher haben wir mit verhaltnismaBig einfachen Mitteln schon komfortable Kommandos geschrieben. Wir haben unterschiedliche Kommandos verwendet mit Umleitung der Ausgabe, mit Dateinamenexpansion; wir haben Nachrichten mit echo auf den Bildschirm ausgegeben, den Benutzer informiert, was ertun kann, was passiert, und wir haben uber Variable unterschiedliche Werte zugeteilt. Um den Benutzer zu fOhren und den Ablauf der Prozedur zu steuern, gibt es weitere schone Werkzeuge. 3.7.5 Ablaufsteuerung einer Shell-Prozedur Um den Ablauf einer Prozedur nach dem Wunsch des Benutzers zu steuern, muBten wir ihn fragen, was er wunscht. Seine Antwort muB vom Rechner erkannt und ausgewertet werden. Wie Sie eine Frage auf den Bildschirm ausgeben konnen, wissen Sie bereits: Mit dem Kommando echo. Um die Antwort des Benutzers zu lesen, gibt es das Kommando read, Name einer Variablen (bzw. mehrere) lesen read - internes Shell-Kommando, um eine Antwort vom Terminal zu lesen Mit dem Kommando read wird von der Standardeingabe bis zum Zeichen fOr Zeilenende gelesen. Dieser Wert wird der Variablen zugewiesen mit dem Namen, den Sie mit read angeben: Name= "ge/esene Zeile vom Bildschirm II Den Inhalt der Zeile konnen Sie wahrend der Prozedur mit $Name verwenden. Geben Sie mehrere Namen an, so erreichen Sie dam it, daB der eingegebene Text aufgesplittet wird und die einzelnen Worter (Text jeweils bis zum nachsten Leerzeichen) den Namen zugewiesen wird. Werden mehr Worter ubergeben als 271
3 UNIX - praktisch angewandt Variablennamen zur VerfOgung stehen, wird dem letzten Namen der Rest der Zeile zugewiesen. Um die Funktion von read zu demonstrieren, schreiben wir eine kleine Prozedur anzeigen, die den Benutzer fragt, welche Datei angezeigt werden soli. Die angegebene Datei soli dann mit Zeilennummern auf dem Bildschirm seitenweise angezeigt werden: # Shell-Prozedur, um eine Datei mit Zeilennummern seitenweise anzuzeigen echo 'Welche Datei 5011 angezeigt werden?" read Antwort echo "Um die naechste Seite zu sehen, druecken Sie bitte die Return-" echo" taste. Wollen Sie das Programm abbrechen, geben Sie q ein. ' pr -n $Antwort I pg Bild 3 -178: Beispiel einer Shell-Prozedur >Anzeigen einer Datei, Muster 2 - read-Funktion Haben Sie es schon mal erlebt, daB Ihr Terminal blockiert war? Dies passiert u.a., wenn Sie versuchen, ein Directory mitpg, more oder cat anzuzeigen. Ein Directory enthalt nicht druckbare Zeichen (binar, nicht ASCII) und kann deshalb nicht mit den oben aufgefOhrten Kommandos gelesen werden. Auch ist nicht sicher, ob die yom Benutzer angegebene Datei Oberhaupt existiert. Wenn Sie einen sicheren Ablauf eines Kommandos erreichen wollen, mOssen Sie vorab prOfen, ob die Voraussetzungen erfOlit sind (sog. PlausibilitatsprOfungen). Wie OberprOfen Sie, ob eine Datei existiert und welche Merkmale sie aufweist? HierfOr gibt es das Kommando test. Das Kommando test hat mehrere Funktionen. Es wird verwendet: 272 o um zu prOfen, ob eine Datei existiert, welchem Dateityp sie angehort und welche Zugriffsrechte gesetzt sind; o o um zu OberprOfen, ob Zeichenfolgen (Strings) vorhanden sind; um Zeichenfolgen miteinander zu vergleichen. Hierbei kann auf Textgleichheit abgefragt werden, oder es konnen, wenn es sich um Zahlen handelt, algebraische Vergleiche (gleich, groBer gleich, kleiner, kleiner gleich, nicht gleich) vorgenommen werden.
3.7.5 Shell-Prozeduren I ,est [-r w x f d PriJfen i ] Dateiname ob die Datai existiert und nicht leer ist (GroBe ungleich nulO (size) ob die Datei existiert und ein Directory ist ob die Datei existiert und as sich um eine normale Datei handelt (file) ob die Datei existiert und ausfOhrbar ist (Kommando) (executable) ob die Datei existiert und Schreibertaubnis hat (write) ob die Datei existiert und Leseertaubnis hat (read) Es kann jeweils nur eine Option abgefragt werden test - Kommando, um Dateien zu Oberpriifen Dieses Kommando wird nur innerhalb von Shell-Prozeduren benutzt. Wenn Sie z. B. prOfen wollen, ob die Datei listen ausfOhrbar ist, dann wOrden Sie das Kommando eingeben mit test -x listen Ais Ergebnis wird nur ein Wert zurOckgeliefert, der als erfolgreich (positiv - ExitStatus 0) von der Shell erkannt wird oder nicht erfolgreich (nicht positiv - ExitStatus ungleich 0). Sie sehen kein Ergebnis. Das Ergebnis kann jedoch abgefragt werden. Die einfachste Form, den Ablauf von Kommandos zu steuern, ist das nachste Kommando nur dann zu starten, wenn das vorherige erfolgreich war. HierfOr werden die Kommandos mit && verknOpft. Kommando1 && Kommando2 && - Zeichen fUr bedingte AusfUhrung von Kommandos: nur wenn das vorherige erfolgreich war, wird das nachfolgende ausgefUhrt Um in unserer Shell-Prozedur anzeigen zu OberprOfen, ob es sich bei der angegebene Datei um eine normale Datei (-f) handelt, konnen wir das Kommando test verwenden. Nur wenn dies zutrifft, wird die Datei angezeigt: test -f $Antwort && pr -n $Antwort I pg Falls es sich bei der Antwort nicht um eine Datei handelt, wOrde das Kommando test nicht erfolgreich sein und damit die nachfolgenden Kommandos nicht mehr ausgefOhrt werden. Mit dem doppelten Pipezeichen II kann gesteuert werden, daB nur dann das nachfolgende Kommando ausgefOhrt wird, wenn das vorherige nicht erfolgreich war. z. B.: test -f $Antwort II echo "$Antwort ist keine Datei/" 273
3 UNIX - praktisch angewandt Kommando 1 II Kommando2 II - Zeichen fur bedingte Ausfuhrung von Kornrnandos: nur wenn das vorherige nicht erfolgreich war, wird das nachfolgende ausgefUhrt Mehr M6glichkeiten, in Abhangigkeit von dem Erfolg oder Nichterfolg eines Kommandos weitere Kommandos zu steuern, bietet die if-Bedingung. Wenn es sich bei Antwort um eine normale Datei handelt, dann soli sie am Bildschirm angezeigt werden, sonst soli eine entsprechende Nachricht ausgegeben und die Prozedur beendet werden. Wir wollen also den Ablauf der Prozedur steuern, abhangig von bestimmten Bedingungen. In dem vorigen Absatz sind die Worte wenn, dann und sonst durch Fettdruck hervorgehoben. Ahnlich wie in der natOrlichen Sprache wird auch in der ShellProgrammierung (und in vielen h6heren Programmiersprachen) der Ablauf einer Prozedur Ober ,if (wenn) then (dann) else (sonst), gesteuert. Sehen wir uns hierzu die Regel an: Wie verwenden Sie die if-Bedingung? if Kommando(Bedingung) _ _ _ _ _ wenn das und das zutrifft fi then Kommandofolge1 _ _ _ dann tue .... [else Kommandofolge2 - - - [sonst tue ..• J - - - - - - - - - - - - - fertig (Ende der Abfrage) if then else fi - internes Shell-Kornrnando, urn den Ablauf zu steuern Mit fi wird die if-Abfrage beendet (es ist die Umkehrung von if). Die Worte if, then, fi rnussen vorhanden sein und jeweils in einer eigenen Zeile stehen. Schreiben wir unsere Forderung im Programmierstil: if test -f $Antwort fi 274 Wenn die angegebene Datei ($Antwort) existiert und es sich urn eine normale Datei handelt (test -Q then pr -n $Antwort I pg dann soli sie am Bildschirm angezeigt werden (pg) else echo "$Antwort ist keine Datei" _ sonst soli eine entsprechende Nachricht exit ausgegeben und die Prozedur beendet werden (echo; exit) Ende (fi) Ende der Abfrage Bild 3 -179: Beispiel if then else fi
3.7.5 Shell-Prozeduren Wenn das Kommando test -f $Antwort eriolgreich ist, d.h., bei der gelesenen Antwort (read Antwort) handelt es sich um eine existierende normale Datei, dann (then) wird sie am Bildschirm angezeigt (pr -n Datei I pg). Nach then konnen auch weitere Foigen von Kommandos angegeben werden, so kann etwa vorab eine Nachricht auf den Bildschirm ausgegeben werden. War das Kommando test -f $Antwort nicht eriolgreich, d. h., entweder existiert unter dem aktuellen Directory keine Datei mit dem angegebenen Namen, oder es handelt sich nicht um eine normale Datei, sondern z. B. um ein Directory, dann springt die Shell zu else und fOhrt die dart aufgefOhrten Kommandos der Reihe nach aus. Ais AbschluB erwartet die Shell ein fi (Ende der Abfrage). Erganzen wir die Shell-Prozedur anzeigen von Bild 3 -178 auf Seite 272 um nachfolgende Zeilen (sie sind umrandet hervorgehoben). # Shell-Prozedur, um eine Datei mit Zeilennummern seitenweise anzuzeigen echo "Welche Datei soli angezeigt werden?" if test -f Antwort m Ie naechste Seite zu sehen, druecken Sie bitte die Return-' ec 0 echo' taste. Wollen Sie das Programm abbrechen, geben Sie q ein.· ~ -n ~Antwort I ~ hO · Antwort jst:ne Datei ' : exit I lEJ Bild 3 -180: Beispiel einer Shell-Prozedur >Anzeigen einer Datei, Muster 3 - erganzt um das Kommando test und die Abfrage mit if then else fi Bei diesem Beispiel haben wir das Shell-internes Kommando exit verwendet: exit I abtreten, Ausgang exit - Kommando, um eine Shell-Prozedur vorzeitig zu beenden In dem obigen Beispiel ware es nicht notwendig gewesen, exit ausdrOcklich anzugeben, da die Prozedur keine weiteren Kommandos mehr beinhaltet, also sowieso am Ende war. WOrden weitere Kommandos folgen, konnte durch exit ein frOhzeitiger Abbruch der Prozedur erreicht werden. Wie konnen Sie if-8edingungen schachteln? If-Bedingungen konnen auch geschachtelt werden. Dies bedeutet, daB Sie zum Beispiel bei then wieder eine oder mehrere Abfragen mit if starten konnen. Nach jedem if muB wieder ein then folgen und mit fi abgeschlossen werden. Die nachstehende Grafik soli dies verdeutlichen: 275
3 UNIX - praktisch angewandt if Kommando (Bedingung) then if Kommando (Bedingung) then Kommandofolge (evtl. weitere Kommandofolgen) if Kommando (Bedingung) then Kommandofolge fi fi fi (weitere Kommandofolgen) Bild 3-181: Verschachtelung von if-Bedingungen Bei Verschachtelungen kann man leicht den Oberblick verlieren. Es empfiehlt sich deshalb, bei Prozeduren mit verschachtelten if-Bedingungen jeweils einzurucken, um die Zusammenhange sichtbar hervorzuheben. Wird eine weitere ifBedingung in Verbindung mit else eingegeben, so kann sie als etif zusammengezogen werden. 'etif, verlangt ebenso ein then wie if. Allerdings benetigt elif keinen eigenen AbschluB mit fi. Eingabe mit else if alternativ elif if Kommando (Bedingung) then Kommandofolge else if Kommando (Bedingung) then Kommandofolge it Kommando (Bedingung) then Kommandofolge elit Kommando (Bedingung) then Kommandofolge fi ti ---------- _ _I keine Eingabe I fi Bild 3-182: Alternative Eingabe mit 'elif, statt 'else if, Selbstverstandlich kennen weitere Verschachtelungen nach elif erfolgen und kombiniert werden mit if then. Zu tiefe Verschachtelungen sind jedoch unubersichtlich und sollten vermieden werden. Wenden wir uns deshalb vom Labyrinth der if- und elif-Bedingungen ab und befassen uns mit praktischen Anwendungen. 276
3.7.5 Shell-Prozeduren Wir wollen den Benutzer unserer Kommandos noch mehr in den Ablauf einer Prozedur einbeziehen. Er soli entscheiden, ob etwas geschehen soli oder nicht. Wie kennen wir das erreichen? o Wir geben eine Frage mit dem Kommando echo auf den Bildschirm aus und Olesen die Antwort mit dem Kommando read. o Wenn die Antwort mit einer vorgegebenen Zeichenkette Obereinstimmt if test "', dann soli eine bestimmte Kommandofolge durchgefOhrt werden (z. B. eine Datei gelescht werden). Bisher haben wir das Kommando test nur auf die Existenz von Dateien mit bestimmten Zugriffsrechten verwendet. Wie verwenden Sie das test-Kommando, um eine ASCII-Zeichenkette zu OberprOfen? Das Kommando test kann eine Zeichenkette (wie sie z. B. eine Variable enthalt, die durch das Kommando read erstellt wurde) Oberpriifen nach folgenden Merkmalen: t' [:~ I Zeichenkette I n (not zero) ob die Zelchenkette mcht leer 1St PriJfen oder z (zero) ob die Zeichenkette leer ist test - Kommando, um Zeichenketten zu OberprOfen Auch hier gilt: Ais Ergebnis liefert das Kommando test nur einen sog. Exit-Status 0 fOr erfolgreich oder ungleich 0 fOr nicht erfolgreich. Auch wenn Sie Zeichenketten miteinander vergleichen, kennen Sie nur den Exit-Status abfragen (z. B. Dber if then else). Handelt es sich bei der Zeichenkette um ASCII-Text, dann kennen Sie aufTextgleichheit OberprOfen mit: Zeichenkette-A = Zeichenkette-B Beachten Sie, daB unbedingt Leerzeichen zwischen den einzelnen Feldern stehen mOssen! test - Kommando, um Zeichenketten (Text in ASCII) auf Gleichheit zu prOfen 277
3 UNIX - praktisch angewandt Wollen Sie abfragen, ob der Text nicht gleich ist, vergleichen Sie mit: if test Zeichenkette-A 1= Zeichenkette-B hler 1st keln Leerzelchen dazwischenl test - Kommando, um Zeichenketten (Text in ASCII) auf Nichtgleichheit zu prufen Das Kommando test ist erfolgreich, wenn Zeichenkette-A ,nicht gleich< der Zeichenkette-B ist. Das Ausrufezeichen zusammen mit Gleichheitszeichen bedeutet eine Negation (a/so ung/eich). Die Negativ-Abfrage ist jedoch mit Vorsicht zu benutzen. Fragen Sie namlich ab, ob die Antwort nicht ,ja< ist, dann gelten aile anderen Angaben als richtig (also auch +). l> Auch bei Dateien (siehe auch Seite 273) kennen Sie abfragen, ob die Datei nicht existiert bzw. keine Schreib- oder Leseerlaubnis hat, kein Directory ist. Doch Vorsicht, hier wird zwischen dem abzufragenden Wert (-fdrwx) und dem Ausrufezeichen ein Leerzeichen gesetzt, z. B. if test! -f $Antwort Das Kommando test ist hier erfolgreich, wenn die Zeichen in $Antwort keiner normalen Datei in dem aktuellem Directory entsprechen. Ab UNIX System V kennen Sie das test-Kommando auch in vereinfachter Form eingeben. Statt das Kommandos test auszuschreiben, wird der Vergleich in ekkige Klammern gesetzt. Diese Form gilt auch fUr aile anderen Abfragen mit test. Zeichenkette-A Beachten Sie. daB unbedingt Leerz8lChen zwischen den einzelnen Feldem setn mOssenl test - modernere Schreibweise In unseren Beispielen verwenden wir test in der auch fOr die alteren UNIX-Versionen gOltigen Form (sie ist meiner Ansicht weniger fehlerantallig, das ist aber sicher nur eine Gewehnungssache). Wenn Sie in einer Prozedur eine Frage stellen, kennen Sie z. B. mit test abfragen, ob die Antwort ja ist. Sehen wir hierzu einen Teil einer Kommandoprozedur: 278
Shell-Prozeduren 3.7.5 echo "soli die Datei $1 geloscht werden?" read Antwort oder: if [ "$Antwort" = if test "$Antwort" = "jaN then rm $1 fi "jaN J Bild 3 -183: Beispiel test-Abfrage auf Textgleichheit + Bei diesem Vergleich wird nur auf >ja< geprOft. Wenn nur oder >n< oder gar nichts eingeben wird, ist das fOr den Ablauf der Prozedur wie ein >nein< - d. h. nicht erfolgreich. I> Generell sei noch darauf hingewiesen, daB es am sichersten ist, wenn Sie Zeichenketten in Anfuhrungszeichen setzen (also auch die Variable, die als Zeichenkette ersetzt wird), damit werden auch evtl. Leerzeichen oder >keine Eingabe< (wenn z. B. der Benutzer nur die Return-Taste drDckt) von der Shell erkannt (test gibt dann eine Fehlermeldung >argument missing' aus, und die Shell-Prozedur wOrde abgebrochen werden) Um mehrere >richtige Antworten, gelten zu lassen, konnen Sie die Abfrage mit test kombinieren, d. h. verschiedene PrOfungen miteinander verbinden (Iogische VerknDpfungen). HierfOr gibt es die Optionen test 1. Vergleich [~rl I ] 2. I (and) Vergleich [ weitere VerknDpfungen 1 und-Verknupfung, beide Abfragen mOssen erlOlit sein (or) oder-VerknOpfung, eine von beiden Abfragen muB erlOlit sein. test - Kombination mit -a (and, und) und -0 (or, oder) Eine VerknOpfung von zwei Abfragen kann z. B. dazu verwendet werden, eine Antwort mit >ia' oder >i< als richtig anzuerkennen (siehe nachfolgendes Beispiel: Teil eines Loschkommandos). Eine VerknOpfung von zwei Bedingungen ist z. B. dann erforderlich, wenn der Benutzer nur dann eine Datei kopieren darf, wenn er leseberechtigt ist und nicht bereits eine Datei mit dem neu zu vergebenden Namen existiert (siehe nachfolgendes Beispiel: Teil eines Kopierkommandos). 279
3 UNIX - praktisch angewandt z. B. Teil eines Loschkommandos: echo 'soli die Datei $1 gelascht werden?' read Antwort if test u$Antwort" = Uja" -0 u$Antwort" then rm $1 fi = Uj" z. B. Teil eines Kopierkommandos: echo ' Welche Datei 5011 kopiert werden?' read Datvon echo ·Wie soli die kopierte Datei heissen?" read Datnach if test -r $Oatvon -a! -f $Oatnach fi then cp $Datvon $Datnach Bild 3-184: Beispiel Kombination des test-Kommandos (-a,-o) Bisher haben wir mit dem test-Kommando Dateien OberprOft oder Zeichenfolgen (ASCII-Text) miteinander verglichen. Handelt es sich bei den zu vergleichenden Werten um Zahlen, dann wird ein algebraischer Vergleich durchgefOhrt. Wie verwenden Sie test, um Zahlenwerte zu vergleichen? Der Vergleich wird in ahnlicher Form wie bei Text-Zeichenketlen durchgefOhrt. Allerdings dart hierbei nicht das Gleichheitszeichen verwendet werden, sondern der Vergleich wird mit der jeweiligen AbkOrzung der englischen Warter fOr gleich, kleiner, graBer vorgenommen. Sehen wir uns hierzu eine Tabelle an, die die mag lichen Vergleiche zeigt: ------------~------------~-, Abfrage auf Kommandoelngabe equal gleich not equal nicht gleich alternative Schreibwelse test n1· -eq n2 [ n1 -eq n2 ] test n1 -ne n2 [ n1 -ne n2 ] test n1 -It n2 [ n1 -It n2 ] test n1 -Ie n2 [ n1 -Ie n2 ] test n1 -gt n2 [ n1 -gt n2 ] test n1 -ge n2 [ n1 -ge n2 ~ ---j less than kleiner als less equal kleiner gleich greater than groBer als greater equal groBer gleich - - *) n1 und n2 stehen fOr die beiden Zahlen, die verglichen werden soilen 280 test - Kommando, um Zahlen zu vergleichen ----1
3.7.6 Shell-Prozeduren --------------------~------------------ Wollen Sie z. B. in einer Prozedur sicherstellen, daB mindestens 2 Parameter angegeben werden mOssen, so konnen Sie mit test -It abfragen, ob weniger als 2 Parameter Obergeben wurden. Wurden weniger als 2 Parameter angegeben, so soli die Prozedur abgebrochen werden. Sehen wir uns hierzu ein Beispiel an: Teil einer Shell·Prozedur mit Abh'age auf die Anzahl der Parameter if test "$#" -It "2" -- Wenn die Anzahl der Parameter k1einer als 2 ist, dann ... then echo "Es mOssen mindestens 2 Parameter angegeben werden" exit fi Bild 3 - 185: Beispiel Teil einer Shell-Prozedur mit algebraischem Vergleich Mit den bisher kennengelernten Befehlen konnen Sie nun eigene, schon anspruchsvolle Prozeduren schreiben. 3.7.6 Beispiele zur Erstellung von eigenen Shell-Prozeduren Eine Shell-Prozedur ist ein kleines Programm. Bevor Sie ein .Programm< schreiben, planen Sie. Wenn wir in unserem Beispiel ein eigenes Kommando zum Loschen von Dateien schreiben wollen, Oberlegen wir uns erstmal: 1. Was wollen wir mit dem Kommando erreichen? 2. Welche Fehlerquellen wollen wir unbedingt ausschlieBen? 3. Welche einzelnen Schritte sind notwendig (Abhangigkeit - Struktur), und welche Kommandos verwenden wir? Programmierer verwenden fOr groBe Programme ein FluBdiagramm (s. Allgemeine EinfOhrung, Bild 1-5 auf Seite 15 oder andere Strukturplane. Wir wollen uns bei den kleinen Prozeduren mit einer Obersichtlichen Autzahlung der einzelnen Schritte begnOgen. Spater werden Sie die Shell-Kommandos wie eine Sprache benOtzen und sie ebenfalls in Obersichtlicher Form aufschreiben (EinrOckung z. B. bei if-Abfragen). Beginnen wir mit einem Loschprogramm. 1. Was wollen wir mit dem Kommando erreichen? Das Kommando soli den Benutzer fragen, welche Datei gel6scht werden soli oder den Obergebenen Parameter als zu loschende Datei annehmen. Um sicherzugehen, daB es die richtige Datei ist, soli versucht werden, den Inhalt der Datei zu erkennen. Der Benutzer soli sich den Inhalt der Datei vorab ansehen k6nnen. Erst nach Bestatigung wird die Datei geloscht. 281
3 UNIX - praktisch angewandt 2. 3. Welche Fehlerquellen wollen wir ausschlieBen? Es konnen keine Directories geloscht werden. Es darf keine Datei geloscht werden, fOr die der Benutzer keine Schreiberlaubnis besitzt. Verarbeitungshinwaise Einzelne ScMlte 1st ein Parameter ubergeben worden? il test $# -ne 0 Wenn ja, ist der 1. Parameter die zu loschende Datei $1 der Variable loesch zuweisen Sonsl Iragen, welche Datei geloscht werden soli und die Anwort lesen echo read loesch PrOlen. ob die zu loschende Datai ein Directory- - I -i-IC-test -d $"""Ioe - sc-:h -0 I -w $Ioesch ist oder ob keine Schreiberlaubnis fUr den Benulzer besteht I Wenn dies zulrifft, Nachricht ausgeben, daB die Datel nichl geloescht werden dar! und Prozedur beenden echo exit --+-- Aile Bedingungen sind nun erlOlI!. Die zu loschende Datei klassifizieren und Iragen;- file - echo -; read Antw ob sie angezeigt werden soli: il test $Antw = ja; then pg Fragen, ob die Datei wirklich geloschl werden soli? Wenn nein - Prozedur beenden Wenn ja - Datei loschen. echo read Antw - il test $Antw = Ja exit - - - - - + -rm $Ioesch L- Nun, die Prozedur ist schon fast fertig. Jetzt brauchen wir nur noch sorgfaltig den Rahmen ausfOllen. Achten wir also darauf und schreiben, um jede if-Bedingung klar zu erkennen, die Prozedur Obersichtlich mit entsprechenden EinrOkkungen. Um Ihnen das Nachvollziehen der einzelne Schritte besser zu ermoglichen, sind Kommentarzeilen (kursiv) eingefOgt und die Kommandos in Fettschrift hervorgehoben. Jede if-Bedingung ist mit einem Kastchen umrandet: 282
3.7.6 Shell-Prozeduren #! Ibinlsh # She/l-Prozedur, um Dateien zu loschen # # # 1st ein Parameter Obergeben worden? if test "$#" -ne "0" Wenn ja, ist der 1. Parameter die zu loschende Datei Zuordnung einer Variablen then loesch="$1" Wenn nein, dann fragen we/che Datei ge/oscht werden sol/. else echo" Welche Datei soli geloscht werden?" read loesch # Die Antwort lesen fi - - # Priifen, ob die zu loschende Datei ein Directory ist oder keine Schreib# erlaubnis fOr den Benutzer besteht Abfrage auf negativen Wert if test -d $Ioesch -0 ! -w $Ioesch .Wenn dies zutrifft, Nachricht ausgeben, daB die Datei # # nicht ge/oescht werden darf then echo" Die Datei $Ioesch darf nicht geloscht werden" fi exit # und Prozedur beenden # Wenn die Bedingungen aile erfOIlt sind, dann die zu loschende Datei # klassifizieren und fragen, ob sie angezeigt werden soli echo" Bei der Datei $Ioesch handelt es sich wahrscheinlich um:" file $Ioesch echo" Soli die Datei $Ioesch angezeigt werden?" read Antw if test "$Antw" = "jail -0 "$Antw" = then pg $Ioesch # wenn ja, anzeigen: fi "j" # Fragen ob die Datei wirklich ge/oscht werden 501/ echo "Soli die Datei $Ioesch wirkJich geloescht werden?" read Antw "j" if test "$Antw" = "ja" -0 "$Antw" = then rm $Ioesch # wenn ja, Datei loschen. fi Bild 3 -186: Beispiel der Shell-Prozedur - loschen Bei der letzten if-Bedingung wurde keine Kommandofolge eingegeben fUr den Fall, daB nicht mit ja geantwortet wurde. Wenn die Datei also nicht gel6scht werden soli, wurde die Shell-Prozedur beendet werden. Nun, diese Abfrage ist sowieso die letzte Anweisung (Statement), deshalb ist hier auf .else exit, verzichtet worden. Probieren Sie dieses Beispiel doch mal aus oder schreiben Sie eine 283
3 UNIX - praktisch angewandt ahnliche Shell-Prozedur. Andern Sie mit chmod +x die Zugriffsrechte und rufen Sie die Prozedur auf. Sie werden sehen, es passiert zu leicht, daB sich ein kleiner Fehler eingeschlichen hat. Vielleicht erhalten Sie folgenden Fehlerhinweis: Syntax error at line .. 'end of file not expected' (Rege/fehler in Zeile ... 'Ende der Datei nicht erwartet? Mit dieser lapidaren Fehlernachricht, die sich nur auf die letzte Zeile bezieht, kennen Sie leider nicht vie I anfangen. Die meisten Fehler in Shell-Prozeduren sind zurOckzufOhren auf: 1. AnfUhrungszeichen treten nicht paarweise auf. 2. if-Bedingung wurde ohne then verwendet oder nicht mit fi abgeschlossen, oder die entsprechenden Anweisungen (if, then, else) stehen nicht in eigenen Zeilen. Spater werden wir weitere Ablaufsteuerungen mit for do done, mit while do done oder case esae kennenlernen, bei denen die gleiche Fehlerquelle besteht. 3. Das Kommando test wurde nicht mit Leerzeichen eingegeben, oder die zu vergleichende Zeichenkette nicht in AnfOhrungszeichen gesetzt. 4. Variablen wurden falsch gebildet, z. B. wurden Leerzeichen eingegeben anstatt >=c ohne Leerzeichen zwischen Namen der Variablen und dem zugewiesenem Wert zu verwenden; bzw. der Wert wurde nicht in AnfOhrungszeichen gesetzt, obwohl er Leerzeichen beinhaltet. 5. Variablen wurden ohne $-Zeichen angegeben (Ersetzung des Wertes). 6. Klammern wurden geeffnet, aber nicht geschlossen. 7. Schreibfehler - z. B. Zuweisung bzw. spatere Abfrage der Variablen mit falschem Namen Um eventuelle Fehler leichter zu finden, kennen Sie zu Beginn der Shell-Prozedur das Kommando set mit entsprechenden Optionen setzen: Setzen von Shell-Optionen (execute) aile ausgefUhrten Befehle werden angezeigt Minuszeichen ohne weitere Angabe bedeutet ZUrUcksetzen der Option x ,v (verbose) aile Zeilen der Prozedur werden angezeigt set - Kommando, um Shell-Optionen zu setzen Steht set -xv am Anfang einer Shell-Prozedur, so kennen Sie den Ablauf der Prozedur verfolgen und sehen, wie die Variablen oder Metazeichen ersetzt wurden. 284
3.7.7 Shell-Prozeduren 3.7.7 Schleifenverarbeitung Sobald eine (oder mehrere) Anweisungen nicht nur einmal durchgefOhrt werden sollen, sondem mehrmals, benotigt man eine Schleife, so etwa, wenn eine Foige von Kommandos so oft durchlaufen werden soli, wie Parameter mitgegeben wurden. Eine Schleife besteht aus drei Teilen: o dem Schleifenkopf (Schleifenaufrufe: for, while, until) o dem Schleifenrumpf, dies sind die mehrmals auszufOhrenden Kommandos o der Schleifenklammerung (do •• done). Um eine Schleife, eine mehrmalige Wiederholung von Kommandos, einzuleiten, gibt es unterschiedliche Aufrufe, je nachdem in welcher Abhiingigkeit die Wiederholung der Kommandofolgen steht. Die nachstehende Obersicht faBt die Moglichkeiten zusammen: Kommando zur Einleitung der Schleife Wiederholung der Kommandofolge abhangig von: for Name do Kommandoliste .... der Anzahl der beim Aufruf der ShellProzedur ubergebenen Parameter. Wurden z. B. 3 Parameter ubergeben, wird die angegebene Kommandoliste von do bis done dreimal durchlaufen. done for Name in Wolt1 .. Wortn do Kommandoliste .... done while Kommando da Kommandoliste .... done until Kommando do Kommandoliste .... done der Anzahl der angegebenen Worter. Geben Sie z. B. ein for i in otto hugo bernd iris wird die angegebene Kommandoliste viermal durchlaufen. dem Ergebnis des Kommandos nach while. SOlange die Kommandofolge erfolgreich ist (Exit-Status 0), wird die Kommandoliste durchlaufen. Z. B. solange die Variable Antw den Wert ja hat, wird die Kommandoliste zwischen do .. done wiederholt. dem Ergebnis des Kommandos nach until. Solange die Kommandofolge nicht erfolgreich ist (Exit-Status ungleich 0) wird die Kommandoliste zwischen do und done durchlaufen. Es handelt sich um die Umkehrung der while-Schleife. Bild 3 -187: Obersicht moglicher Schleifenkommandos 285
3 UNIX - praktisch angewandt Wie verwenden Sie die for-Schleife? Innerhalb einer Shell-Prozedur wollen Sie einen bestimmten Vorgang fOr aile Obergebenen Parameter wiederholen. Mit dem Kommando for werden aile bei dem Aufruf der Shell-Prozedur angegebenen Parameter der Reihe nach bearbeitet. Die Schleife wird aufgerufen mit for Name. Ahnlich wie bei dem Kommando read weist das for-Kommando einer frei definierbaren Variablen Werte zu, und zwar nacheinander die angegebenen Parameter. FOr jeden Obergebenen Wert werden die zwischen do und done aufgefOhrten Kommandos ausgefOhrt. Rufen Sie z. B. eine Shell-Prozedur (tue), die eine for-Schleife enthalt, mit 3 Parametern auf (tue otto hans fritz), so wird die for-Schleife dreimal durchlaufen. Beim 1. Durchlauf erhalt die Variable den Wert otto, beim 2. Durchlauf den Wert hans und beim 3. Durchlauf den Wert fritz. Sehen wir uns die Syntax von for an: for Name do done Kommandoliste .... Name der Variablen, die nacheinander den Wert von $1 -$n Obernimmt Solange ein Wert da ist, tue fertig - gehe zu Beginn for - Kommando, um eine Schleife einzuleiten Die Anzahl der Schleifendurchlaufe ist gleich der Anzahl der Parameter. Lassen Sie es uns an einem Beispiel ausprobieren. Sie erinnern sich an unser Kommando listen, mit dem wir die Liste eines Directories anzeigen. Das Directory wurde als Parameter Obergeben. In der Shell-Prozedur wurde die Positionsvariable $1 verwendet, um jeweils den Namen des angegebenen Directories einzusetzen (Is -F $1 I sort -f I pg). Wenn Sie mehrere Directories angegeben hiitten, ware nur von dem ersten $1 ein Inhaltsverzeichnis ausgegeben worden. Wenn wir statt $1 nun $* einsetzen, wOrden die Inhaltsverzeichnisse aller Directories auf einmal ausgegeben und ineinander sortiert angezeigt werden. Wir wollen aber fOr jedes Directory, fOr sich sortiert, eine alphabetische Liste der Dateien erhalten. Um nun der Reihe nach fOr jedes der angegebenen Directories ein Inhaltsverzeichnis zu erhalten, benbtigen wir eine Variable, die nacheinander den Wert des jeweils nachsten Parameters zugewiesen bekommt. Genau dies erreichen wir mit einer for-Schleife. Andern wir das Kommando listen so um, daB eine for-Schleife durchlaufen wird. Damit Sie verfolgen kbnnen, was im Einzelnen passiert, schreiben wir vor den Kommandoablauf set -x (Anzeige aller ausgefOhrten Kommandos). 286
3.7.7 Shell·Prozeduren Wir setzen jetzt das Kommando for dir do erst nach der Nachricht mit echo, damit der Hinweis uber das Programm pg nicht bei jedem anzuzeigenden Directory erscheint. AuBerdem werden wir prufen, ob es sich uberhaupt um ein Directory handelt. Sie sehen dabei, daB Sie innerhalb von Schleifen if-8edingungen und weitere Schleifen aufrufen konnen. Also, auch bei Schleifen ist ein verschachtelter Aufruf erlaubt. In der nachstehenden Abbildung sind die vorgenommenen Anderungen mit einem helleren Raster herausgehoben: #! /bin/sh # Shell-Prozedur, um das Inhaltsverzeichnis von Directories auszugeben echo 'Um die naechste Seite zu sehen, druecken Sie bitte die Return-" echo 'taste. Wollen Sie das Programm abbrechen, geben Sie q ein. " set -x Ab hier soli die Verarbeitung der Reihe nach fUr aile Parameter gelten: for dir - Schleifenkopf do if test -d ' $dir' then echo "Das Directory ' $dir' enthaelt folgende Dateien:" Is -F "$dir' Isort -f I pg fi done ------------------------------------------------1 a. ~ Ol c: 2 Q) 5i E E bl ~ ~ :2 <0 Rufen wir das Kommando nun auf (vom Directory lusr/kurs/monika): $ listen Ueb* Texte Um die naechste Seite zu sehen, druecken Sie bitte die Returntaste. Wollen Sie das Programm abbrechen, geben Sie q ein. + echo Das Directory Uebungen enthae/t fo/gende Dateien: Das Directory Uebungen enthae/t fo/gende Dateien: , + /s -F Uebungen - - - - - - - Obemahme des 1. Parameters + pg Ueb' wurde in Uebungen expandiert + sort-f Datum Die mit .+, gekennzeichneten Zeilen sind die von der Shell ausgefUhrten Kommandatum dos, die mit set -x angezeigt werden. inhalt neu neuer ueb1 (fOF): Die Returntaste wurde gedruckt Ausgabe vom pg-Kommando + echo Das Directory Texte enthae/t fo/gende Dateien: Das Directory Texte enthae/tfo/gende Dateien: + /s -F Texte ' Obernahrne des 2. Parameter: Texte + sort-f +pg kekse sprueche (EOF): Bild 3 -188: Beispie/ Prozedur ./isten< erganzt mit einer for-Sch/eife 287
3 UNIX - praktlsch angewandt Ais Namen der Variablen haben wir dir genom men, um anzudeuten, daB diese Variable die Namen jener Directories der Reihe nach erMlt, die wir als Parameter dem Kommando listen mitgeben. Wie Sie sehen, wurde die Prozedur zweimal ausgefOhrt. Beim ersten Lauf wurde fOr $dir >Uebungen< eingesetzt, beim zweitenmal ,Texte<. Wie wird das Kommando .for Name in Wort ... ' verwendet? Dieses Kommando funktioniert ahnlich wie das Kommando for ... do. Der Wert der Variablen Name wird hier jedoch nacheinander durch die ,Worter< ersetzt, die nach in stehen. Wenn z. B. in einer Prozedur fOr aile Dateien des aktuellen Directories bestimmte Routinen ablaufen sollen, so kann dies erreicht werden durch die Angabe von for datei in * Das Sternchen wird durch die Shell mit allen Dateinamen des aktuellen Directories expandiert. Der Variablen datei wird als Wert der Reihe nach jeder einzelne Dateiname zugewiesen. Die folgenden Kommandos zwischen do und done, werden fOr jede Datei durchgefOhrt. Sehen wir uns hierzu Funktionen des Kommandos an: for Name I in ! Wort 1 Wortn -, do Kommandoliste .... done ! Wert, der der Variablen Name zugeordnet wird Solange ein Wert da ist, tue Ende der Schleife for in do done - Kommando, um eine Schleife einzuleiten, die so oft durchlaufen wird, wie Worter nach .in. angegeben wurden. Um an einem Beispiel die einzelnen Funktionen auszuprobieren, erstellen wir uns eine Shell-Prozedur, die aile Dateien eines Directories OberprOfen 5011. 1m einzelnen sollen folgende Schritte durchgefOhrt werden: 288 1. Feststellen, ob es eine normale Datei ist, wenn nicht, nachste Datei bearbeiten. 2. 1st es eine Datei, dann den wahrscheinlichen Dateiinhalt feststellen (file). 3. Fragen, ob die Datei angezeigt werden 5011. 4. Wenn ja, mit pg die Datei ausgeben. 5. Wenn nein, fragen, ob die Datei gel6scht werden 5011. 6. Wird mit ja geantwortet, wird die Datei gel6scht. 7. Danach 5011 die nachste Datei bearbeitet werden (Ende der Schleife).
3.7.7 Shell-Prozeduren Auch in dieser Prozedur werden die einzelnen Schritte in Schragschrift als Kommentarzeile (#) angegeben und die eigentlichen Kommandos in Fettschrift. Wir ben6tigen auBerdem ein Kommando, um an das Ende einer Schleife zu springen, d. h. den Rest der Schleife zu Oberspringen und mit dem nachsten Schleifenwert fortzufahren. HierfOr gibt es das Kommando continue fortfOhren continue - Kommando, um mit der nachsten Schleife fortzufahren #! /binlsh # Shell-Prozedur, um aile Dateien des aktuellen Directories zu ueberpruefen for datei in * #. wird in aile Dateien expandiert Schleifenkopf # 1. Feststellen, ob es eine normale Datei ist, wenn nicht, naechste Datei # bearbeiten # Beginn der Schleife do if test! -f "$datei" then fi continue # 2. 1st es eine Datei, dann den wahrscheinlichen DateHnhalt feststellen echo" bei $datei handelt es sich wahrscheinlich um:" file "$datei" # 3. Fragen, ob die Datei angezeigt werden soli echo "Soli $datei angezeigt werden? (ja/nein)" # 4. Wenn ja, mit pg die Datei ausgeben read Antw if test "$Antw" = "ja" -0 "$Antw" = "j" fi then pg $datei # 5. Fragen, ob die Datei ge/oescht werden soli echo "Soli $datei geloescht werden? (ja/nein)" # 6. Wird mit ja geantwortet, die Datei /oeschen readAntw if test "$Antw" = "ja" -0 "$Antw" ="j" fi then rm $datei # 7. Die naechste Datei bearbeiten done # Ende der Schleife Bild 3 -189: Beispiel der Shell-Prozedur - 'pruefe<. erganzt mit einer for inSchleife Zum AbschluB dieser Shell-Prozeduren, von denen Sie bis jetzt immerhin einen kleinen Vorgeschmack bekommen haben, wollen wir uns die Schleifenverarbeitung von while bzw. von until ansehen. 289
3 UNIX - praktisch angewandt Wie wird das Kommando >while. oder >until. verwendet? Soli eine Schleife ,fortwahrend, durchlaufen werden, bis ein bestimmter Zustand erreicht wird, so wird das Kommando while oder until verwendet. Sehen wir uns hierzu die beiden Kommandos an: while do Kommando Kommandoliste .... So lange das Kommando ,wahr. ist (Exit-Status 0 liefert), tue ... fertig - gehe zu Beginn der Schleife done while - Kommando, um eine Schleife einzuleiten, die so oft durchlaufen wird, solange das einleitende Kommando erfolgreich ist (Exit-Status 0) Until ist lediglich eine Umkehrung von while. until do done Kommando Kommandoliste .... So lange das Kommando >unwahr. (Exit-Status ungleich 0) Hefert - nicht erfolgreich war, tue ... fertig - gehe zu Beginn der Schleife until - Kommando, um eine Schleife einzuleiten, die so oft durchlaufen wird, solange das einleitende Kommando nicht erfolgreich ist In der Praxis wird dieses Kommando z. B. verwendet, um immer wieder die gleiche Frage an den Benutzer zu stellen, solange, bis er sie richtig beantwortet hat. Schreiben wir ein ,ubergeordnetes' Kommando dirpruef, das unser gemeinsam erstelltes Kommando pruefe als eine Art Unterprogramm aufruft. Wir wollen eine Schleife so oft durchlaufen, wie der Benutzer auf die Frage: ,Soli ein weiteres Directory uberpruft werden? mit 'ia. antwortet. Wie konnte diese Prozedur aussehen? Verwenden wir in diesem Beispiel beide Abfragen mit while und until. Gibt er ein Directory an, das nicht existiert, wird die Frage solange wiederholt, bis er uns einen Namen nennt, unter dem ein Directory vorhanden ist. Gehen wir am besten wieder systematisch vor und zerlegen die Prozedur in Einzelschritte: 290
Shell-Prozeduren 1. Fragen: Welches Directory soli OberprOft werden? 2. Lesen der Antwort (Name des Directories). 3. OberprOfen, ob es ein Directory ist, wenn nicht 4. so lange daraufhinweisen und nach dem richtigen Namen fragen, bis es sich wirklich um ein Directory handelt. 5. Handelt es sich um ein Directory, dann in dieses Directory wechseln und das Kommando pruefe aufrufen. 6. Nachdem das Kommandopruefe abgelaufen ist, zurOckwechseln in dasAusgangs-Directory (Variable ausg). 7. Fragen, ob ein weiteres Directory OberprOft werden soli, wenn ja, die Schleife ab 1. wieder beginnen (Variable Antw). 3.7.7 Wir k6nnten die Schritte 1 bis 7 in eine while-Schleife packen, die solange durchlaufen wird, bis der Benutzer unter 7. nicht mit ja (bzw. mit nein) antwortet. DafOr mOssen wir jedoch, urn Oberhaupt das erstemal nach einem Directory zu fragen, der Variablen Antw vorab den Wert >ja' zuweisen (A). Auch so lite die Ausgangsposition fOr die Pfadnamen der Directories immer die gleiche sein, namlich das aktuelle Directory des Benutzers zu dem Zeitpunkt, wenn er das Kommando dirpruef aufruft. Um unsere bereits vorhandene Prozedur pruefe zu verwenden, wechseln wir wahrend der Verarbeitung in das jeweils zu prOfende Directory und, sobald es OberprOft ist, zurOck in das AusgangsDirectory. Urn den Namen des Ausgangs-Directories auch zu einem spateren Zeitpunkt noch zu wissen, weisen wir zu Beginn den Namen dieses Directories (pwd) der Variablen ausg zu (B). Wenn Sie den Ablauf dieser Prozedur verstanden haben und eine fehlerfreie Verarbeitung des Kommandos dirpruef allein zustande bringen, dann haben Sie ein Talent zum Programmieren, und Ihnen wird es nicht schwerfallen, andere kleine Prozeduren unter der Shell zu schreiben. Z6gern Sie aber nicht, sich auf der nachsten Seite Anregungen zum Programmieren dieser Prozedur zu holen. Auch wenn Sie unter der Shell nicht ganz so viele Syntax-Regeln wie bei einer Programmiersprache beachten mOssen, es bleiben leider genOgend Fehlerquellen. Treten Fehler auf, prOfen Sie Ihre Prozedur mit der Fehlercheckliste, die wir auf Seite 284 angesprochen haben. Inzwischen kennen Sie auch das Kommando >set -X', das Ihnen beim AufspOren von Fehlern hilft. Nun viel SpaB beim Ausprobieren. 291
3 UNIX - praktisch angewandt #! Ibinlsh # Shell-Prozedur, um Directories zu OberprOfen # A. Feststellen, wie das ,Ausgangs-Directory· heiBt und der Variablen # ,ausg' zuordnen ausg= pwd # B. Der Variablen .Antwe vorab den Wert 'ja ezuweisen, damit # das 1. Directory abgefragt wird. Antw="ja" # Beginn der while-Schleife while test" $Antw" =" ja" # 1. Frage, welches Directory OberprDft werden soli do echo "Welches Directory soli ueberprueft werden?" echo" Bitte mit Pfadnamen angeben" # 2. Lesen der Antwort (Name des Directories) read dir # 3. OberprDfen, ob es ein Directory ist, wenn nicht # (Abfage auf Vorhandensein des Directories mit until-Schleife) until test -d "$dir" so/ange darauf hinweisen und nach dem richtigen # Namen fragen, bis es sich wirklich um ein Directory handelt do echo "$dir ist kein Directory. " echo "Welches Directory soli ueberprueft werden?' echo" Bitte mit Pfadnamen angeben" read dir done # 5. Handelt es sich um ein Directory. dann in dieses Directory wechseln # und das Kommando 'pruefe' aufrufen. cd $dir echo" Das Directory Sdir wird ueberprueft" pruefe # 6. Nachdem das Kommando 'pruefe' beendet 1st, soli # in das Ausgangsdirectory (Variable ,ausg.) zurDckgewechselt werden cd $ausg # 7. Fragen, ob ein weiteres Directory uberprOft werden soli # wenn ja, die Schleife ab 1. wieder begmnen. (Variable .Antwe) echo" Soli ein weiteres Directory ueberprueft werden?" read Antw done # 4. Bild 3 -190: Beispiel der Shell-Prozedur - ,dirpruef< mit while- und until-Schleife Diese Beispiele erheben Obrigens nicht den Anspruch, >ausgereifie. PrOfprogramme zu sein, sondern sollen Ihnen in erster Linie die vielfaltigen Moglichkeiten der Shell-Programmierung aufzeigen. Gleichzeitig sollen sie Ihnen ein paar Anregungen geben, wie Sie, auf Ihre Belange zugeschnitten, ahnliche Prozeduren erstellen konnten. 292
Shell-Prozeduren 3.7.7 3.7.8 Weitere nutzliche Kommandos fUr Shell-Prozeduren Die Schleifen-Kommandos while oder until werden auch gerne zu Testzwekken verwendet. Um eine ,Endlosschleife, zu starten, konnen Sie zwei Kommandos mit verwenden, deren Funktion nichts anderes ist, als sich 'erfolgreich, oder ,nicht erfolgreich, zurOckzumelden. Das Kommando true (wahr) liefert immer den Exit-Status 0, ist also immer erfolgreich, das Kommando false (unwahr, falsch) einen Exit-Status ungleich 0, immer nicht erfolgreich: true wahr- Exit-Status immer 0 true - Kommando, das nur den Exit-Status .Oc liefert false unwahr - Exit-Status immer ungleich 0 false - Kommando, das nur den Exit-Status .ungleich Oc liefert Wie konnen Sie eine Schleife abbrechen? Sie konnen in der Schleife abfragen, ob ein bestimmer Zustand erreicht ist, ob eine Variable den Wert xy enthalt, und mit dem Kommando break die Schleifenverarbeitung abbrechen. break abbrechen break - Kommando, um Schleifen vorzeitig abzubrechen Meistens wird bei Endlos-Tests irgendeine Nachricht auf dem Bildschirm ausgegeben, allerdings nicht fortwahrend, sondern z. B. in einem Abstand von einer Minute. Zwischenzeitlich soli der Rechner >schlafen<. Das Kommando, um ,Ruhepausen c in einer Shell-Prozedur einzulegen, nennt sich: Anzahl der Sekunden schlafen sleep - Kommando, um Wartezeiten in Sekunden zu setzen 293
3 UNIX - praktisch angewandt Ein Kommando, um Terminals zu testen, konnte z.B. lauten: # Kommando, um Terminal zu testen while true do echo "Auf diesem Terminallaeuft ein Dauertest" sleep 60 done Bild 3 -191: Beispiel einer Endlosschleife Diese Schleife lauft end los und kann nur durch einen Kommandoabbruch beendet werden (z. B. <CTRL> + c). Interessant ware es herauszufinden, wieviel Schleifen dieses Kommando in einer Nacht von 20.00 Uhr bis morgens um 9.00 durchlauft. Wir wollen hier gar kein Rechenexempel statuieren. SchlieBlich arbeiten wir mit einem Rechner und sollten diesem auch das Rechnen Oberlassen. Die einfachste Methode ist daher, den Rechner selbst zahlen zu lassen, wie oft er die Schleife bearbeitet hat. Auch bei unserer Prozedur dirpruef sollten wir verhindern, daB wir eine Endlosschleife erhalten, falls ein Benutzer immer wieder eine falsche Antwort eingibt. Hier konnten wir die Geduld des Rechners auf 3 oder maximal 4 falsche Eingaben fOr den Namen des Directories beschranken. Wie fOhren Sie Rechenoperationen durch? HierfOr gibt es das Kommando expr (expression - Ausdruck), mit dem Sie aile Grundrechenfunktionen durchfOhren konnen. Sie rufen das Kommando auf und geben zwei Zahlenwerte an, die entweder addiert, subtrahiert, multipliziert oder dividiert werden sollen. AuBerdem konnen Sie den Modulo-Wert (Restwert) bei der Division von ganzen Zahlen ermitleln. Die Rechenoperationen sind durch ahnliche Zeichen wie in der Mathematik gekennzeichnet. Sehen wir uns die Syntax des Kommandos an: expr Wert 1 Rechenoperation Wert2 expression Ausdruck + * I % Wert1 und Wert2 addieren Wert2 von Wert1 subtrahieren Wert1 mit Wert2 multiplizieren Wert1 durch Wert2 d ividieren Wert1 durch Wert2 dividieren und den Restwert liefern (Zah11 modulo Zah12) expr - Kommando, um Rechenoperationen auszufOhren 294
3.7.8 Shell-Prozeduren Da es sich bei den Zeichen fOr die Rechenoperationen meist um Sonderzeichen der Shell handelt, mussen Sie grundsatzlich die Zeichen fur die Rechenoperation in Hochkomma (z. B. '1') setzen oder das Fluchtsymbol (\) davorstellen. Probieren Sie das Kommando expr an Ihrem Terminal aus: expr 12 I Sie erhalten als Ergebnis: 4 3 Was passiert wohl, wenn Sie z. B. die Kommandozeile mit expr 7 * 7 eingeben? Mit dem Kommando set -x vorab k6nnen Sie sehen, daB das Sternchen ersetzt wird durch aile Dateien, die im aktuellen Directory zu finden sind und Sie erhalten natOrlich syntax error Mit expr k6nnen auch Vergleiche, wie kleiner «), kleiner oder gleich «=), gleich (=), ungleich (!=), gr6Ber (», und gr6Ber oder gleich (=» durchgefOhrt werden. Als Wert wird >0< geliefert, falls das Ergebnis den Wert >wahr< ergibt. Erganzen wir die Endlosschleife mit while true. Es soli bei jedem Durchlauf der Schleife angezeigt werden, der wievielte Lauf es ist. Wie k6nnen wir dies erreichen? Erinnern Sie sich an die M6glichkeit, einer Variablen einen Zahlenwert zuzuweisen. Bevor wir mit der ersten Schleife beginnen, setzen wir die Variable >zahl< auf den Wert o. In der Kommandoliste ab do wird dann das Kommando expr $zahl + 1 durchgefuhrt und der sich neu ergebende Wert der Variablen $zahl zugewiesen. Diese Funktion k6nnen Sie mit einer Kommandozeile erreichen: zahl= \expr $zahl + 1\ Sehen wir uns die kleine Shell-Prozedur an, die nun bei jedem Lauf anzeigt, wie oft der Text schon auf den Bildschirm geschrieben wurde: # Kommando, um Terminal zu testen zahl::"O' while true do echo 'Auf diesem Terminallaeuft ein Dauertest" zahl:: \expr $zahl + 1\ echo 'Dies ist der ${zahl}. Durchlauf" sleep 60 done Bild 3 -192: Endlosschleife mit Rechenoperation 295
3 UNIX - praktisch angewandt Jetzt dOrfte es Ihnen keine Schwierigkeit mehr bereiten, die Prozedur dirpruef so abzuandern, daB nach dem 3. Versuch, den richtigen Namen eines vorhandenen Directories einzugeben, die Prozedur sich hOflich, aber bestimmt verabschiedet. Greifen wir uns nur den Teil der until-Schleife heraus. Noch ein paar Tips zur Vorgehensweise. o Setzen Sie, bevor Sie die until-Schleife starten, eine Variable entweder auf den Wert ,Q, und addieren Sie dann bei jedem Schleifendurchlauf jeweils ,1, hinzu, o oder setzen Sie vorab den Wert auf ,3, und subtrahieren jeweils ,1,. Sobald die Zahl ,3, (oder bei Subtraktion von 1 die Zahl ,Q,) erreicht ist, been den Sie die Prozedur. Hier ein mogliches Ergebnis der geanderten until-Schleife Erweiterter Teil aus dar Shell-Prozedur dirpruef #! /binfsh # Abfrage auf Vorhandensein des Directories mit until-Schleife zahl=O until test -d "$dir" # solange darauf hinweisen und nach dem richtigen # Namen fragen, bis es sich wirklich um ein Directory handelt do echo "$dir ist kein Directory " if test $zahl -eq 3 then echo "Hallo, kennen Sie kein richtiges" echo "Directory? - Schlafen Sie sich erstrnal aus und It echo "ueberpruefen Sie ein anderes Mallhren Dateibaum" exit II I' fi echo "Welches Directory soli ueberprueft werden?" echo "Bitte mit Pfadnamen angeben" zahl='expr $zahl + l ' read dir done Bild 3-193: Beispiel Teil der Shell-Prozedur - ,dirpruef<, erganzt um expr Obrigens werden Sie in der Korn-Shell eine wesentlich einfachere Methode kennenlernen, wie mit Variablen gerechnet werden kann (integer - auf Seite 314) Doch noch ein letztes Kommando, um den Ablauf zu steuern: das Kommando case_ Mit diesem Kommando konnen Sie aufgrund von Mustern eine bestimmte Kommandofolge auswahlen. Dieses Kommando hat eine verhaitnismaBig schwierige Syntax. Da es nicht unbedingt benotigt wird, werden hier nur die wesentlichen Funktionen kurz aufgezeigt. 296
3.7.8 Shell-Prozeduren case Wort in Muster1 Falls die Zeichenkette .Wort, mit Muster1 ubereinstimmt, dann tue (Kommandoliste1) ) Kommandoliste1;; Muster2 I Muste(3) Kommandoliste2jj stimmt sie mit Muster2 oder Muster3 uberein, fUhre die 2 Semikolons als AbschluB der Kommandoliste Kommandoliste aus esac J Ende der .case-Bedingung, case - Kommando, um eine gezielte Weiterverarbeitung zu erreichen, die uber Vergleichsmuster angesteuert werden Bei der Mustervorgabe (Muster1, Muster2, ... ) kennen auch Metazeichen verwendet werden (*, ?, [,]), die sich aber in diesem Fall nur auf die Zeichenkette von Wort beziehen, nicht auf die Dateinamen des aktuellen Directories, wie wir die Funktion der Metazeichen bisher kennengelernt haben. Wichtig ist bei diesem Kommando, daB die einzelnen Trennungszeichen zwischen Muster und Kommandoliste, die Klammer .), und die zwei Semikolons 'jj' als AbschluB der Kommandoliste je Muster nicht vergessen werden. Sobald Sie sich daran gewehnt haben, ist auch dieses Kommando nett einzusetzen. Vorhin haben Sie das Kommando expr kennengelernt. Schreiben wir ein kleines Rechenprogramm rechne, in dem der Benutzer nach der 1. Zahl gefragt wird dann, welche Rechenfunktion er wunscht (+, -, *, I, %) und nach der 2. Zahl. Abhangig von der eingegebenen Rechenfunktion wird uber das Kommando case mit dem expr-Kommando das Ergebnis errechnet und angezeigt. Da bei der Musterabfrage ebenfalls Metazeichen verwendet werden kennen, muB mit dem Fluchtsymbol .\< bei einem Muster .*, die Metafunktion aufgehoben werden. Das Sternchen .als Metafunktion, wird als letztes Muster angegeben, um eine evtl. falsch angegebene Rechenfunktion abzufangen, die in den vorhergehenden Musterzeilen nicht enthalten war. 297
3 UNIX - praktisch angewandt #l/binlsh # Diese Shell-Prozedur ermoeglicht es dem Benutzer, Rechenoperationen in einfacher Form einzugeben antw="ja" while test $antw = "ja" do echo "Geben Sie bitte die 1. Zahl an:' read z1 echo ' Welche Rechenfunktion wuenschen Sie?' echo I addieren + echo subtrahieren echo II multiplizieren • ' echo dividieren I echo I Modulofunktion % echo "Bitte geben Sie eines der obenstehenden Zeichen an: ' read operator echo "Geben Sie bitte die 2. Zahl an:' read z2 echo "Das Ergebnis von $z1 $operator $z2 lautet" case "$operator" in +) expr u$z1 U \+ "$z2" II * .. -) expr u$z1" \- u$z2u \* ) expr U$z1" \* 11$z211 I) expr "$z1" V "$z2" .. %) expr "$z1" \% R$z2U .. *) II echo 'Der Operator $operator ist ungUltig' esac echo "Wollen Sie weitere Aechenoperationen vornehmen? Oalnein)" read antw done BUd 3 -194: Beispiel einer Shell-Prozedur ,rechne' mit case ... und expr Zum AbschluB der Bourne-Shell noch eine nOtzliche Funktion, namlich ,function •. 298
3.7.8 Shell-Prozeduren Funktionen - functions Mit function definieren Sie in einer Prozedur wiederkehrende Befehlsfolgen. Innerhalb dieser Shell-Prozedur geben Sie dann nur noch den Funktionsnamen an und aile unter diesem Namen angegebenen Befehle werden ausgefUhrt. function Funidionsname {Kommandofolge: } function - Kommando, um Funktionen zu erstellen Bei Funktionen wird, entgegen eigenstandigen Shell-Prozeduren, kein eigener ProzeB gestartet, sondern sie werden als Programmteil von der Shell abgearbeitet (so, als ob sie anstelle des Funktionsnamens in der Prozedur geschrieben waren). Sie kennen Funktionen auch in Ihrem .profile definieren und diese dann ahnlich wie ein Kommando benutzen. Hierzu ein kleines Beispiel, das in einfacher Form function erklart: Teil von .profile ... #Bilden der Funktion wo Name derl Fun~ function wo { find. -name $1 1_____ ... Beginn der Funktion >{<, Kommandos kennen gleich anschlieBend auf derselben Zeile geschrieben werden, ebenso das Ende der Funktion mit >}c $wo neuer Beim Aufruf der Funktion wird als Parameter die zu suchende Datei mitgegeben ./Uebungenlneuer _ Die mit >find· gefundene Datei J Bild 3 - 195: Beispiel function 299
3 UNIX - praktisch angewandt 3.7.9 Zusammenfassung Kommandos/Zeichen zur Ablaufsteuerung Kommandoeingabe && kom1 &&kom2 f~ II kom111kom2 if Befehl1 then Befehlsfolge2 [ else Befehlsfolge3 ] oder elif Befehl4 then Befehlsfolge5 fi Beispiel: if test -f $Antwort then pr -n $Antwort I pg else echo "$Antwort ist keine Datei" fi exit [Status] Unt r DO: e.xil for Name do Befehlsfolge done for Name in Wert1 ... Wertn do Befehlsfolge done 300 Funktion Und-Verknupfung von Kommandos kom2 wird nur dann ausgefUhrt, wenn kom1 erfolgreich war ---Oder-Verknupfung von Kommandos korn2 wird nur dann ausgefUhrt, wenn korn1 nicht erfolgreich war If-Verzweigung wenn das und das zutrifft dann tue .. . sonst tue ... ] sonst wenn dann tue ... fertig (Ende der if-Verzweigung) Wenn die Datei ($Antwort) existiert und es eine normale Datei ist, dann soli sie angezeigt werden, sonst soli eine entsprechende Nachricht ausgegeben werden I--- Ausgang Bricht eine Shell-Prozedur ab bzw. beendet die aktuelle Shell Schleifenverarbeitung Solange die Variable Name einen Wert entMlt (sie erMlt nacheinander den Wert von $1-$n, also die angegebenen Parameter beim Aufruf des Kommandos) tue fertig - gehe zu Beginn der Schleife Solange die Variable Name einen Wert entMlt (hier wird nacheinander der Wert1 ... Wertn zugewiesen) tue fertig - gehe zu Beginn der Schleife
3.7.9 Shell-Prozeduren Kommandoeingabe Funktion while Kommando Solange das Kommando erfolgreich ist (Exit-Status O) tue do Befeh/sfo/ge done until Kommando do Befeh/sfo/ge done ... fertig - gehe zu Beginn der Schleife -- - So lange das Kommando nicht erfolgreich ist (Exit-Status nicht O) tue ... fertig - gehe zu Beginn der Schleife continue fortfahren Uberspringt den Rest einer Schleife, um mit dem nachsten Schleifenwert fortzufahren break brechen / abbrechen Beendet vorzeitig eine Schleife Case-Verarbeitung (Auswahl) case Muster in M1) Befeh/sfolge1;; M21M3) Befeh/sfo/ge2;; ... esac -trap "Kommandos" Signale Beispiel: trap "rm hilts.dat; exit" 2 ~ trap "" 1 2 3 - Falls die Zeichenkette Muster Obereinstimmt mit M1 , dann fUhre die Befehlsfolge1 aus, stimmt das Muster mit M2 oder M3 Oberein, fUhre Befehlsfolge2 aus Ende der case-Bedingung Behandelt Signale Wird z.B. das Signal 2 (Ctrl+c) geschickt, wird, bevor der ProzeB abgebrochen wird, die Datei hilfs.dat geloscht. Ohne Angabe , d h . . nur mit AnfOhrungszeichen werden die Signale ignoriert. U " , Eine Aufstellung vordefinierter Shell-Variablen finden Sie im Bild 3-171 auf Seite 266 Eine Ubersichtstabelle der Positionsparameter finden Sie im Bild 3-172 auf Seite 268 301
3 UNIX - praktisch angewandt Weitere in diesem Kapitel verwendete Kommandos Auch hier ist fOr Umsteiger eine Querverbindung zu DOS unter Kommandoeingabe vermerkt Kommandoeingabe Funktion ~ echo -n Gibt Zeichenketten auf den Bildschinn aus Beispiele: -n no newline Cursor bleibt auf der lei Ie. echo "5011 die Datei geloscht wer- Gibt in einer Shell-Prozedur die Nachricht den?" Ober Sildschirm aus echo $PATH leigt den Wert einer Variablen Steuerzeichen: Klingelzeichen \007 \c Cursor bleibt in gleicher leile \n neue leile \t Tabulator Unler DO: echo touch Oatei(en) Beispiel: touch neu1 neu2 beliihren Aktualisiert das Datum einer Datei bzw. legt sie neu an Legt die Dateien neu1 und neu2 an export Name Um Variable auch fOr Unterprogramme 1 zur VerfOgung zu stellen, werden sie exportiert set setzen Zeigt die gesetzten Variablen der aktuellen Shell an Setzt Shell-Optionen -n no execution die Kommandos werden nur gelesen, nicht ausgefOhrt -x execute zeigt aile ausgefOhrten Sefehle an -v verbose zeigt aile Schritte einer Prozedur an Hebt gesetzte Optionen (-vxn) wieder auf set [-vxn] set Unlet DO: set read var1 [var2 ... vam] 302 I lesen Liest von der Standardeingabe und weist die gelesenen Zeichen der/den Variable(n) als Wert zu Werden mehrere Variable angegeben, gilt das Leerzeichen als Trennungszeichen, sonst werden aile leichen bis lei~ _ _ _ _ _ _ _ _ ~_ _ _ _ _ _ _ _ _ _ _ _ _ _ L lenende als Wert zugewiesen
3.7.9 Shell-Prozeduren Kommandoeingabe Funktion test -fdrwxs datei testen, prOfen Priift Dateien auf Typ, Inhalt oder Zugriffsrechte test wird meist in Verbindung mit if ... verwendet Modernere Schreibweise: statt test nur die eckige Klammer [ 1, hierbei muB auf Leerzeichen vor und nach den Klammern geachtet werden! Bei den Optionen wird gepri.ift. ob die angegebene Datei: -f file eine normale Datei ist -d directory ein Directory ist Leseerlaubnis hat -r read -w write Schreiberlaubnis hat ausfOhrbar ist -x execute nicht leer ist -s size Negation wird mit einem ! gefolgt von einem Leerzeichen abgefragt [-f datei 1 Negation: test ! -f datei test -zn Zeichenkette test Sfring-a = String-b Negation: test String-a != String-b Auszug aus einem Script read datei if test -f $date; -a -w $date; then ... fi readantw if test $antw = ja -0 $antw = Ja then ... fi PrUft Zeichenketten auf leer/nicht leer Abfrage auf: .ist leer? -zzero .ist nicht leer?· -n not zero PrUft Zeichenketten auf Gleichheit Zwischen den Argumenten und = mussen Leerzeichen stehen Negation, d. h. test ist erfolgreich. wenn die Zeichenketten nicht gleich sind. != ohne Leerzeichen! Kombination von test-Kommandos ... -a and logische und-Verknupfung or logische oder-Verknupfung -0 303
3 UNIX - praktisch angewandt Kommandoeingabe test n1 -.. n2 [ n1 -.. n2 ] test n1 -eq n2 ( n1 test n1 one n2 [ n1 test n1 -It n2 ( n1 test n1 -Ie n2 [ n1 test n1 -gt n2 [ n1 test n1 -ga n2 [ n1 true Beispiel: while true do ... done -eq n2 one n2 -It n2 -Ie n2 -gt n2 -ge n2 ] wahr Gibt immer den Exit-Status 0 aus, ist also immer wahr Hiermit kennen z. B. Endlos-Schleifen gestartet werden false falsch. unwahr Der Exit-Status dieses Kommandos ist immer unwahr (ungleich 0) sleep Sekunden schlafen Leitet eine Wartezustand ein (Anzahl Sekunden) Wird meist in Shell-Prozeduren verwendet. Oer Prozel3 wartet 3 Minuten Beispiel: sleep 180 expr Wert1 Symbol Wert2 + \* I % function name { Kommandofolge } Beispiel: function wo { find. \ -name $1} wo brief1 304 I I I I I Funktion algebraischer Vergleich: vergleicht zwei Zahlenwerte equal gleich not equal nicht gleich kleiner als less than kleiner gleich less equal grOBer als greater than grOBer gleich greater equal expression Rechenoperationen: addieren subtrahieren multiplizieren dividieren modulo (Restwert) ----j Funktion Bildet eine Funktion, die ahnlich eines Shell-internen Kommandos genutzt werden kann Die Funktion kann ein oder mehrere Kommandos enthalten, wobei auch Positionsparameter ($1 , $2 usw.) verwendet werden kennen Beim Aufruf von wo wird der Name der Datei mitgegeben, nach der gesucht wird
3.8 Die Korn-Shell Hatte ich Ihnen zuviel versprochen? Das Programmieren mit der Shell macht SpaB! Doch ein paar Funktionen der Shell konnten ein biBchen benutzerfreundlicher sein. Seit die Bourne-Shell entstanden ist, 1St ja bereits ein Vierteljahrhundert vergangen! Verbesserungen und neue Erkenntnisse sind in der Korn-Shell verwirklicht worden. Sie basiert auf der Bourne-Shell und kann ohne Probleme statt dieser verwendet werden. Welche Themen gibt es in diesem Kapitel? 3.8.1 Die Vorteile der Korn-Shell 3.8.3 Der History-Mechanismus 3.8.4 Der Befehlszeileneditor 3.8.5 Der Alias-Mechanismus 3.8.6 Variablen der Korn-Shell 3.8.7 Zusatzliche Optionen 3.8.8 ProzeBkontroile (Jobcontrol) 3.8.9 Zusammenfassung 305
3 UNIX - praktisch angewandt Die Korn-Shell - nutzliche Erweiterungen zur Bourne-Shell 3.8.1 Die Vorteile der Korn-Shell Aus den Oberschriften der Themen gehen die wesentlichen Vorteile eigentlich schon hervor. Die Korn-Shell bietet viele Mechanismen und Funktionen, die das Arbeiten am Rechner vereinfachen, freundlicher gestalten. 1m Gegensatz zur CShell, die bereits frOher viele zusatzliche Funktionen angeboten hat, ist die KornShell kompatibel zur Bourne-Shell. Da die Bourne-Shell grundsatzlich auf alIen Rechnern zur VerfOgung stand, sind viele Prozeduren zur Systemverwaltung in der Bourne-Shell geschrieben worden. Deshalb ist es wichtig, daB auch unter einer anderen Shell diese Prozeduren nach wie vor einwandfrei laufen. Die Kompatibilitat ist somit ein Hauptgrund, warum die Korn-Shell nun Bestandteil der meisten UNIX-Derivate geworden ist. Der Trend geht eindeutig hin zur KornShell. Entscheiden Sie selbst, was fOr Sie von Interesse ist. Kurz ein paar Erlauterungen zu den einzelnen Themen: o Der History-Mechanismus. Falls Sie UNIX schon live eingesetzt haben, werden Sie feststellen, daB Sie oft die gleichen Kommandos ben6tigen. Es gibt Obrigens unter der Bourne-Shell ein Kommando, mit dem Sie sich die ,Hitliste< Ihrer Kommandos seit dem letzten Anmelden ansehen k6nnen. Rufen Sie doch mal hash auf. Wie oft haben Sie z. B.ls oder pwd aufgerufen? Der History-Mechanismus erlaubt, daB Sie mit einem KOrzel vorangegangene Kommandos nochmals angezeigt und ausgefOhrt bekommen. Falls das Kommando hierbei abgeandert werden soli, k6nnen Sie dies Ober den Befehlszeilen-Editor bewirken. 306 o Der Befehlszeilen-Editor. Mit ihm k6nnen Sie, wie der Name schon sagt, Ihre Eingabe fOr den Befehl (das Kommando) korrigieren, auch Zeilen, die Sie sich Ober den History-Mechanismus nochmals zurOckgeholt haben. Unter der Bourne-Shell konnten Sie Korrekturen in der Befehlszeile nur mit der Backspace-Taste durchfOhren oder gleich die gesamte Zeile 16schen. Und wie oft verschreibt man sich, gerade dann, wenn es schnell gehen soli! Also, hier wenigstens eine kleine Hilfe, soweit man den Fehler noch entdeckt. Aber unter UNIX gew6hnt man sich sowieso schnell daran, die Kommandozeile lieber erst nochmal zu kontrollieren und zu korrigieren, bevor man sie abschickt. o Alias-Funktionen. Wenn Sie sich Ihre ,Hitliste< der Kommandos nochmals ansehen, werden Sie auch feststellen, daB Sie wahrscheinlich mit 20 verschiedenen Kommandos in der Regel auskommen. HierfOr k6nnen Sie auch kOrzere Bezeichnungen wahlen, die gleich die von Ihnen meist genutzten Optionen beinhalten. Das Kommando wird kOrzer, und damit die Fehlerquelle geringer. FOr DOS-Umsteiger k6nnen als alias bereits gelaufige Kommandos gebildet werden, hinter denen sich dann UNIX-Kommandos verbergen (z. B.
Die Korn-Shell 3.8.1 dir als alias fOr ,Is -I,). In dem betreffendem Abschnitt werden Sie noch weitere schone Beispiele fOr Aliase kennenlernen. o Variablen der Korn-Shell. 1m vorigen Abschnitt haben Sie in der Tabelle 'Einige vordefinierte Shell-Variable' Seite 266 schon Hinweise auf Variable der Korn-Shell erhalten. Hatte ich vorhin noch erwahnt, daB eines der haufigsten Kommandos pwd sei, so wird sich dies in der Korn-Shell andern. Hier benotigen Sie pwd eigentlich nicht mehr, denn Sie konnen sich das Bereitschaftszeichen der Shell (PS1) so setzen, daB es Ihnen immer das aktuelle Verzeichnis/Directory und, falls Sie auf unterschiedlichen Rechnern im Netz arbeiten, zusatzlich noch den Rechnernamen anzeigt. Eine weitere Vereinfachung ist natOrlich dann das CDE, wo Sie Ober den Dateimanager grafisch Ihren Standort (das aktuelle Directory) und gleich die darin enthaltenen Dateien angezeigt bekommen. Doch h\eiben wir erstmal bei der Korn-Shell. Was bietet Sie noch? o Eine Reihe von zusatzlichen Optionen, mit denen Sie u. a. Ihr UNIX-Leben sicherer gestalten konnen. Erinnern Sie sich noch an die Umleitung der Standardausgabe? Wehe, wenn Sie auf eine Datei umgeleitet haben (mit » und in ihr waren wichtige Daten gespeichert, die Sie eigentlich dringend benotigten. Pech gehabt, die Daten waren unwiederhringlich verloren (soweit Sie nicht zuvor eine Sicherung erstellten). Davor konnen Sie sich in der KornShell schOtzen. Sie konnen bestimmte Voreinstellungen fOr die Korn-Shell in eine spezielle Datei setzen, z.B. um keine Dateien bei Standardumleitungen zu Oberschreiben: set -0 noc/obber. DarOber und noch Ober ein paar weitere Optionen erfahren Sie in dem entsprechenden Abschnitt. o ProzeBkontrolle (Jobcontrol). Diese Erganzung ist vielleicht nur fOr Systemverwalter interessant, die sich Ober die Optimierung des Gesamtsystems Gedanken machen. Doch sollen in diesem Abschnitt wenigsten die wichtigsten Funktionen kurz erlautert werden, falls Sie Ihre eigenen Prozesse steuern mochten. \ch selbst arbeite oft an unterschiedlichen Rechnern, auf denen mir meist ein dort Obliches Login z.B. mit der C-Shell eingerichtet wurde. Ich muB gestehen, daB ich, seit ich die Korn-Shell kennengelernt habe, immer sofort auf die KornShell umstelle, sobald ich mich angemeldet habe. Wie man die Korn-Shell aufruft und mit ihr arbeitet, beantwortet der nachste Abschnitt. 307
3 UNIX - praktisch angewandt 3.8.2 Wie arbeiten Sie mit der Korn-Shell? Gut, ware meine Antwort hierauf. Doch uns geht es naturlich erst einmal darum, wie Sie eine Korn-Shell starten, wie Sie sich anmelden, welche Voraussetzungen erfullt sein mussen. Wie starten Sie eine Korn-Shell? Am besten ware es, wenn Ihr Systemverwalter Ihren Login-Eintrag in der /etc/passwd entsprechend andert. Sie erinnern sich? Ais letzter Eintrag je Zeile pro Benutzer ist angegeben, mit welchem Programm gestartet werden soli: Auszug aus /etc/passwd: hans::1 02:1 OO:Hans Mueller, Tel. 440:/usrlkurslhans: /binlksh I Start-Programm Damit wird bei jedem Anmelden z.B. hans automatisch die Korn-Shell zur Verfugung gestellt. Die Korn-Shell Iiest als erstes wie die Bourne-Shell die Datei .profile im Home-Directory des Benutzers. In dieser Datei so lite fUr die Korn-Shell die Variable ENV gesetzt sein. Ais Wert wird hier der Dateiname zugewiesen, in der weitere Voreinstellungen fur die Korn-Shell eingetragen werden (z. B. alias, set -0 noc/obber - im Laufe dieses Kapitels werden wir immer wieder auf diese Datei zuruckkommen). Ais Name dieser Datei hat sich, angepaBt an andere Shell programme, .kshrc eingeburgert (fUr die C-Shell heiBt die Voreinstellungsdatei .cshrc). Die Datei .profile hat dann folgenden Eintrag: ENV=$HOME/.kshrc export ENV Bild 3 -196: Erganzungszeile in $HOME/.profile Die der Variablen $ENV zugewiesene Datei wird dann jedesmal gelesen, sobald eine Korn-Shell gestartet wird. Dies ist besonders wichtig, wenn Sie mit einer grafischen Oberflache arbeiten, denn dann wird fUr jedes Fenster immer eine eigene Shell (Korn-Shell) gestartet, und aile Ihre Voreinstellungen (alias etc.) mochten Sie dann ja ebenfalls nutzen. Also auch, wenn Sie nicht generell mit der Korn-Shell arbeiten wollen, sollten Sie sowohl die Erganzungszeile in .profile als auch die Voreinstellungsdatei in Ihrem Home-Directory mit .kshrc fUhren. Was in die Datei .kshrc eingetragen wird, erfahren wir spater. 308
3.8.3 Die Korn-Shell Sie kennen die Korn-Shell auch als sog. Sub-Shell (also unter einer bereits gestarteten Shell) aufrufen: ksh [ Option en] j I z.B. -0 vi Voreinstellung fur den Befehlszeilen-Editor Kommando, um die Korn-Shell als Sub-Shell zu starten Ais Bereitzeichen erhalten Sie, soweit Sie nicht als Voreinstellung in .kshre die Variable PS1 neu gesetzt haben, wie in der Bourne-Shell ein $-Zeiehen. Aile Meglichkeiten der Eingabe, wie Sie sie unter der Bourne-Shell kennengelernt haben, kennen Sie genauso in der Korn-Shell eingeben. Sie mOssen erst einmal niehts Neues dazu lemen, um mit der Korn-Shell zu arbeiten. Sie melden sieh auch genauso ab, wie in der Bourne-Shell: oder exit 3.8.3 Der History-Mechanismus Um leiehter zu arbeiten, weniger Eingaben - und damit auch weniger Fehler zu tippen, rentiert es sieh, ein paar neue Kommandos, Variable und Dateien kennenzulernen. Aile aufgerufen Kommandos (also Ihre Eingaben am Terminal) werden in Ihrem Home-Directory unter der Datei .sh_history gespeiehert. Gber die Variable HISTSIZE ist festgelegt, wie viele Kommandos Ihnen hiervon fOr eine evtl. Wiederverwendung bereitgestellt werden. Meist ist als Voreinstellung 20 zugewiesen. Auf diese letzten Kommandos kennen Sie mit dem Befehl fc (fix command) mit verschiedenen Optionen zurOckgreifen. Da fOr dieses Kommando in der Korn-Shell bereits Aliase, je nach Option, voreingestellt sind, nimmt man stattdessen das Alias. Nur zur I~formation ist in der nachstehenden Tabelle das eigentliche Kommando fe, das zugrunde liegt, mit aufgefOhrt. 309
3 UNIX - praktisch angewandt Alias Beispiel history [on, n,n n] history -6 history 68 r [-] [nummer] r r -3 r3 I r Buchstabenfolge rv eigentl. Befehl Erlauterung I Zeigt die letzten n Sefehle an ohne Angabe werden die letzten Sefehle angezeigt entspr. der Anzahl in der Variablen $HISTSIZE Die Zeilen werden fortlaufend numeriert angezeigt. Die Nummer ist maBgebend fOr eine Direktanwahl (siehe r n) zeigt die letzten 6 Sefehle an zeigt den 6. und 8. Sefehl an ~eat fc -I-n fc -e-n Nochmaliger Aufruf des Sefehls wiederholt den letzten Sefehl wiederholt den 3.-letzten Sefehl wiederholt den 3. Sefehl wiederholt den letzten Sefehl, der mit der Suchstabenfolge beginnt wurde z.S. den letzten Sefehl mit vi wiederholen fc -e-xx Mit dem Alias r kann also auf die Schnelle ein Kommando nochmals aufgerufen werden. Wollen Sie dagegen die Sefehlszeile erst verandern, holen Sie sich die Zeile uber den sog. Sefehlszeilen-Editor zuruck. 3.8.4 Der Befehlszeileneditor Auch er basiert auf der unter History beschriebenen Datei .sh_history. Zusatzlich muB eine der nachstehenden Voreinstellungen getroffen sein. o Die Variable VISUAL ist mit vi oder emacs' zugewiesen VISUAL=vi; export VISUAL oder Dais Voreinstellung (.kshrc) wurde die Option gesetzt: set -0 vi (siehe auch Seite 318) oder Odie Korn-Shell wurde mit der Option ksh -0 vi -0 vi aufgerufen In der Regel ist die Variable VISUAL mit dem Wert vi vordefiniert. Dies bedeutet, daB Sie mit den Editierbefehlen vom vi auch Ihre Sefehlszeile korrigieren k6n- 310 • emacs ist ein weiterer Editor unter UNIX, der ahnlich wie der vi arbeitet, aber nicht auf allen Systemen verfugbar ist.
3.8.4 Die Korn-Shell nen. Um in den Sefehlszeilen-Editor zu kommen, drucken Sie dann die Taste, die Sie im vi am haufigsten benetigten: die [ESCJ - Taste Nun kennen Sie mit den Sefehlen, die Sie im vi bereits kennengelernt haben, die aktuelle leile oder vorhergehende leilen bearbeiten (oder falls Sie als Sefehlszeilen-Editor den emacs zugewiesen haben, die in der Tabelle angegebenen Sefehle). Hier eine kurze Obersicht jener Funktionen, die fUr die Korrektur von Sefehlszeilen benetigt werden: Funktion Taste im vi 1 Tasteim em acs Positionieren: Vorherige Sefehlszeile (nach oben) k <Ctrl + p> Nachste Befehlszeile (nach unten) j <Ctrl +n> lei chen nach links wandern (zuruck) h <Ctrl +b> leichen nach rechts wandern (vorwarts) I <Ctr1+1> (kleines L) fo rward 1\ <Ctrl + a> previous next back Anfang der leile anfang Ende der leile $ <Ctrl + e> ende Korrigieren: leichen leschen X <CtrI +d> delete leichen einfUgen i Wort loschen dw bis zum Ende der leile loschen d$ zuletzt Geloschtes einfUgen p auto matisch vorein gestellt <ESC+d> (bis Wiortende) <Ctrl + u> p paste Bild 3 -197: Funktionen fOr den Befehlszeilen-Editor (vi und emacs) Wenn Sie also die Escape-Taste gedruckt haben, kennen Sie bei der luordnung von vi jeweils mit .k< eine leile heher wandern, bis zu jener Sefehlszeile, die Sie 311
3 UNIX - praktisch angewandt bearbeiten mochten. Mit dem Buchstaben ,h< konnen Sie dann in der Zeile nach links gehen und mit den (Ihnen bereits bekannten?) vi-Befehlen korrigieren. Um das so wiedergeholte und evtl. geanderte Kommando abzuschicken, drOkken Sie die Return-Taste. Es klingt komplizierter als es ist. Probieren Sie es am besten einmal aus. Der emacs ist zwar etwas benutzerfreundlicher als der vi, da er jedoch nicht auf alIen System en verfOgbar ist, wird in diesem Buch nicht tiefer auf seine Funktionen eingegangen. Am besten ist natUrlich, wir arbeiten ohne Fehler und mOssen nicht im Nachhinein Korrigieren. Nach dem Motto, wer viel arbeitet macht viele Fehler - versuchen wir es doch mal mit weniger Arbeit - weniger Tipparbeit. Eine Moglichkeit ist, den File Completion Mechanismus (Mechanism us, um Pfad- oder Dateinamen zu erganzen) einzusetzen. Dies erreichen Sie mit: (ESC)+ CJ bzw. Der Backslash \ erganzt aile moglichen Pfadnamen, daB Sternchen * aile moglichen Dateinamen. Die zweite Moglichkeit, Schreibarbeit einzusparen, ist die Alias-Funktionen. 3.8.5 Der Alias-Mechanismus Bei dem History-Mechanismus haben wir einige Aliase bereits kennengelernt. FOr fc -e - gab es z. B. das KOrzel r (fOr repeat). Wenn Sie das Kommando alias aufrufen, werden Ihnen die bereits vorhandenen Aliase angezeigt. FOr Kommandos, die Sie oft benotigen, konnen Sie sich eigene KOrzel schreiben. Die Kommandosyntax hierzu lautet: alias Aliasname=" Kommando" alias - Kommando, um eine Aliasfunktion zu bilden Sehen wir uns hierzu ein Beispiel an: $ alias suche="find . -print -name" $ suche inhalt .IUebungenlinhalt $ alias 1I="ls _In $11 dfW}Cr-x--....... drwxr-x--- 312 2 2 monika monika kurs kurs 32 Oct 19 15:20 Texte 32 Oct 19 15:20 Uebungen Bild 3 -198: Beispiel Erstel/en von einer Alias-Funktion
3.8.5 Die Korn-Shell Die Alias-Funktionen im Beispiel gelten allerdings nur solange, bis man sich wieder abmeldet bzw. nur fUr das aktuelle Fenster, in dem man gerade arbeitet. Damit Sie statt Is -I immer nur /I anzugeben brauchen, schreiben Sie diese Befehle mit einem Editor in die Datei .kshrc in Ihrem Home-Directory. Zusatzlich mOssen Sie Ihre Datei .profile erganzen mit der Zeile ENV=$HOME/.kshrc;export ENV. Wie schon erwahnt, konnen als Alias-Namen, auch bestehende Kommando-Namen angeben. Wenn Sie alias rm="rm -i" eingeben, mOssen Sie grundsatzlich bei allen Aufrufen von rm erst mit "y" die Loschung von Dateien bestatigen. Sollten Sie fOr eine bestimmte Loschaktion die ursprOngliche Form des Kommandos rm benotigen, so wird mit dem Fluchtsymbol die Aliasfunktion fOr dieses eine Mal aufgehoben. \rm Soli das Loschkommando fUr die gesamte Sitzung aufgehoben werden, gibt es hierfOr das Kommando unalias Aliasname unalias - Kommando, um einen Alias wieder aufzuheben In unserem Beispiel wOrde mit una lias rm das Kommando rm wieder seine schlagkraftige Wirkung zurOckerhalten. Hier zusammengefaBt die wichtigsten Funktionen von alias: Befehl Beispiel Bedeutung alias Aliasname="Befehl" alias 1I="ls -I" alias rm="rm _i" Bildung eines Alias \Aliasname \rm datei Aufhebung der Aliasfunktion fUr den aktuellen Befehl unalias Aliasname unalias rm Aliasfunktion aufheben alias -x Aliasname alias -x 1I="ls -I" Aliasfunktion auch fUr SubShells exportieren alias alias history=fc -I r=fc -e integer=typeset -i Anzeige der vorhandenen Aliasfunktionen J.- Bild 3-199: Zusammenfassung Alias-Funktionen - 313
3 UNIX - praktisch angewandt 3.8.6 Variablen der Korn-Shell Variablen haben wir ja schon in der Bourne-Shell kennengelernt. Dort wurde der Wert einer Variablen zugewiesen mit Name=Wert; export Name Damit die Variable auch in Unterprogrammen GOltigkeit hat, wurde sie exportiert. In der Korn-Shell kennen Sie mit einem Aufruf der Variablen eine Wert zuweisen und sie gleichzeitig exportieren: export Name=Wert Bei der Korn-Shell kann Ober ein eigenes Kommando die Variable genauer definiert werden. Der Aufruf hierzu ist typeset Option Name(=Wert] typeset - Kornrnando, urn in der Korn-Shell Variable zu setzen Als Option kann voreingestellt werden, was fOr ein Wert zugewiesen werden dart: Option c...-.. Ablenung von I Auswirkung auf den Wert der Variable -i integer Es werden nur ganze Zahlen akzeptiert Mit dieser Variablen kann spater direkt gerechnet werden -u uppercase Zugewiesene Zeichenfolgen werden in Gro8buchstaben umgewandelt -I lowercase lugewiesene leichenfolgen werden in Kleinbuchstaben umgewandelt -x export Variable wird gleich exportiert Wurde als Option -i integer angegeben, kennen Grundrechenfunktionen direkt zugewiesen werden: Operator 314 Ergebnis echo $erg Auswirkung Beispiel - Wert von $erg jew. von leile zuvor + Addition typeset -i erg=5+12 17 - Subtraktion erg=$erg-3 14 * Multiplikation erg=$erg*3 42 1 Division erg=$erg/3 14 % Modulo erg=$erg%3 2
3.8.6 Die Korn-Shell FOr das Kommando typeset -i wird meist das voreingestellte Alias integer verwendet: integer Name[=Wert] Ais Beispiel schreiben wir eine kleine Prozedur ,countdown-, die uns fragt, wie lange der Countdown laufen 5011, jeweils zurOckzahlt und uns den Wert Ober banner am Bildschirm anzeigt #! Ibinlksh # Prozedur urn einen Countdown auf dem Bildschirm auszugeben integer Zahl Definition der Variablen als Integer echo • Mit welcher Zahl 5011 der Countdown starten? clear _ Komrnando, um den aktuellen Bitte geben Sie eine Zahl ein" read Zahl Bildschirminhalt zu loschen clear echo "Der Countdown startet" banner - Kommando, um Zeichenketten im GroBformat auszugeben while test $Zahl -gt 0 do clear banner $Zahl Direkte Rechenoperation mit der Zahl=$Zahl-1 Integer-Variablen done Bild 3-200: Beispiel countdown Rechenoperation mit Integer-Variablen l> Bei Rechenoperationen mit Integer-Variablen durfen keine Leerzeichen enthalten sein (dagegen muB bei Rechenoperationen mit dem Kommando expr unbedingt auf Leerzeichen geachtet werden, siehe auch Seite 294). Kurz zusammengefaBt: Der Wert einer Variablen kann also auf drei Arten zugewiesen werden: 1. wie bisher auch in Bourne-Shell Name=Wert ; export Name 2. Wertzuweisung und export in einem Aufruf export Name=Wert 3. Ober ein eigenes Komrnando typeset [-iuvx] Name[=Wert] die Optionen bedeuten: -i integer nur ganze Zahlen werden akzeptiert -u -I lowercase -x export uppercase Eingabe wird in GroBbuchstaben zugewiesen Eingabe wird in Kleinbuchstaben zugewiesen Variable wird exportiert FOr typeset -i kann Alias integer verwendet werden: integer Name[=Wert] 315
3 UNIX - praktisch angewandt Spezielle vordefinierte Variable Variable Ableitung von Bedeutung $ENV Environment Ais Wert wird der Name der Datei zugeordnet, die ksh-spezifische Voreinstellung enthalt z.B. $HOMEI.kshrc und so lite in .profile gesetzt werden $HISTSIZE GroBe der History Ais Wert wird die Anzahl der Kommandos eingetragen, auf die uber den HistoryMechanismus und den Befehlszeilen-Editor zuruckgegriffen werden darf Ais Wert wird vi oder emacs zugeordnet, der fUr als Befehlszeilen-Editor genommen werden soli $VISUAL $PWD $OLDPWD print working directory Enthalt als Wert das aktuelle Directory Enthalt als Wert das vor einem cd benutzte Directory Die Variablen $ENV, $VISUAL und $HISTSIZE haben wir bereits kennengelernt. Die Variablen $PWD und $OLDPWD kennen recht praktisch angewendet werden. Wenn Sie nur mal kurz in ein anderes Directory wechseln, kennen Sie mit dem Kommando cd $OLDPWD wieder in das vorherige Directory zuruckspringen und mussen hierfur nicht lange nach dem Pfad suchen. Da die Eingabe trotzdem noch recht lang ist, empfiehlt es sich, hierfur einen Alias zu bilden, z.B. alias cdo="cd $OLDPWD" Wenn Sie dieses Alias in Ihre Datei $HOMEI.kshrc mit aufnehmen, kennen Sie mit cdo immer in das vorherige Directory zuruckkommen. Mit der Variable $PWD kennen wir nun endlich unser Prompt-Zeichen so setzen, daB wir immer unser aktuelles Directory angezeigt bekommen. Hier mussen wir jedoch die Variable in einfache Hochkommas' , setzen, damit die Variable nicht sofort von der Shell bei der Zuweisung ersetzt wird, sondern jeweils erst bei der Anzeige von dem Prompt. Probieren Sie am besten einmal die unterschiedlichen Auswirkungen aus. Sie werden erkennen, daB nur mit folgender Eingabe die gewunschte Wirkung erzielt wird: export PS1 ='$PWD' oder besser, damit Sie eine klare Trennung zu Ihrer Eingabe haben: export PS1='$PWD >' 316
3.8.6 Die Korn-Shell Auch diese Zeile erganzen Sie in Ihrer Datei $HOMEI.kshrc. So schen die Anzeige des aktuellen Pfadnarnens ist, so lastig kann sie auch werden, namlich dann, wenn Sie Ihr Home-Directory gut strukturiert haben und so recht lange Pfadnamen entstehen. Es bleibt Ihnen dann kaum Platz fOr Ihre Befehlseingabe. Die Korn-Shell bietet noch eine ganze Menge von Zusatzfunktionen, u.a. eine Zeichenkettensubstitution, die fOr die Auswertung von Variablen eingesetzt wird. Wir werden hierauf nicht weiter eingehen, Obernehmen aber ein Beispiel aus dem Buch UNIX von J. Gulbins/K. Obermayr, das gerade fOr die Zuweisung des aktuellen Pfades sehr schOn ist. Mit folgender Anweisung erhalten Sie nur das letzte Directory Ihres aktuellen Pfadnamens angezeigt: export PS1 =' .. .I${PWD##*I} >' WOrde Monika z. B. in Ihr Unterdirectory lusr/kurs/monikaITexte wechseln, wOrde der Prompt der Korn-Shell angezeigt werden mit: .. .ITexte> Wenn Sie Ihren Rechnernamen mit in die Promptanzeige Obernehmen mechten, kennen Sie z. B. folgende Erganzung vornehmen: export PS1="\hostname\:$PS1" (Auf einigen Rechnern kann der Rechnername auch Ober die Variable $HOST abgefragt werden.) WOrde Monika am Rechner idefix arbeiten, wOrde als Prompt dann idefix: .. .ITexte> angezeigt werden. In der Korn- und C-Shell gibt es, um in das jeweilige Home-Directory eines Benutzers zu wechseln, noch ein Sonderzeichen. Bisher hatten wir kennengelernt, daB Sie mit cd ohne Angabe jeweils in Ihr eigenes Home-Directory wechseln kennen. $HOME konnten Sie angeben, wenn an dieser Stelle Ihr Home-Directory eingesetzt werden soli. -IBenutzer I Dies kennen Sie nun kOrzer mit dem Tildezeichen erreichen. Geben Sie zu dem Tildezeichen mit Schragstrich getrennt einen Benutzernamen an, so wird hierfOr das jeweilige Home-Directory des angegebenen Benutzers eingesetzt. Z. B. wird fOr -Ihans lusrlkurslhans ersetzt. I -, Sonderzeichen, urn den Namen des Home-Directories zu erhalten 317
3 UNIX - praktisch angewandt 3.8.7 Zusatzliche Optionen Wie gefallen Ihnen die bisher kennengelernten Verbesserungen der Korn-Shell? Noch fehlt uns eine Option, auf die in den vorigen Kapiteln schon aufmerksam gemacht wurde, namlich, daB Sie verhindern kennen, daB bei der Umleitung der Standardausgabe evtl. schon bestehende Dateien Dberschrieben werden. Mit dem Kommando set werden die Optionen gesetzt: set -0 set -0, Kornrnando, urn Optionen in der Korn-Shell zu setzen Hier eine Auswahl rnoglicher Optionen:: Option Bedeutung all export Aile gebildeten Variablen werden grundsatzlich exportiert bgnice Hintergrundprozesse laufen mit einer niedrigeren Prioritat emacs oder vi Der angegebene Editor wird zum Editieren der BefehlszeiIe genommen (Korrektur Ober ESC-Taste) ignoreeof Mit der Tastenkombination <Ctrl + d> kann die Shell nicht mehr beendet werden (wird ignoriert) noclobber Bereits bestehende Dateien kennen Dber Umleitungszeichen >, » und 2> nicht mehr Dberschrieben werden Geben Sie ein set-Kommando Dber Terminal ein, so gilt die Voreinstellung nur solange, bis Sie sich wieder abmelden. Um die Voreinstellung generell zu setzen, werden diese Optionen ebenfalls in die Datei .kshrc eingetragen. Mit dem Kommando set ohne Angaben erhalten Sie neben den Variablen auch die gesetzten Optionen angezeigt. Mit set +0 kennen gesetzte Optionen wieder ausgeschaltet werden. Der Inhalt der Datei lusrlkurslmonikal.kshrc kennte dann wie folgt aussehen: idefix: .. .lmonika > cat .kshrc alias 11= '/s -/" alias rm="rm -i" alias cdo='cd $OLOPWO' export PS1='.. .I$(PWO##·lj >' set -0 vi set -0 noclobber idefix: .. .lmonika > 318 Bild 3-201: Beispiel Oatei $HOMEI.kshrc
3.8.8 Die Korn-Shell 3.8.8 ProzeBkontrolle (Jobcontrol) 1m Abschnitt 3.2.7 (Vordergrund- und Hintergrundprozesse, Seite 110) wurde gezeigt, wie Prozesse unter der Bourne-Shell gestartet werden. Sie erinnern sich an die dort vorgestellten Kommandos und Sonderzeichen: ps (process status) zeigt die aktuellen Prozesse kill -9 bricht vorzeitig einen ProzeB ab & beim Aufruf eines Kommandos als letztes angegeben, bewirkt es, daB dieses Kommando als HintergrundprozeB gestartet wird. In der Korn-Shell wird, wenn ein HintergrundprozeB gestartet wird, eine zusatzliche Nummer in eckigen Klammern ausgegeben. Dies ist die sog. Jobnummer. Hintergrundprozesse werden in der Korn-Shell zusatzlich uber eine Jobcontrol gesteuert. Auch Vordergrund-Prozesse konnen der Jobcontrol ubergeben werden. Hierfur wird der ProzeB mit den Tasten gestoppt. Ober folgende Kommandos konnen die Jobs dann gesteuert werden . Kommando 19 %Jobnummer -- bg %Jobnummer -- stop %Jobnummer -- kill Signal %Jobnummer oder kill Symbol %Jobnummer oder kill Signal PIO Erlauterung -- foreground Der Job/ProzeB lauft im Vordergrund weiter. background Der Job/ProzeB lauft im Hintergrund we iter. Halt einen Job an (entspricht <Ctrl + Z>. - Der ProzeB wird abgebrochen. Das kill-Kommando kann unter der Korn-Shell sowohl mit der Signalnummer als auch mit einem Signalnamen angegeben werden. Auch die Eingabe mit der ProzeBnummer (process identification), wie bisher unter der BourneShell, ist moglich. I Kommandos zur Job-Steuerung 319
3 UNIX - praktisch angewandt Hierzu ein Beispiel: lusrlkurslhans > find. -print> liste & [1J 135 lusrlkurslhans > stop % 1 [1J stopped lusrlkurslhans > fg %1 Bild 3-202: Beispiel Jobcontrol mit stop und fg Soli der ProzeB abgebrochen werden, so kann das kill-Kommando mit der >sicheren< Signalnummer 9 (wie wir schon gelernt haben) abgebrochen werden oder ein anderes Signal mitgegeben werden. Einige dieser Signale lauten: Signal - ~ Namel Symbol Bedeutung 1 HUP Die Terminalverbindung wird beendet (z. B. durch das Abmelden eines Benutzers) 2 INT Interrupt vom Terminal, z. B. wurde das Programm mit <CTRL + c> abgebrochen 3 QUIT Der ProzeB wird abgebrochen und ein Core-Dump erzeugt 9 KILL Der ProzeB wird unbedingt abgebrochen 15 TERM Das Programm wird normal beendet 17 STOP ProzeB stoppen 18 TSTP Der ProzeB wird vom Terminal aus gestoppt <CTRL + z> 19 CONT Der gestoppte ProzeB soli im Hintergrund weiterlaufen (bg) Bild 3-203: Tabelle mit einigen Signalen Mit dem Kommando kill -/ kennen Sie sich eine Liste aller verfOgbaren Signale ausgeben lassen. Mit dem Kommando jobs kennen die aktuellen Jobs angezeigt werden: 320
3.8.8 Die Korn-Shell Die nachstehende Zeichnung stellt die m6glichen Jobsteuerungen dar. $ find lusr -print $ find. -print> liste & [1]135 /usr/bin ProzeB wird gestoppt ProzeB wird abgebrochen Bild 3-204: Die verschiedenen Jobsteuerungen 321
3 UNIX - praktisch angewandt 3.8.9 Zusammenfassung Wichtige Dateien: Datei Sedeutung .kshrc* Wird von der Korn-Shell bei jedem Aufruf einer neuen Korn-Shell (Subshell) gelesen, wenn im .profile die Variable ENV=$HOMEI.kshrc gesetzt wurde. In .kshrc werden u.a. Alias-Zuweisungen und KornShell-spezifische Variablen, Funktionen und Optionen gesetzt. .profile Wird nach dem Anmeldenllogin von der Sourne- oder Korn-Shell gelesen, aber nicht von der C-Shell. In .profile werden u.a. Variable gesetzt, wie $PATH, $ENV und/oder spezielle Anfangsroutinen fOr den Senutzer gestartet. In diesem Kapitel behandelte Kommandos Kommandoeingabe Funktion ksh Korn -Shell Startet eine Korn-Shell Hierbei wird die Datei $HOMEI.kshrc gelesen, wenn die Variable ENV entsprechend gesetzt ist i Voter DO: rommand.com history [-n] --- - Vergangenes Zeigt die letzten 10 bzw. n Kommandosan (alias zu ..... fc -I) emacs und vi als 8efehlszeilen-Editor siehe 8ild 3 -197 auf Seite 311 fe [-I nJ [-e -] fix command Wiederholt bereits eingegebene Kommandos/Befehle oder zeigt sie an (History-Mechanism us) -I list - bzw. history zeigt die letzten 10 bzw. n Kommandos -e edit - bzw. r repeat (unter csh nur I) wiederholt den letzten Sefehl wiederholt den n-tletzten Sefehl wiederholt den n-ten Sefehl wiederholt den letzten Sefehl, in dem "name" enthalten ist statt fe-I gibt es ein Alias history statt fc -e gibt es ein Alias r r r -n rn rname 322 I- - j
3.8.9 Die Korn-Shell Kommandoeingabe alias [-x) kOrzel="Befehl " Beispiel: alias 1I="ls -I" unalias Kurzel bzw. nur nachfolgender Alias wird aufgehoben: \KOrzel typeset [-iulx) integer name [ =Rechenoperationj Beispiel: integer zahl=10 mogliche Operatoren + * I % 19 %Jobnummer i Funktion Zusatzname Setzt Kurzel fur Befehle Lost die Bedeutung eines Alias wieder auf Alias wird nur temporar aufgelost Setzt Variable -i integer alias: integer fUr ganze Zahlen -u upper case nur fUr GroBbuchstaben -I lower case nur fUr Kleinbuchstaben -x export Die Variable wird gleich exportiert ganzeZahl Bildet eine Integer-Variable (alias zu typeset -i) --+ typeset Bei der Zuweisung und innerhalb der Rechenoperation dOrfen keine Leerzeichen enthalten sein Auswirkung Addition Subtraktion Multiplikation Division Modulo foreground Der Job/ProzeB lauft im Vordergrund weiter. I bg %Jobnummer background Der Job/ProzeB lauft im HintergrUnd~ weiter. stop %Jobnummer Halt einen Job an Von einem Vordergrund-ProzeB auch Ober direkten Terminalzugriff mit <etrl + z>. moglich kill -9 [PID] [%Jobnr] - kill (toten) Bricht einen ProzeB ab -1 _ _ _ _ _ _1 323
3 UNIX - praktisch angewandt Vordefinierte Variable bzw. Sonderzeichen Shellvariable Bedeutung $ENV Hier wird als Wert der Dateiname angegeben, der Voreinstellungen fUr die Korn-Shell enthalt. In der Regel $HOME/.kshrc $HISTSIZE -- - Ais Wert wird die Anzahl der Kommandos eingetragen, auf die Ober den History-Mechanismus und den Befehlszeilen-Editor zurOckgegriffen werden darf $PWD Ais Wert wird jeweils das aktuelle Directory zugeordnet $OLDPWD Enthalt als Wert das vor einem cd benutzte Directory $VISUAL 1st diese Variable belegt, kann die Befehlszeile editiert werden -IBenutzer Beispiel -Ihans r-- Das Tildezeichen wird durch das Home-Directory von dem aktuellen Benutzer ersetzt oder mit des durch Schragstrich getrennten wird ersetzt /usrlkurslhans ersetzt. ~ Zusatzliche Optionen Option Bedeutung allexport Aile gebildeten Variablen werden grundsatzlich exportiert bgnice emacs oder vi --- ----------- - - - - - Hintergrundprozesse laufen mit einer niedrigeren Prioritat -Wird diese Option gesetzt, kann die Befehlszeile mit dem angegebenen Programm editiert werden. HierfOr muB, um zu korrigieren, die ESC-Taste gedrOckt werden. Der Befehlszeilen-Editor kann auch durch Setzen der Variable VISUAL=vi eingeschaltet werden 324 ignoreeof Mit der Tastenkombination Ctrl + d kann die Shell nicht mehr beendet werden (wird ignoriert) noclobber Bereits bestehende Dateien konnen Ober Umleitungszeichen > nicht mehr Oberschrieben werden
3.9 Besonderheiten der C-Shell Wie in den beiden vorherigen Kapiteln schon daraufhingewiesen, wird in diesem Buch die C-Shel/ nicht eigens behandelt. Da speziel/ im Umfeld der Softwareentwicklung die C-Shel/ oft eingesetzt ist, sol/en hier wenigstens die wichtigsten Unterschiede zur Bourne- und Korn-Shel/ aufgezeigt werden. Die einzelnen Themen: 3.9.1 Eigenschaften der C-Shell 3.9.2 Wie wird die Fehlerumleitung eingegeben? 3.9.3 Was ist anders bei der Ablaufsteuerung? 3.9.4 Wie wird mit Variablen gearbeitet? 3.9.5 Aliasbildung/-aufhebung 325
3 UNIX - praktisch angewandt ------------------------------------ 3.9.1 Eigenschaften der C-Shell Ahnlich wie die Korn-Shell wurde die C-Shell als Alternative zur Bourne-Shell entwickelt, um wesentliche Erweiterungen aufzunehmen. Hierzu geh6ren: o o Der History-Mechanismus mit der M6glichkeit, Befehlszeilen zu editieren Der Alias-Mechanismus ODie Job-Kontrolle (Stoppen eines Prozesses, Wiederstarten als Vorder- oder Hintergrund-ProzeB) o o o Weitere vordefinierte Variable Einfachere Behandlung von Variablen (Integer-Variable mit Rechenoperationen) Optionen, mit denen z. B. wie in der Korn-Shell das Oberschreiben von Dateien bei Standardausgabe-Umleitungen verhindert wird. Ais Startroutinen liest die C-Shell, wenn sie durch das login Ober die Datei letclpasswd gestartet wurde, im jeweiligen Home-Directory des Benutzers statt .profile die Datei .Iogin. Die Datei .cshrc wird generell bei jedem Aufruf der C-Shell gelesen. Das Prompt der C-Shell ist das Prozentzeichen %. Es kann mit dem Kommando set prompt = "neuer Wert" neu zugewiesen werden. I> Hier auch gleich ein wesentlicher Unterschied zur Bourne- und Korn-Shell, der oft zu Fehlern fOhrt: Variable sind meist in Kleinbuchstaben (prompt) geschrieben, und das Gleichheitszeichen muB getrennt durch Leerzeichen eingegeben werden! Dateinamenexpansion, Ein-/Ausgabeumleitung auBer Fehlerausgabe-Umleitung, Aufruf eines Hintergrundprozesses und die Positionsparameter werden genauso wie in der Bourne- oder Korn-Shell behandelt. Doch wahrend die ksh ohne weiteres Shell-Prozeduren (Scripte) von der Bourne-Shell (sh) richtig interpretiert und ausfOhrt, fOhren sh-Scripte, die mit csh gestartet werden, oft zu fehlerhaftem Abbruch. Deshalb auch an dieser Stelle nochmals der Hinweis, daB, wenn verschiedene Shells genutzt werden, in der ersten Zeile einer Shell-Prozedur der run-Befehl stehen so lite: z. B. #!/bin/sh oder #!/usr/binlcsh Nachstehend eine Obersicht der wesentlichen Unterschiede, die, falls nicht explizit die C-Shell aufgerufen wurde, zu Fehlern fOhren k6nnten. 326
Besonderheiten der C-Shell 3.9.2 3.9.2 Wie wird die Fehlerumleitung eingegeben? Eingabe unter sh/ksh Eingabe unter csh >& 3.9.3 Was ist anders bei der Ablaufsteuerung? Eingabe unter sh/ksh If-Bedingung: if Befehl then Befehlsfo/ge else Befehlsfolge fi Eingabe unter csh if ( ausdruck ) Befeh l oder if ( ausdruck ) then Befehlsfolge endif oder if ( ausdruck ) then Befehlsfolge else if ( ausdruck ) then Befehlsfolge else Befehlsfolge endif oder if Befehl then Befehlsfolge elif Befehl then Befehlsfolge fi Schleifenverarbeitung: for Name in argumente do Befehlsfolge done foreach Name ( argumente ) Befehlsfolge end while Befehl do Befehlsfolge done while ( ausdruck ) Befehlsfolge end ~--- Case-Verarbeitung case Textmuster in muster_1 ) Befehlsfolge ;; muster_2) Befehlsfolge ;; -_.- - switch (textmuster ) case Muster1 ; Befehlsfolge; breaksw esac case Mustern ; Befehlsfolge; breaksw default: Befehlsfolge # optional endsw Goto-Anweisung goto marke nicht moglich Repeat-Anweisung nicht moglich marke: Befehlsfolge repeat n Befehl 327
3 UNIX - praktisch angewandt 3.9.4 Wie wird mit Varia bien gearbeitet? Eingabe unter sh/ksh Positionsparameter Eingabe unter csh --~----------------------------~ $0, $1, •.. Vordefinierte Variable $argv[O], $argv[1], ... und $0, $1, ... f---- Statt Grol3- in Kleinbuchstaben (nur einige gleichlautend) $home $HOME ksh: zusatzlich -[Ibenutzer] oder -[Ibenutzer] $PS1 $prompt Bereitzeichen mit aktuellen Pfadnamen zuweisen: Nur uber Trick - Aliasbildung (Quelle: UNIX, J.Gulbins, K.Obermayr) alias defpr ' set prompt = "${cwd}%" ' defpr alias cd 'chdir V· && defpr' export PS1 ="' $PWO' >" Setzen von Variablen PATH =$PAT H:lusrlkurslbin export PATH Rechnen mit Variablen zahl=10 zahl=' expr $zahl + l' ksh zusatzlich: integer zahl=10 zahl=$zahl+ 1 - - = set path ($path lusrlkurslbin )x oder setenv Name Wert @zahl10 @ zahl = ( $zahl + 1 ) 3.9.5 Aliasbildung/-aufhebung Eingabe unter ksh alias [-x] kDrzel="Befehl" alias 11="15 -I" unalias kDrzel 328 Eingabe unter csh alias kOrzel Befehl unalias kOrzel -
3.10 Noch ein paar Befehle Mit Bourne- und Korn-Shell k6nnen Sie nun Ihre Arbeitsumgebung und Arbeitsablaufe auf einem UNIX-Rechner so gestalten, wie Sie sie ben6tigen. Hier noch ein paar Befehle mit Beispielen aus der Praxis, die ganz nOtzlich sein k6nnen, um knifflige Aufgaben zu 16sen. Die einzelnen Themen: 3.10.1 Umleitung mit tee 3.10.2 Kommandos, um Dateien und Zeichenketten zu verandern • Sortieren von Dateiinhalten oder Zeichenketten • Separieren (Ausschneiden) von Spalten aus Dateien oder Zeichenketten • Vergleichen von Dateien • Das Kommando read in Verbindung mit dem PipeMechanismus • Nur ein kleiner Blick in Dateien 3.10.3 Programme starten, und Sie gehen schlafen 329
3 UNIX - praktiseh angewandt 3.10.1 Umleitung mit tee Hatten wir in der Shell-EinfOhrung gelernt, daB die Ausgabe eines Kommandos durch den Pipe-Mechanismus als Eingabe fOr das nachste Kommando umgeleitet wird, so konnen Sie durch das Kommando tee die Ausgabe zusatzlich in eine Datei umleiten. Is I tee inhalt I we -w temperiire Datei im Speicher Datum befehle ,--~--..., inhalt neu projektA ueb1 Datei auf der Platte inhalt 6 Ergebnis am Bildschirm tee - Kommando, urn eine Pipe-Ausgabe zusatzlieh in eine Datei abzuleiten Diese parallele Umleitung laBt sich auch gut mit nachfolgenden Kommandos kombinieren, um einen veranderten Dateiinhalt sofort am Bildschirm kontrollieren zu konnen und zusatzlich in eine neue Datei zu speichen. 330
Noch ein paar Befehle 3.10.2 ---------------------~ 3.10.2 Kornrnandos, urn Dateien und Zeichenketten zu verandern Unter Unix konnen Sie im groBen Stil ,Datei-Manipulationen< vornehmen. Das machtigste Werkzeug hierfOr ist sicher der awk (von den Programmierern Aho, Weinberger, Kernigham abgeleitet), das aber sic her den Rahmen dieses EinfOhrungsbuches sprengen wOrde. Der Volistandigkeit halber mochte ich es aber erwahnen. Sie konnen mit diesem Programm Dateien analysieren, neu aufbereiten, nach unterschiedlichen Kriterien sortieren, neue Dateien dam it generieren und anspruchsvolle Listen ausgeben. Die Eingabe zu diesem Kommando gleicht aber dementsprechend auch einem eigenen Programm. Der awk wird u.a. im Buch von J.Gulbins/K.Obermayr behandelt. Von den Autoren des awk gibt es auch ein Buch (The AWK Programming Language). 1m Literaturverzeichnis finden Sie hierzu weitere Angaben. Doch auch ohne den awk konnen Sie mit einer Reihe von Kommandos Dateiinhalte oder Zeichenketten verandern, z. B. o o o o sortieren mit sort Zeichen oder Spalten herausschneiden mit cut Dateien oder Zeichenketten (Strings) vergleichen mit diff (oder cmp) bestimmte Zeilen aus Dateien selektieren mit grep. Das Kommando haben wir bereits im Kapitel 3.4, Seite 188 kennengelernt. Sehen wir uns zu den genannten Kommandos ein paar Beispiele an: Sortieren von Dateiinhalten oder Zeichenketten Auch das sort-Kommando hatten wir schon einmal kurz besprochen (Kapitel 3.2, Seite 97), um eine Ausgabe alphabetisch zu sortieren. Doch mit sort konnen Sie auch nach unterschiedlichen Spa/ten innerhalb einer Datei oder Zeichenausgabe sortieren. Oft wird in der Datei /etc/passwd unter Kommentar der vollstandige Name der Benutzer, evtl. sogar Abteilung und Telefon-Nr. eingetragen. In der PasswortDatei sind die Benutzer aber nach der laufenden Benutzernummer sortiert. Wenn wir aus dieser Datei eine alphabetische Namensdatei unserer Benutzer erstell en wollen, mOssen wir dem Kommando mitteilen, an welcher Stelle/Spalte es die Sortierung durchfOhren soli. A/s Spa/te interpretiert das sort-Programm zusammenhangende Zeichen, die durch ein oder mehrere Leerzeichen voneinander getrennt sind. Sehen wir uns die Syntax des Kommandos sort an: 331
3 UNIX - praktisch angewandt sort [-frn] -tZeichen -kPosition, Position[nr]] Datei (Dateiname(n)] K riterien fUr den Sort Von Position Zahl1.Zahl2 bis Position Zahl1.Zahl2 Zahl1 =SpaltenNr Zahl2=ZeichenNr innerhalb der Spalte Trennzeichen Wenn nicht das leerzeichen als Trennung zwischen Spalten dient, wird hier das Trennungszeichen vorgegeben numeric string Am Zeilenanfang beginnende Zahlen , die durch leerzeichen von anderen Zeichen gelrennt sind, werden in arilhmelischer Reihenfolge sortiert reverse - Es wird in umgekehrter Richtung sortiert fold - GroB- und Kleinbuchstaben werden gleich behandelt sort - Kornrnando, urn Dateiinhalte oder Zeichenketten zu sortieren In unserem Beispiel wollen wir den Dateiinhalt nach der Spalte vier sortieren. Uns interessieren aber nur die Benutzer, die mit >ben' beginnen. Ober eine Pipe konnen wir vorab mit grep diese Zeilen herausfiltern und geben die Ausgabe an das sort-Programm weiter. Da wir die Ausgabe sowohl am Bildschirm kontrollieren wollen als auch in einer Datei abspeichern mochten, verwenden wir hier gleich das Kommando tee. Um das Kommando sort besser kennenzulernen, sortieren wir nur nach den ersten vier Buchstaben des Namens. Um aus der Datei /etc/passwd die gewOnschten Spalten zu sortieren und in einer anderen Datei abzuspeichern, sehen wir uns kurz nochmal einen Ausschnitt von /etc/passwd an. Die einzelnen Spalten sind durch einen >:' getrennt, den wir beim Aufruf als Trennungssymbol mit der Option -t: angeben. b: b:J ~ ~ 5 5.1 5.4 ~ Position .....-- Spalten 1 - 5 ben01 : xcziui: 01: 20: Mei~r, Eva, Te1.446: /usr/kurs/ben01 :/bin/ksh ben02: xcber: 102: 20: Huber, Hans, Tel. 143 :/usr/kurs/ben02 :/bin/sh ben03: nmxfz: 103: 20: Beck, Ute, Tel. 222 :/usr/kurs/ben03 :/bin/ksh $ grep "Aben" /etc/passwd I sort -t: -k 5.1,5.41 tee bensort ben03:nmxfz: 103:20:Beck, Ute, Tel. 222:/usrlkurs/ben03:/binlksh ben02:xcber:102:20:Huber, Hans, Tel. 143:lusr/kurs/ben02:lbinlsh ben01 :xcziui: 101 :20:Meier, Eva, Tel.446:lusrlkurs/benO 1:Ibin/ksh $ Bi/d 3-205: Beispiel sort als Filterprogramm (Sortierung nach Spalten) 332
Noch ein paar Befehle 3.10.2 Separieren (Ausschneiden) von Spalten aus Dateien oder Zeichenketten Der Inhalt unserer neuen Datei bensort entspricht den Zeilen am Bildschirm. Um nun eine Liste nur mit Benutzername (ben01 ... ), dem vollstandigen Namen mit Telefonnummer und das Home-Directory zu bekommen, benotigen wir nur die Spalten 0,4 und 5. Aile anderen Spalten interessieren uns vorerst nicht. Um Spalten ,herauszuschneiden< gibt es das Kommando cut: cut [-dZeichen} -fFeldnr. [,Feldnr., Feldnr, ... } [Feldnr.-Feldnr} field Die Spallen werden beim cut-Programm a1s Felder bezeichnet. Auch hier beginnl die Numerierung bei 0 Mehrere Spallen konnen durch Kommas gelrennl angegeben werden (und/oder 'von bis<z.B. 2,4,6-9 1> delimiter - Trennungszeichen Achlung! Ais Standardeinstellung (default) nimml das cut-Programm das Tabulatorzeichen, nichl wie bei sort das Leerzeichen! Leider sind auch die Kennzeichen, um das Trennungszeichen anzugeben, verschieden. cut - Kommando, um Spalten auszuschneiden Um die Spalten 0, 4 und 5 zu erhalten, geben wir ein: $ cut -d: -fO,4-5 ben sort I tee benutzer ben03:Beck, Ute, Tel. 222:/usr/kurs/ben03: ben02:Huber, Hans, Tel. 143:/usrlkurslben02: ben01 ::Meier. Eva, Tel. 446:/usrlkurs/benO 1: $ BUd 3-206: Beispiel cut, Separieren der Spalten 0,4 und 5 aus letclpasswd Wie mOBte die Eingabe lauten, wenn wir mit einem Aufruf nur die drei Spalten von letc/passwd herausfiltern, sortieren, am Bildschirm anzeigen und gleichzeitig in eine Datei schreiben? Kein Problem. Wir konnen ja beliebig lange Pipes schreiben. Versuchen Sie es einmal, benennen Sie die Ausgabedatei vorsichtshalber benutzer1 und fOr weitere Versuche benutzer2 usw. Um herauszufinden, ob die Dateien das gleiche Ergebnis gebracht haben, konnen Sie dies mit dem nachfolgenden Kommando prOfen. 333
3 UNIX - praktisch angewandt Vergleichen von Dateien Wie oft kommt es vor, daB zwei Dateien mit gleichem oder fast gleichem Inhalt vorhanden sind? Mit bloB em Auge ist es oft schwer erkennbar, wo und ob Unterschiede bestehen. Welche der beiden Dateien darf geloscht werden? Mit Is -I konnen wir vorab Datum und GroBe vergleichen, doch wir wissen dann noch nicht, welcher Dateiinhalt der richtige ist, wo die Unterschiede liegen. Da ist es sehr hilfreich, wenn diese Arbeit der Rechner Obernimmt. Unter UNIX gibt es hierfOr verschiedene Kommandos. Ab System V.4 dOrfte auf allen System en das Kommando diff zur VerfOgung stehen. Es vergleicht Zeile fOr Zeile und gibt ein entsprechendes Protokoll aus. Ober Optionen konnen noch eine Reihe von Voreinstellungen gesteuert werden, doch wir wollen uns hier nur den einfachen Vergleich ansehen. diff datei1 datei2 I differential file compare diff - Kommando, um Dateien miteinander zu vergleichen Nehmen wir als Beispiel zwei kleine Dateien: Datei1 h1: Datei2h2: hallo dies ist die erste Datei dies ist die zweite Datei $ diff h1 h2 1dO <.halfo 3c2 <erste Datei Zeile 1 delete zu Zeile 0 Inhaltsanzeige Zeile 3 change zu Zeile 2 Anzeige h1 >zweite Datei Anzeige h2 Die Hinweise im Protokoll basieren auf den Befehlen yom Editor ed. Die am haufigsten vorkommenden Hinweise sind: a append, d. h., die Zeile mOBte eingefOgt werden, d delete, d. h., die Zeile mOBte geloscht werden, c change, d. h., die Zeile mOBte geandert werden, damit die Datei1 gleich der Datei2 ware. 334
3.10.2 Noch ein paar Befehle Ein weiteres Kommando, um Dateien zu vergleichen ist cmp. Sind die Dateien gleich, Iiefert das Kommando den Exit-Status O. Sind die Dateien nicht gleich, zeigt es standardmaBig nur die erste Position des Unterschiedes an. In unserem obigen Beispiel: cmp datei1 datei2 I compare crnp - Kornrnando, urn Dateien zu vergleichen Datei2 h2: Datei1 h1: dies ist die zweite Datei hallo dies ist die erste Datei $ cmp h1 h2 h1 h2 differ: char 1, line 1 Bild 3-207: Beispiel Vergleich von Dateien mit cmp 335
3 UNIX - praktisch angewandt Cas Kommando read in Verbindung mit dem Pipe-Mechanismus Ein weiteres Beispiel, das in der Praxis oft benotigt wird, ist, festzustellen, welche Prozesse von einem Benutzer oder einem bestimmten Programm noch laufen und diese Prozesse z. B. gleich abzubrechen. HierfOr konnen die einzelnen Abfragen Ober die Pipe in einem Aufruf abgearbeitet werden: $ ps -e1 I grep "ben01 II I while read uid PIC rest do kill -9 $PIC done > > 1234 killed 1356 killed Solange, wie von benOl Zeilen aus der Anzeige von ps -sf gefunden werden, wird dlese Zeile von read gelesen und den Variablen uid PfO und der Rest der Zeile rest zugewiesen. Fur das kill-Kommando benOtigen wir nur den 2. Wert, namlich $PID. ps -ef gibt folgeOOe Werte aus: UfO PIO PPIO STIME TTY TIME COMMAND Bild 3 - 208: Beispiel read in Verbindung mit Pipe Falls Sie sich nochmal Ober das Kommando read informieren mochten, schlagen Sie nach bei Kapitel 3.7, Seite 271. Ober das Kommando ps finden Sie im Kapitel3.2 auf Seite 113 weitere Informationen. Man kann zwar die Pipe direkt Ober Terminal eintippen, doch es empfiehlt sich, hier ein kleines Kommando zu schreiben und je nach dem, was gesucht werden soli (z. B. Benutzer- oder Programmname), dies dann als Parameter mitzugeben. In der Prozedur wird dann nach dem Parameter abgefragt: ps -ef I grep $1 ... 336
3.10.2 Noch ein paar Befehle Nur ein kleiner Blick in Dateien Oft reicht nur ein kleiner Blick in eine Datei oder bei einer Pipe-Ausgabe in die ersten Zeilen, um die n6tigten Informationen zu erhalten. HierfOr zwei Kommandos: head [-n] datei(en) Kopt I I number Anzahl der ersten Zeilen ohne Angabe werden die ersten 10 Zeilen gezeigt head - Kommando, um die ersten Zeilen einer Datei anzusehen $ head -2 benutzer ben03:Beck, Ute, Tel. 222:lusrlkurslben03: ben02:Huber, Hans, Tel. 143:lusrlkurslben02: $ Bild 3-209: Beispiel head Das Kommando, um die letzten Zeilen einer Datei angezeigt zu bekommen (also nicht den Kopf, sondern den Schwanz): tail [-f] [-n] datei(en) I I SChwanz l Inumber Anzahl der letzten Zeilen ohne Angabe werden die letzten 10 Zeilen gezeigt following Wird die Datei gerade erstellt. konnen Sie hiermit verfolgen. welche Zeilen hinzukommen tail - Kommando, um die letzten Zeilen einer Datei anzusehen $ tail -2 benutzer ben02:Huber, Hans, Tel. 143:lusrlkurslben02: benOl ::Meier, Eva, Tel.446:lusrlkurslben01: $ Bild 3-210: Beispiel tail 337
3 UNIX - praktisch angewandt 3.10.3 Programme starten, und Sie gehen schlafen Ja, das ware toll, nur dem Rechner kurz die Aufgaben ubergeben und wah rend wir schlafen - oder den Tag genieBen - erledigt der Rechner unsere Arbeit. Gut vorbereitet, lieBe sich da sicher einiges bewerkstelligen. Doch ganz so weit wollen wir gar nicht gehen, uns hilft schon eine kleine Verbesserung. Angenommen, Sie mussen dringend zu einem Termin, wollen aber gerade noch einen zeitaufwendigen ProzeB starten. Damit jedoch in der Zwischenzeit niemand Unfug an Ihrem Rechner treibt, ware es sicherer, sich vorher abzumelden. Dies bedeutet im Normalfall, daB aile von Ihnen an diesem Terminal gestarteten und noch laufenden Prozesse ebenfalls abgebrochen werden. Um dies zu vermeiden, k6nnen Sie einem Kommando beim Aufruf den Status mitgeben, daB es unabhangig von dem VaterprozeB weiterlaufen soil. Allerdings so lite das Kommando dann im Hintergrund gestartet werden. Dies erfolgt mit: nohup Kommando & nOhangupl nohup - Kommando, um Prozesse auch nach einem logout weiterlaufen zu lassen Wenn Sie bereits auf einer grafischen Oberflache arbeiten, gibt es auch hierfur einfachere Methoden. Sie k6nnen softwaremaBig Ihr Terminal einfach abschlieBen. Die Anzeige am Bildschirm verschwindet (oft werden dann uber sog. Bildschirmschoner unterschiedliche Muster angezeigt) - wichtig aber ist, daB niemand, ohne Ihr PaBwort zu wissen und einzugeben, an diesem Terminal arbeiten kann. 1m nachsten Kapitel erfahren Sie mehr uber die wesentlichen Erleichterungen durch die grafische Oberflache CDE (Common Desktop Environment). Oberschlafen Sie erstmal das bisher uber UNIX Gelernte; ganz vergessen sollten Sie es allerdings nicht, denn trotz Drag and Drop und Windowing laBt sich nicht alles durch Mausklicken erreichen. Auch ist es wichtig, zu wissen, was im Hintergrund ablauft und noch wichtiger, immer direkt mit gezielten Kommandos ins Geschehen eingreifen zu k6nnen. 338
4 CDE - die grafische Benutzeroberflache unter UNIX 1m StraBenverkehr helfen uns Verkehrszeichen mit Symbolen, wichtige Informationen, Hinweise und Regeln schnell zu erfassen. Genauso schnell und sicher werden wir im CDE Ober Icons gefiihrt. Statt kryptischer Eingaben klicken wir auf vorgegebene Schaltflachen. Was dahintersteckt, wie Sie bequem mit Bi/dern arbeiten konnen und wie Sie die Schreibtischumgebung an Ihre BedOrfnisse anpassen, erfahren Sie in diesem Kapitel. Die einzelnen Themen: 4.1 Wie melden Sie sich an? 4.2 Die Desktop-Anzeige 4.3 Wie arbeiten Sie auf dem Desktop - der Arbeitsflache? 4.4 Wie aktivieren Sie weitere Arbeitsbereiche? 4.5 Wie arbeiten Sie mit dem Texteditor? 4.6 Welche Hilfsfunktionen bietet das CDE? 4.7 Der Dateimanager 4.8 Wie passen Sie das CDE an Ihre WOnsche an? 339 C. Wolfinger, Keine Angst vor UNIX © Springer-Verlag Berlin Heidelberg 2000
4 CDE - die grafische Benutzeroberflache unter UNIX 4.1 Wie melden Sie sich an? 1m Abschnitl 3.1.3 haben Sie erfahren, wie Sie mit einer grafischen Oberflache arbeiten. Auch wissen Sie bereits, wie Sie sich unter dem CDE an- und abmelden kennen. Sehen wir uns hierzu kurz nochmal das Anmeldefenster an: Welcome to UNIX Language Session -----I Command Une Login Reset Login Screen Bild 4 -1: Anmeldefenster im CDE Unter Options kennen Sie auf den meisten Systemen die Sprache vorab einstell en und, falls Sie doch nicht mit CDE arbeiten wollen, kennen Sie hier auf eine ASCII-Terminal-Einstellung (Command Line Login) oder auf eine andere zur VerfOgung gestellte X-Window-/Motif-Oberflache umschalten. Wenn auf Ihrem System die deutsche Sprache anwahlbar ist, erhalten Sie MenOs, Dialogboxen und evtl. Fehlerhinweise in deutsch, auch die Hilfe-MenOs sind zum greBten Teil ebenfalls in der ausgewahlten Sprache. Leider sind dagegen die UNIX-Manualseiten meistens nach wie vor in englisch. Da auf vielen Systemen englisch voreingestellt ist (bzw. nur verfOgbar ist), werden die englischen MenOs beschrieben, die aber im Aufbau identisch mit den deutschen MenOs sind. 340 Bild 4-2: Schreibtischumgebung - Arbeitsflache
4.2 Die Desktop-Anzeige 4.2 Die Desktop-Anzeige Sehen wir uns die Anzeige genauer an. Was verbirgt sich hinter den kleinen Bildchen? Schalffiache fUr Menuaufruf weitere Programme In einer ausTerminklappbaren kalender Bedientafel Zum AbschlieBen Ihres Bildschirms das SchloB Lichtkontroll Anzeige 1 Arbeitsbereiche Texteditor Oateimanager Abmelden vom System weitere Programme in einer ausklappbaren Bedientafel Oruckmanager Umgebungs- oder Style-Manager D 0 -tCD '0. <Il 0.. Hille Anwendungs- oder ApplicationManger Bild 4-3: Erlauterungen zur Oesktop-Anzeige Zu den einzelnen Punkten von links nach rechts: o Schaltflache fur Menuaufruf Nur an den markierten Stellen konnen Sie ein MenO aufrufen, um z. B. die Desktap-Anzeige zu verschieben oder zu verkleinern. Die MenOs konnen Sie mit der linken dder rechten Maustaste aufrufen. Verkleinern der Anzeige Anzeige an den unteren"----+ Bildschirmrand Bildschirm neu aufbereiten Abmelden - gleiche Funktion wie die Schaltflache EXIT Restore Wiederherstellen der Anzeige Move Minimize Lower Refresh Log out Verschieben, d.h. , Siekennen dann mit der linken Maus die Oesktop-Anzeige anwahlen, die Taste gedruckt lassen und die gesamte Anzeige dorthin verschieben, wo Sie sie gerne hatten. Bild 4-4: Oesktop-Anzeige - MenD o Uhr Hier sehen Sie immer die aktuelle Uhrzeit o Terminkalender mit Datum Auf dem ersten Blatt steht jeweils das aktuelle Datum. Mit Dappelklick erhalten Sie einen Terminkalender, in dem Sie Ihre Termine eintragen konnen. Sie haben hier sagar mehrere Kalender-Darstellungen zur VerfOgung, Obersichtskalender fOr das Jahr, den Manat die Wac he und den Tag - und aile werden Ober einmalige Eintrage gesteuert. 341
4 coe - die grafische Benutzeroberflache unter UNIX o Oateimanager Grafisch werden Directories und Dateien in Ordner und kleinen Kastchen dargestellt. Mit Hilfe von Maus und Dialogboxen werden die Dateien verwaltet. So k6nnen Sie z. B. Dateien kopieren, verschieben oder 16schen, ohne Kommandos einzugeben. Naheres Ober den Dateimanager erfahren Sie im Abschnitt 4.7. o Texteditor Mit dem Texteditor haben Sie jederzeit ein ,Blatt Papier< zur Hand und mOssen nicht erst nach einem Kugelschreiber suchen, sondern kennen schnell wichtige Gedanken notieren. Aber nicht nur fOr Notizen, sondern vor allem als Ersatz fOr den vi-Editor ist er einzusetzen. Mehr Ober den Texteditor im Abschnitt 4.5. o Bedientafel fiber dem Texteditor - auch diese kennen Sie bereits von Abschnitt 3.1, Bild 3-5 (Neues Terminal-Fenster unter CDE) auf Seite 40. Frei, um weitere Applikationen einzufUgen, Wie das funktioniert, erfahren Sie im Abschnitt 4.8 Oas Symbol fUr den Texteditor ist in die Hauptanzeige Gbernommen. Benotigen Sie ofter das Terminal, so empfiehlt sich, dieses in die Oesktop-Anzeige zu Gbernehmen. Wie, das erfahren Sie ebenfalls im Abschnitt 4,8. Klicken Sie das Terminal an, erhalten Sie ein neues Fenster, um UNIX-Kommandos einzugeben Oer Icon Editor und der Image Viewer sind nicht generell verfGgbar. Sie sollen hier nur als MOglichkeit angezeigt werden, daB weitere Applikationen in einer Bedientafel aufgenommen werden konnen (siehe arstes Symbol oben) Bi/d 4-5: Bedientafel Dber Texteditor 342 o Mail-Tool Abhangig von der Installation Ihres Systems erscheint das voreingestellte Mail-Programm. o Oas SchloB Falls Sie bisher schon mit dem CDE gearbeitet haben, kennen Sie bereits, wie Sie den Bildschirm abschlieBen: Einfach anklicken - doch wehe Sie haben Ihr PaBwort vergessen. Nur mit einem gOltigen PaBwort kann der Bildschirm dann wieder benutzt werden. Andernfalls kann Ihnen nur Ihr Systemverwalter weiterhelfen (ein neues PaBwort vergeben). Welches Muster als Schutz auf dem Bildschirm erscheinen soli, wird im Umgebungs- oder StyleManager eingestellt (siehe Abschnitt 4.8). o Arbeitsbereiche WuBten Sie schon, daB Sie nicht nur einen, sondern mindestens vier Bildschirme zur VerfOgung haben? Hinter jedem dieser kleinen Balken (One, Two, Three, Four) verbirgt sich eine neue Schreibtischumgebung. Es ist
Die Desktop-Anzeige 4.2 eine phantastische Einrichtung fOr all jene, die gleichzeitig mit mehreren Programmen arbeiten. Wenn Sie sich das Bild 4-2 ansehen, ist ja jetzt schon kaum mehr Platz, um z. B. mit FrameMaker ein Dokument zu bearbeiten. Denn sowohl Applixware als auch FrameMaker haben ja wiederum eine Reihe von Dialogboxen, Menus usw. Hier macht es Sinn, diese Verarbeitungen unter einem anderen Arbeitsbereich aufzurufen. Wie, das erfahren Sie im Abschnitt 4.3. o Lichtkontrollanzeige Wenn das Licht blinkt, zeigt es an, daB das System gerade Aktionen durchfOhrt. o Exit Auch diese Schaltflache haben Sie bereits kennengelernt. Einmal anklicken, und Sie erhalten ein Menu, ob Sie wirklich schon aufhoren wollen zu arbeiten bzw. Ihre Sitzung am Bildschirm been den mochten. o Druckmanager Der Pfeil daruber zeigt an, daB sich noch weitere Anwendun- ~ Persona en gen dahinter verbergen. Je nachdem welche Drucker vom Sylnatallcon stemverwalter fur Ihren Rechner installiert wurden, erscheinen hier die moglichen Drucker. 1m Dateimanager werden Sie kenDefault nenlernen, daB Sie lediglich eine Datei mit der Maus anzuwahlen und auf das Drucksymbol zu ziehen brauchen, damit sie Pnnt Managor ausgedruckt wird. Klicken Sie den Printmanager an, erhalten Sie eine Obersicht der noch abzuarbeiteten Druckauftrage. BNd 4 - 6: Bedientafel fOr Drucker o Umgebungs- oder Style-Manager Mit diesem Tool passen Sie Ihre Schreibtischumgebung so an, wie Sie es gerne hatten. Aus dem Icon erkennen Sie schon, was Sie z. B. verandern konnen: die Mausfunktionen (ob schnell oder langsam), die Farben, Schriftarten oder den Bildschirmhintergrund. AuBerdem wird hier eingestellt, ob und welcher Bildschirmschoner eingesetzt werden soil. Einige Tastaturfunktionen und noch einiges mehr kann geandert werden. 1m Abschnitt 4.8 werden die wesentlichen Anpassungen gezeigt. o Anwendungs- oder Application-Manager Unter diesem Menu werden Ihnen u.a. mogliche Programme angeboten, die Sie mit drag and drop in Ihre Bedientafeln ubernehmen konnten. Auch hieruber mehr im Abschnitt 4.8. o Hilfe-Menu Unter dem Symbol ,Bucher, finden Sie die fOr die CDE-Umgebung notigen Informationen. Unter der Bedientafel sind oft noch komfortable Suchprogramme installiert, mit den en Sie Informationen uber Ihr System und uber UNIX-Kommandos abrufen konnen. Auch hier hangt es von der Installation des System ab, welche Hilfe-Kataloge Ihnen hier angeboten werden. 343
4 CDE - die grafische Benutzeroberflache unter UNIX o Papierkorb Wie Sie spater beim Dateimanager erfahren, konnen Sie mit der Maus Dateien anklicken, ,festhalten, und in den Papierkorb ziehen (wegwerfen - und achten Sie dabei darauf, wie das kleine Bildchen darauf reagiert). Der groBe Vorteil, gegenOber dem rm-Kommando ist, daB notfalls die Dateien auch wieder aus dem Papierkorb herausgeholt werden kennen, solange Sie ihn nicht ausdrOcklich 'geleert, haben. Wie die ,MOliabfuhr, funktioniert, erfahren Sie im Abschnitt 4.7. Doch bevor wir Dateien erstellen und wegwerfen , sehen wir uns kurz eine nette CDE-Anwendung an, die nOtzlich sein kann, wenn Sie immer Zugang zu Ihrem Rechner haben: 4.2.1 Der Terminkalender Klicken Sie das Symbol einfach mal an. Die Eingaben sind selbsterklarend (CDE-like), so daB es reicht, hier nur kurz die Darstellung einer Kalenderart und die Dialogbox zum Editieren der Termine zu zeigen: Um einen Termin zu selzen, wllhlen Sie das Menu Edit und erhallen nebenslehende Dialogbox, in der Sie die Termine edilieren wobei Sie gleichzeilig einen ,Weckdiensl, einrichlen k6nnen ~';';';';r- 'noqUeftC, _____----II 3 ,OO Abschluu ==== Inwrt 344 Bild 4-7: Beispiel Terminkalender _..... luc h
4.3 Wie arbeiten Sie auf dem Desktop - der Arbeitsflache? 4.3 Wie arbeiten Sie auf dem Desktop - der Arbeitsflache? So wie bei der ersten kleinen Anwendung, die wir uns angesehen haben, sind die meisten Programme unter CDE aufgebaut - selbsterklarend. Doch ein paar Hinweise sind recht hilfreich, um nicht zu lange Zeit beim Probieren (oder sollte man sagen Spielen) zu verlieren. Bei der EinfOhrung in die grafische Oberflache (Abschnitt 3.1.3) haben Sie die wichtigsten Schritte bereits kennengelernt und wissen, wie Sie ein Terminalfenster erhalten und sich auf der Schreibtischoberflache bewegen, wie Sie Fenster vergrOBern, verkleinern, verschieben und wie Sie Texte von einem Fenster zum anderen kopieren. Dies hatte bisher ausgereicht, um UNIX-Kommandos zu starten und Texte zu erstellen. Viele von Ihnen werden auf Ihrem Rechner Software einsetzen, die speziell fOr Ihren Arbeitsbereich die notigen Werkzeuge bereitstellt. Wie werden diese Programme unter dem CDE gestartet? Hier gibt es mehrere Moglichkeiten: 1. So wie wir bisher unsere Kommandos aufgerufen haben, geben Sie uber ein Terminalfenster den Programm- oder Kommandonamen ein. (Wie Sie ein Terminalfenster erhalten, ist auf Seite 40 beschrieben.) In der Regel hat Ihr Systemverwalter die Variable PATH fOr aile Benutzer um jene Directories erganzt, unter denen die in Ihrem Betrieb benotigte Software aufgerufen wird. Wenn nicht, konnten Sie uber find herausfinden, unter welchem Directory die Software gespeichert ist und Ihre Variable PATH selbst erganzen. 2. Auf der freien Arbeitsflache drucken Sie die rechte Maustaste. Ober ein Menu, das vom Systemverwalter zusammengestellt wird, konnen Sie die fOr Sie wichtigen Programme auswahlen. Beispiel eines Menus: COE Workspace Lock Screen COE-Programms OW-Programms -<> -<> Standard Applications -<> Application Groups Support Tools Utilities Log out -<> -<> - FrameMaker 4.0 FrameMaker 5.0 - Appllx 4.2 (US) Applix 4.2 (GY) Lotus Wingsz Netscape -- Bi/d 4-8: Arbeitsf/ache - Beispiel eines MenOs 3. Ober den Dateimanager wahlen Sie die Programmdatei in dem entsprechenden Ordner und starten dieses durch Doppelklick. 4. Dateien, die von bestimmten Programmen erzeugt wurden (z. B. FrameMaker-, Applix- oder tiff-Dateien, wie wir sie spater in unserem Muster sehen) konnen durch Doppelklick das dazugehorige Programm starten. Hierzu ist ebenfalls eine Voreinstellung durch den Systemverwalter notwendig. Arbeiten Sie mit mehreren Program men gleichzeitig, konnte es eng auf Ihrem virtuellem Schreibtisch werden. Durch Ikonisieren von gerade nicht benotigten 345
4 COE - die grafische BenutzeroberfHiche unter UNIX Fenstern (Sie erinnern sich, die kleine Schaltflache mit dem Punkt auf der rechten oberen Ecke eines Fensters) bleibt Ihre Arbeitsflache zwar einigermaBen ubersichtlich, doch einfacher ist es, auf weitere Schreibtische auszuweichen. 4.4 Wie aktivieren Sie weitere Arbeitsbereiche? Um auf einen zweiten, dritten oder vierten virtuellen Schreibtisch zu arbeiten, brauchen Sie nichts weiter zu tun, als auf den Balken mit Two, Three oder Four zu klicken. Ein leere Arbeitsflache erscheint auf dem Bildschirm mit der Desktop-Anzeige. ...... IY, [ :"-~; i~~~Li·~ ~==:-~-.!;i "~--;;~~l BUd 4-9: Neuer Arbeitsbereich Hier konnen Sie weitere Terminalfenster, Dateimanager oder entsprechende Programme starten. Um wieder zu Ihrem ursprunglichen Desktop zuruckzukehren, klicken Sie den Balken mit One. 1m Abschnitt 4.8 erfahren Sie, wie Sie den verschiedenen Arbeitsbereichen Namen, unterschiedliche Farben und Hintergrunde vergeben konnen und, falls Ihnen die vier Schreibtische nicht ausreichen, auch noch weitere hinzufUgen konnen. Unter dem CDE sind Ihrem Arbeitsdrang keine Grenzen gesetzt - es sei denn, der Rechner ist nicht mit ausreichendem Speicher ausgerustet, denn gleichzeitig mehrere Programme zu starten und verschiedene farbige Schreibtische zu steuern, kostet entsprechenden Speicherplatz. Sie merken es spatestens daran, daB dann neue Aktionen langsamer werden. Es kann dann auch mal unter UNIX passieren, daB Ihr Rechner streikt. Doch meistens laBt sich noch ein Terminal offnen und uber ps -ef sehen Sie, welche Prozesse u. U. den Rechner blockieren. Diese konnen Sie dann uber kill abbrechen. 346 Sie sehen, das bisher Gelernte ist auch bei der grafischen Oberflache gut anzuwenden und war nicht vergebens.
Wie arbeiten Sie mit dem Texteditor? 4.5 4.5 Wie arbeiten Sie mit dem Texteditor? Kein Vergleich zum vi - wie schon! Sie benotigen keine Befehle, Sie starten den Texteditor und konnen sofort intuitiv dam it arbeiten qook and fee~. Ober MenOs wird Ihnen angezeigt, wie Sie korrigieren, sichern und neue Dateien offnen konnen. 4.5.1 Wie starten Sie den Texteditor? ODie einfachste Art ist, das Bildchen mit dem Notizzettel anzuklicken. Es wird ein neues Fenster geoffnet, und Sie konnen in dieser neuen Datei bereits munter darauf losschreiben. o Wenn Sie eine bestehende Datei verandern wollen, konnen Sie im Dateimanager die entsprechende Datei mit einem Doppelklick offnen. Bei ASCIIDateien wird der Texteditor automatisch gestartel. o Eine andere Moglichkeit ist, im bereits gestarteten Texteditor aus der MenOzeile File ---+ Open zu wahlen. Es offnet sich dann eine Dialogbox, Ober die Sie die gewOnschte Datei suchen und auswahlen konnen. o Mit Include konnten Sie eine weitere Datei in die bestehende Datei an der Stelle einfOgen, wo der Text-Cursor (siehe hierzu Seite 37) stehl. Es erscheint die gleiche Dialogbox wie bei Open, um die Datei auszuwahlen. New Open Include Save Save as Print Close Ctr1+P Alt +F4 Bild 4-10: Texteditor - MenD File Sehen wir uns die Dialogbox, um Dateien auszuwahlen, an: Text Editor Open a file Das aktuelle Directory wird angezeigt, bzw. jenes, das sie unter Folder mit Doppel klick auswahlen. Siekennen jedoch auch direkt das gewOnschte Directory eintippen Hier wahlen Sie das Directory aus (1m CDE als Ordner bezeichnet). Klicken Sie die zwei Punkte an, wechseln Sie in das nachsthohere Directory Uber einen Filter (dahinter verbirgt sich die uns bekannte Dateinamenexpansion) konnen Sie die Auswahl der Dateien einschranken -ill< home dead _leiter desktop Ooku --+- - - --- Die der Auswahl entsprechenden Dateien werden hier angezeigt. Mit der Maus wahlen Sie hieraus eine Datei, und diese wird dann in dem unteren Feld eingesetzt. Sie kennen natOrlich auch die Datei direkt angeben Bild 4-11: Texteditor - Dialogbox, urn Dateien auszuwahlen Wie Sie im obigen Beispiel sehen, ist es nicht einmal notig, den Pfad- und Dateinamen einzugeben, sondern diese nur mit der Maus anzuklicken. 347
4 CDE - die grafische Benutzeroberflache unter UNIX 4.5.2 Wie konnen Sie Texte verandern? Ganz einfach. Sie gehen mit dem Maus-Cursor an die Stelle, an der Sie etwas einfOgen wollen, und geben den Text ein. Um zu loschen, markieren Sie den Text (wie, wurde im Kapitel 3.1 auf Seite 41 beschrieben) und wahlen aus der MenOzeile Edit ~ Cut. Hier sehen Sie dann auch, daB Sie mit der Tastenkombination <Ctrl+x > (also die Ctrl-Taste gedrOckt lassen und x eingeben) ebenfalls markierte Texte loschen konnen. Dies geht in der Regel schneller, als mit der Maus Ober verschiedene MenOs die gewOnschte Funktion auszuwahlen. Durch die Anzeige der moglichen Tastatureingaben im MenO konnen Sie sich die von Ihnen haufig genutzten Funktionen so nach und nach aneignen. Sehen wir uns einen Ausschnitt einer Textseite an. Mit Doppelklick wurde die Datei Gestalten.html mit dem Texteditor geoffnet. Es ist ganz interessant, was sich hinter HTML-Dateien fOr schreckliche Formatieranweisungen* verbergen (besonders fOr Umlaute) - doch uns interessiert hier nur, wie Sie mit dem Texteditor arbeiten konnen. ..... lext [dUor FIle EdIt Format OptiOns ] .....-- (,e,lallen hlml MenOzeile ~~D r 1!elp ~~L> <HEAD> <TITLE>Ges a 1ten</TITLE> <'-F,ltered from Applh"W3re WOrds. Release </HEAD> '.l on Tue luI 23 17:'2:23 1996-> <BODY> Gestalten lIOn Dokumenten <1'> zw, schen M.nschen ." rd ers t 1ebend'g durch Be onung und Gesten. Umgesetzt In Schnft .ntr&a .... , :l1t d,ese wl chtlge Ausdrucksform. L)n geschrlebenen Text dennoch schnell verst&auonl :ndl,ch zu v~LmilleJ.!1,~b!. tl....v~schlel!.enLGe~t~u'!!lSmet~den: _ _ _ _ _ _ _ _ _ 01 e Sprach. a Is Vers t&a....,' : nd'gung Unter dem MenOpunkt Edit finden Sie aile Befehle, die Sie zum Verandern von Dateien benotigen. Hierzu ein paar Erlauterungen: Die von Ihnen zuletzt durchgefUhrte Aktion (Ieschen. einfUgen, Formatiinderungen etc.) wird wieder ruckgiingig gemacht Schneidet den markierten Tex taus Kopiert den markierten Text FOgt den zuletzt geloschten od er kopierten Text ein Oberschreibt den markierten Toext mit Leerzeichen Lescht den markierten Text Markiert den gesamten Text in Ihrer Datei Offnet eine Dialogbox, mit der Sie nach Wortern oder Satzen in der Datei suchen kennen Startet ein Zusatzprogramm, das die Rechtschreibung OberprOft - Undo Ctrl+z Cut Copy Pasle Ctrl+x Ctrl+c Ctrl+v Clear Delete Select all .. Find/Change Ctrl+f Check Spelling Bild 4-12: Texteditor- Menu Edit 348 * HTML·Dateien lassen sich natOrlich mit hierfOr eigens entwickelten Textprogrammen generie· ren, kennen aber auch Ober den Texleditor veriindert werden.
4.5 Wie arbeiten Sie mit dem Texteditor? Wahlen Sie Edit -+ Find/Change aus, offnet sich die nachfolgende Dialogbox, in der Sie die Zeichen angeben, nach denen gesucht werden soli. Hierbei werden GroB- und Kleinbuchstaben beachtet. Unter Change to konnen Sie angeben, daB fOr den gefundenen Wert der hier eingegebene Text eingesetzt werden soil. ~=.,.:T..:=ext Editor Find/Change Hier geben Sie ein, nach was gesuchl werden soli, hier einen evtl. zu ersetzenden Wert sucht bis zum nachslen Vorkommen des Suchbegriffs andert den gefundenen Wert andert aile gefundenen Werte mit dem zu Ersetzenden mit dem zu Ersetzenden Bild 4 -13: Texteditor - Find/Change-Dia/ogbox 4.5.3 Wie konnen Sie Texte formatieren? DerTexteditor bietet mehr als nur ein reiner Editor. Ererlaubt, daB einfache Textformatierungen durchgefOhrt werden konnen. Der MenOpunkt Format enthalt folgende Unterpunkte: Ruf! eine Dialogbox auf, in der eingegeben werden kann , wie der Text ausgerichlel werden soli FOhrt die angegebenen Formal-Einslellungen fOr den Absatz durch FOhrt die angegebenen Format-Einstellungen fOr die gesamte Dalei durch - Settings Paragraph All Text Editor - Format Selling Ausrichlung des Textes: links rechls left M rgin Left Align Right Margin: 52 I Randeinslellung: links/rechts Anzahl der Zeichen Right Align als Blocksatz Justify mittig Center Paragraph t DurchfOhrung nur fOr den Absatz Close DurchfOhrung fOr die gesamle Datei Bild 4-14: Texteditor- Format 349
4 COE - die grafische Benutzeroberflache unter UNIX Unter dem Menu Options k6nnen einige Voreinstellungen gesetzt werden: Ais Standard ist der EinfUgemodus eingestellt. Mit Overstrike kennen Sie in den Oberschreibmodus umstellen - - - - - - i 0 Overstrike Insert 1st Wrap to Fit eingestellt, wird automatisch, entsprechend der FenstergreBe die Zeile umgebrochen. Sonst muBte jeweils Wrap to Fit mit Return in die nachste Zeile geschaltet werden Statusline Wird Statuslinie angeklickt, erscheinl in der Datei am unteren Rand eine Slatuszeile, in der Informationen uber die Datei enthalten sind (Anzahl der Zeilen, welcher Modus eingestellt ist, EinfUge- oder Oberschreibmodus u.l!.) Bild 4 -15: Texteditor - Menu Options AbschlieBend noch einige Tastatur-Befehle im Oberblick: Texteditor beenden @+E) Markierten Text kopieren @+0 Markierten Text ausschneiden @+0 Markierten Text 16schen @ W~1:~) Suchen und Ersetzen @+QJ Einfugen der letzen L6schung/Speicherung @+0 Ausdrucken der Datei @+0 Gesamten Text auswahlen @)+C] Undo - Ungeschehen machen @+0 Zeichen nach links loschen @ ~~~t<e) Zeichen nach rechts loschen §D (Entfernen) Zeichen bis zum Ende der Zeile loschen @+§D Zeichen zuruck bis zum Anfang der Zeile loschen Umstellen auf Uberschreib-/Einfugemodus Den Text-Cursor nach oben, unten, rechts und links 350 (Re- 0+§D turn) @ CDCD88 Zum nachsten Absatz @+CD Zum vorherigen Absatz @)+CD Zum Beginn der Zeile (Hom~ Zum Ende der Zeile (End] Zum Beginn der Datei @) +[Hom~ Zum Ende der Datei @+[End] Bild 4-16: Texteditor - Tastatur-Befehle
4.5 Wie arbeiten Sie mit dem Texteditor? Falls auf Ihrem System die Tasten nicht so belegt sind wie angegeben, fragen Sie am besten Ihren Systemverwalter. Um vorwarts und rOckwarts in einer Datei zu blattern, nutzen Sie am besten den Rollbalken am rechten Rand des Fensters. Ja, was soli man noch erklaren? 1m Grunde ist, wie eingangs erwahnt, der Texteditor so einfach zu bedienen, daB Sie alles selbst herausfinden werden. Falls dennoch eine Frage offen bleibt, rufen Sie am besten das HilfemenO auf. file Idit Vol u me" ~earch Text Editor - Hel _avigate !:!elp T~ EClJlOr He p Ten EdItOr Help T.bl. of Contents TutEditor Task. Text Editor Reference • Editing and Cursor Keys • Unix Key Bindings T" lIl E.ll... M. . . Ie?<! Ed"or Menu Accelerators Ie?<! Ednor File Menu Tel<! Ed"or Ed" Menu Te?<! Ednor F onnat Menu Ie?<! Edn0r Oplions Menu Ie?<! Ednor Help Menu • Ie?<! Editor Window • lex! Edjlor Open a File Dialog Box • Tel<! EdUor Save As Dialog Box • leI<! Editor Save Dialog Box • Tex! Ednor Include a File Dialog Box • Tex! Editor Spell Dialog Box Bild 4-17: Beispiel einer Hilfe-Menu-Seite 351
4 CDE - die grafi sche Benutzeroberflache unter UN IX 4.6 Welche Hilfsfunktionen bietet das CDE? Sie haben sicher schon bemerkt, daB in den meisten MenOs und Dialogboxen immer ein kleine Schaltflache mit Help zu sehen war. Klicken Sie diese Schaltflache an, erhalten Sie Ober das gerade angewahlte MenO die entsprechenden Informationen. AuBerdem haben Sie Ober die Desktop-Anzeige immer den Zugriff auf samtliche HilfemenOs. In der Bedientafel oberhalb des Helpmanagers sind meist noch detaillierte Beschreibungen anzuwahlen, wie in diesem Beispiel fOr Desktop Introduction und Front Panel (Desktop-Anzeige). Doch auch diese Bedientafel ist abMngig von der jeweiligen System installation und kann individuell verandert werden. Rufen wir als Beispiel den Help-Manager fOr unser nachstes Thema, den File Manager, auf: Help f ile i dit Hel Help Manager Desktop Introduction Front Panel Help Hiermit ktinnen Sie jeweils zUrUck zu Ihrer letzten Hilleaktion In einer Uste sind aile Ihre Hilfe-Aktionen aufgefi.ihrt, und sie ktinnen durch Anklicken darauf zUrUckgehen Durch Doppelklick wird das angewahlteThema angezeigt. 1st ein Text unterstrichen, ktinnen uber Hypertext jeweils weitergehendelnformationen aufgerufen werden FlleM T ..... _FlleM~_ • To Select a Sinole fll. or Folder • To Select Munl o" Flies or Folders • To Get Help on a file or folder • To Drag and prop, Ell. or Fold" • To C(eale a New FUe or Folder Folger • To Open a Ene or EOlger • To Rename a file or • To Moye , fl'. Or fOlqer • To Copy a File or Eolder • To ertal, , SymboJtc LInk • Tp Execyto an Actign (p' a FHa pc Fglder Bild 4 -18: Das Hilfe-Menii 352 Hier erhalten Sie ein alphabetisch sortiertes Stichwortverzeichnis aller mtiglichen Begriffe, Dber die Sie nahere Informationen abrufen ktinnen
4.6 Welche Hilfsfunktionen bietet das CDE? Ober den MenOpunkt Search erhalten Sie eine Dialogbox, Ober die Sie nach bestimmten Begriffen suchen kennen. Sie erhalten dann eine Liste mit der Anzahl der gefunden Textstellen, unterteilt nach den Bereichen: Help Index Search Search +55 _ _ _ "", . 2., Cek:......... +]7S c_"'" + ,~o ... _ " ' " + 17 c~. Ad_ HIlt ... 12 Ofttla, ..... 3yIl_ • .S f,."..' ........ • ... "OI'I~or ..... • 255 _ v _ " " , I"" .205 DMila, + 40 l~ _ _ "", + ~, hbIIIIIfHlfp • 43 IPIWbi ..... • 32 SfttlCln~ Slart Searc h Help Bild 4-19: Help -Index Search Klicken Sie einen der Bereiche an, erhalten Sie die darin gefundenen Begriffe und wiederum mit weiterem Klicken die entsprechenden Beschreibungen hierzu. Sie kennen die Suche auf das aktuelle Kapitel (Current Help - Top Level), auf samtliche HilfemenOs oder auf das gerade Angewahlte einschranken. 353
4 COE - die grafische Benutzeroberflache unter UNIX 4.7 Der Dateimanager Um Dateien zu verwalten, werden diese, wie wir in Kapitel 3.1 erfuhren, in Directories strukturiert. Wie eine Ablage mit lauter Schubladen und Ordnern. Und dies ist auch das Symbol fOr den Dateimanager. In Kapitel 3.1 hatten Sie nachfolgendes Bild schon einmal gesehen. Dort wurde es hauptsachlich deshalb gezeigt, um die Baumstruktur zu verdeutlichen. Sehen wir uns nun das Bild etwas genauer an: ~__~~~______~F~I~le~M~a~n~a~ge~r_-_t~e~m~p~lr~2~~~==~____~1._·L~=fl f.lle / tlelp home tempi r2 /home/tempi r2 Klicken Sie auf dieses Symbol, wechseln Sie in den nilchstMheren Ordner Je nach Ursprungsprogramm haOOn die Dateien unterschiedliche Darstellungen. Hier ein uOOr das Imagetool erstelltes Abbild eines Bildschirmabzugs als tif-Datei gespeichert I 58 Items 38 Hidden Hier ein paar weitere Symbole, die bestimmte Dateitypen darstellen: Ein Ordner, dahinter verbirgt sich ein Directory ~r----. _ Eine Shell-Prozedur, die unter der Bourne-Shell ablauft bzw. der Korn-Shell oder der C-Shell - - So sind allgemein ausfOhrbare Dateien gekennzeichnet ... • 354 ___ Dies hier ist eine Textdatei (ASCII), sie wOrde durch einen Doppelklick automatisch durch den Texteditor ge6ffnet werden --- Dies ist das Symbol fOr eine mit compress verdichtete Datei FOr die einzelnen Programme wie FrameMaker, Applix, Lotus oder --- mit tar erstellte Dateien gibt es noch weitere unterschiedliche Icons. Der Systemverwalter kann Dateitypen bestimmten Programmen zuordnen, die dann automatisch gestartet werden Bild 4 -20: Dateimanager - einige Dateitypen
Der Dateimanager 4.7 Viele Kommandos, die wir im Kapitel 3.4 kennengelernt haben, konnen wir unter dem Dateimanager mit links (falls Sie die Maus mit der linken Hand fOhren) bzw. rechts erledigen. Hier eine kleine Obersicht: UNIXKommando Aktionen im Dateimanager cd Durch Anklicken des entsprechenden Ordners oder uber Go Home oder GoUp oder Go To das Menu File Is Entfallt eigentlich - Sie sehen generell die Dateien, Sie konnen allerdings uber ein Auswahlmenu steuern, was und in welcher Sortierung es angezeigt werden soli (dies entspricht dann den verschiedenen Optionen von Is). Die Dialogbox Set View hierfur erhalten Sie uber das Menu View Options (Bild 4-25 auf Seite 358) mkdir Einen neuen Ordner erstellen Sie uber das Menu File ---> New Folder (Bild 4-23 auf Seite 357) cp Um Dateien zu kopieren, wahlen Sie diese per Maus an (fOr die erste mit linker Maustaste), drucken dann die etrl- Taste und lassen sie solange gedruckt, bis Sie aile weiteren Dateien mit der Maus angeklickt haben. Eine noch schnellere Methode ist, falls die Dateien zusammenhangend liegen, die linke Maustaste zu drucken, gedrGckt zu lassen und sie uber aile Dateien zu ziehen, die Sie auswahlen mochten. Sind die Dateien ausgewahlt, konnen Sie das Menu Selected ---> Copy (Bild 4-23 auf Seite 357) aufrufen und geben den Namen der neuen Datei an oder das Ziel-Directory. Schneller geht es, wenn Sie nach dem Auswahlen der Datei(en) die etrl-Taste driicken und gedriickt lassen und mit der Maus dorthin ziehen, wohin sie kopiert werden soll(en). Auf diese Art konnen Sie auch ganze Dateibaume kopieren. mv (umbenennen) Um Dateien umzubenennen, wahlen Sie die Datei an, gehen in das Textfeld und korrigieren einfach. Mit der ReturnTaste wird die neue Beschriftung ubernommen. mv (verschieben) Um Dateien in einen anderen Ordner zu legen, mussen beide Ordner sichtbar sein. Am einfachsten, Sie starten ein zweites Fenster mit dem Ordner, in den Sie kopieren wollen. Wahlen Sie dann die Datei, Dateien oder einen Ordner aus (Auswahl mehrerer Dateien siehe bei cp) und ziehen Sie sie in den gewunschten Zielordner. 355
4 CDE - die grafische Benutzeroberflache unter UNIX UNIXKommando Aktionen im Dateimanager chmod Das Kommando unter UNIX ist ja Dateiname etwas aufwendig. Unter CDE brauChange Permission chen Sie nur noch in einer Dialogbox Put in Workspace anzuklicken, welche Rechte fOr wen Put in Trash gesetzt werden sollen. Das Menu hierzu kann mit der rechten MaustaBild 4-21: Pop-upste aufgerufen werden, sobald eine Menu Datei Datei oder ein Ordner angewahlt ist. Darin klicken Sie Change Permission an. Es effnet sich dann die Dialogbox (Bild 4-27). rm Sie wahlen die Datei oder Dateien aus und ziehen sie einfach in den Papierkorb oder wahlen mit der rechten Taste das Menu (siehe bei chmod) und klikken Put in Trash an. Ein Beispiel hierfur sehen Sie im Bild 4-29. find find ... -exec\ grep Auch dieses Kommando ist unter UNIX ja wirklich nicht einfach einzugeben - doch mit CDE kein Problem. Ober das Menu Find erhalten Sie eine Dialogbox, in der Sie die entsprechenden Suchkriterien angeben, ja in der Sie sogar innerhalb der gefundenen Dateien noch nach Mustern suchen kennen (Bild 4-28). Ip Ipstat cancel Dateien kennen einfach auf das Druckersymbol gezogen werden, um ausgedruckt zu werden (z. B. unsere Shell-Prozeduren). Fur umfangreichere Texte verwenden Sie sicher spezielle Programme (wie z. B. Applix oder FrameMaker). Diese Dateien mussen durch eigene Druckmenus erst aufbereitet werden, bevor sie gedruckt werden kennen. Hier verwenden Sie die internen Druckmenus der Programme. Bi/d 4-22: Vereinfachung von UNIX-Kommandos unter CDE Sehen wir uns nun die MenOs und Dialogboxen zu den oben aufgefOhrten Aktionen an. 356
4.7 Der Dateimanager Die Menus des Dateimanagers: fi la Menu File ~alected ~I ew ~ New Folder New File Go Home Go Up Go to Find Hier offnet sich eine Dialogbox, und Sie geben den Namen und die Zugriffsrechte an Wechselt in den Ordner Ihres Home-Directories Zeigt den Inhalt des nachsthOheren Ordners Ober eine Dialogbox geben Sie das gewunschte Directory an Hier offnet sich eine Dialogbox, siehe Sild 4-28 Open Terminal Offnet ein Terminal-Fenster Close SchlieBt das Fenster mit dem Dateimanager Menu Selected nur aufzurufen, wenn Objekte ausgewahlt wurden Offnet eine Dialogbox, in der angegeben wlrd, wohin die Datei Move to Ctrl+c Copy 10 Copy as Unk Put in Workspace" - J r- verschoben oder kopiert werden soli. Mit Copy as Unk kann ein symbolischer Unk erslelll werden c- Die Datei kann als Unk mit einem Icon auf die Arbeitsflache gelegt werden , um sie z.B. schnell im Zugriff zu haben Pul in Trash" Rename Die ausgewiihlten Objekte werden in den Papierkorb gelegt Ober eine Dialogbox kann ein neuer Name vergeben werden - I- Offnet eine Dialogbox, in der Sie die Zugriffsrechte iindern k6nChange Permissions nen (Sild 4-27) Ctrl+Backspace Ctrl+1 r- Wiihlt aile Objekte in dem gaoffnelem Ordner aus Select all Hebt eine vorgenommene Auswahl wieder auf Ctrl+\ _ Deselect all - c- • Diese Menupunkte bekommen Sie auch uber das Pop-Up-Menu (Sild 4-21), das Sie erhalten, wenn Sie eine Datei anklicken und die rechte Maustaste drUcken. Um das Icon auf der Arbeitsflache wieder zu entfernen, mussen Sie das Pop-Up-Menu aufrufen, das Sie im Icon selbst emalten, und Remove Workspace wahlen (Sild 4-24) Menu View: File Selected ~ I ew Open New View Offnet ein neues Fenster mit dem Dateimanager Sel View Options Offnet eine Dialogbox, in der Sie die Anzeige- und Sortierkriterien fUr den gaoffneten Ordner einstellen konnen (Slid 4-25) Save als Default Oplions Setzt die Optionen zur Anzeige auf den Standard zurUck Show Hidden Objecls Ctrl+s Zeigt die versteckten Dateien (z. B. mit. beginnend) OHnet eine Dialogbox, i nder Sie uber Filter bestimmte Dateien anzeigen lassen k6nnen (Auswahl uber Dateinamenexpansion) Set Filter Options _ _-+ Clean up Update Richtet die Icons im Fenster ordentlich aus _ ____+ Zeigt den aktuellen Stand des Ordners, falls zwischenzeitlich Anderungen erfolgten Bild 4-23: Dateimanager- Menus File, Selected und View 357
4 CDE - die grafische Benutzeroberflache unter UNIX Dateien, die als Icon auf die Arbeitsflache gelegt wurden, k6nnen nur uber das Menu Remove from Workspace zuruckgelegt werden. Das Menu erscheint, wenn Sie das Icon angewahlt haben und die rechte Taste drucken. Der Unk wird aufgehoben, und das Icon wird gelCischt Remove from Workspace Open Parent Folder Offnet den dazugeMrigen Ordner Rename - - - - - + - Benennt die Datei um (also auch die Originaldatei) Actions Zeigt evtl. Aktionen an, die die Datei betreffen I> Vorsicht: Wenn Sie das Icon in den Papierkorb werfen, wird auch die Originaldatei gelCischti Bild 4-24: Pop-up-MenO fOr auf die Arbeitsflache gelegte Dateien 4.7.1 Wie fOhren Sie die einzelnen Aktionen durch? Urn die Darstellung des Ordners und die Sortierung der Dateien zu verandern, rufen Sie das Menu View ---> Set View Options auf. Hier k6nnen Sie auswahlen, was und wie angezeigt werden soli: File Manager - SetVlew Options Headers Iconic Path Placement JAS PLaced Text Path Darstellung des Pfads z,B. ..iJ...il...J Message Line I (i Rows and Colu ns -j wie Die Dateien und Ordner kCinnen in Reihen oder einmal plaziert angezeigt werden Show (Ii By s lf19le Folder Representa {Ion Y:J By Name Only U 8y Tree (i By large Icons (i Folders only .J By Sma II ,j Folders then Files ,j8Y Icons a e, da e, slze_ ,j Folders and Files Direction Order (i Alphabetlca lIy (i Ascending ,jBy Fi le Type ,) Descending Angabe der Sortierung aufsteigend, oder absteigend JBy Date LJ By Size I -oi< - I -=- Apply I '""- Defaults I Cancel I He lp I Bild 4 -25: Dialogbox Set View Options 358 I Darstellung der Ordner als Baum-Hierarchie oder wie im Beispiel nur als Ordner Die einzelnen Objekte (Dateien, Ordner) als Icons (groB, klein) oder mit Name, Datum (etwa wie bei Is -I) nach Alphabet, Typ, Datum oder GroBe
4.7 Der Dateimanager Zusatzlich k6nnen uber das Menu View ---> Set Filter Options bestimmte Dateien oder Dateiarten ausgewahlt werden, die im Ordner angezeigt oder nicht angezeigt werden sollen. Hier wird eingeslelll, ob die nachfolgend ausgewahlten Daleien in dem Ordner nicht angezeigl (Hidden) oder angezeigt (Shown) wer~--+-~-~~----.., den sollen r----___ r---------:=:--..;...-:=::---:=~_F::::;::~i Durch Anklicken der Dateitypen werden sie ausgewahlt ~====~~===~=~~~~~~;~J Hiermit kennen aile Dateitypen, die im ... Ordner vorkommen, ausgewahlt werden bzw. die Auswahl kann aufgelest werden ~-==========""i Ober Dateinamenexpansion kennen hier Auswahlkriterien angegeben werden, I ::....:.~::..:.-.,~=~==~..:.~-=:.:.-.:.::.::...::_.J1 welche Dateien nicht angezeigt werden ... sollen (wie hier aile mit. beginnenden ) Bild 4 -26: Dia/ogbox Set Filter Options Andern der Zugriffsrechte Um die Zugriffsrechte zu andern, k6nnen Sie Change Permissions im Menu Select oder im Pop-up-Menu der entsprechenden Datei (siehe Bild 4-21) anwahlen. Sie erhalten dann nachfolgende Dialogbox: Anzeige der Datei (Typ/lcon) TfF relm 1510n<! Read Owne • Wr e • J Hier klicken Sie einfach an, wer was darf (Entgegen dem Kommando chmod bedarf es hier eigentlich keiner weiteren Erklarung) Bild 4 -27: Dia/ogbox Permission - Andern von Zugriffsrechten 359
4 CDE - die grafische Benutzeroberflache unter UNIX Finden von Dateien oder Dateiinhalten Um Dateien zu finden, kennen Sie unter UNIX das Kommando find. Einfacher geht es natOrlich im CDE. Hier wahlen Sie unter der Menuzeile File -> Find und erhalten nachstehende Dialogbox. Tragen Sie hier den Dateinamen ein, woOOi Sie Dateinamenexpansionen verwenden konnen (im Kapitel 3.2 im Bild Bild 3-53 auf Seite 99 zusammengefaBt) Statt mit -exec und grep geOOn Sie hier einfach ein, nach welchen Inhalten in den gefunden Dateien gesucht werden soli Diese EingaOO entspricht dem Start-Directory unter find. GeOOn Sie nichts ein, wird das aktuelle Directory genommen Aile gefundenen Dateien/Directories werden hier angezeigt. Um weitere Informationen GOOr die Datei zu emalten, offnen Sie den Ordner, in dem sie gefunden wurde, oder Sie legen sie als LinkIcon' auf Ihren Arbeitsbereich und konnen sie z.B. durch Doppelklick offnen. Bild 4 -28: Dia/ogbox Find • Link-Icons auf dem Arbeitsbereich sollten nur Gber das Pop-up-Menii Remove from Workspace (siehe BUd 4-24 auf Seite 358) zuriickgelegt werden. Wenn Sie sie in den Papierkorb werfen, wiirde auch die Originaldatei mitgeloscht werden. 360
Der Dateimanager 4.7 4.7.2 Loschen von Dateien - Entleeren des Papierkorbs Sie haben schon gehOrt, daB Dateien unter dem CDE nicht sofort gel6scht werden wie beim rm-Kommando, sondern erstmal in den Papierkorb gelegt werden. Dies geschieht entweder dadurch, daB Sie ein Datei-Icon in den Papierkorb ziehen oder uber das Pop-up-Menu der Datei (Bild 4-21) Put in Trash anwahlen (dies k6nnen Sie auch, wenn Sie z. B. mehrere Dateien markiert haben, uber das Menu Select -+ Put in Trash erreichen). Die Dateien sind zwar dann aus dem Ordner entfernt, nehmen aber nach wie vor Platz auf der Platte ein. Um sie nun endgOitig zu 16schen, mussen Sie den Papierkorb ausleeren. Vorab sollten Sie vorsichtshalber einen Blick hineinwerfen. Klicken Sie den Papierkorb an, eltnet sich dieses Fenster Wenn Sie ein Icon auswiihlen, kennen Sie mit der rechten Taste das Pop-up-Menu aulrulen: Blume.mit.backup Pull back Shred - Name der ausgewiihlten Datei Hiermit wird die Datei zUrUck in den ursprunglichen Ordner gelegt Mit Shred i,zerrei8en, in den Rei8wolf geben) erhalten Sie zur Sicherheit nochmal eine Warnung, bevor Sle mit ~hred When tr .. ~h obJe~ts f Ie s a,e shredded, they are permanently rerTlOlled rom you, IllS tem OK Ihre Zustimmung zur endgultigen Zersterung der Datei(en) geben oder mit Ca ncel die Aktion wieder abbrechen Klicken Sie File an, erhalten Sie das Menu: Select all OeselctAlI Put Back r---shred Set View Options _ r clOse _ Hiermit kennen Sie aile Dateien im Papierkorb auswiihlen, die Auswahl wieder aulheben, aile ausgewiihlten Dateien in die ursprUnglichen Ordner zurucklegen, aile ausgewahlten Dateien leschen (wie oben erhallen Sie vorab eine Warnung, die Sie bestatigen mussen) Hiermit kennten Sie Voreinstellungen zur Ansicht eingeben Mit Close wird der Papierkorb wieder geschlossen Bild 4-29: Wie entleeren Sie den Papierkorb 361
4 CDE - die grafische Benutzeroberflache unter UNIX 4.7.3 Automatisches Starten von Kommandos Wenn Sie eine Textdatei doppelt anklicken, wird, wie wir schon hOrten, automatisch der Texteditor aufgerufen. Je nach Systeminstallation konnen durch Doppelklick auf andere Dateien ebenfalls entsprechende Programme gestartet werden (wird z. B. bei einer Datei erkannt, daB sie von FrameMaker erstellt wurde, wird das Programm FrameMaker auch gleich gestartet). , handelt es sich um eine ausfOhrSehen Sie eine Datei mit diesem Symbol bare Datei (chmod +x, bzw. bei den Zugriffsrechten wurde executable angewahlt). Hierbei so lite es sich dann auch um ausfOhrbare Programme bzw. ShellProzeduren handeln. Wenn in der ersten Zeile einer Shell-Prozedur ein RunKommando (z. B. #!/bin/ksh) eingegeben wurde, erscheint stattdessen das entsprechende Shell-Symbol Klicken Sie das Symbol kurz zweimal an (Doppelklick), erscheint die Dialogbox, in der Sie evtl. Optionen und Argumente zu diesem Kommando erganzen konnen. Actoon Run nl r Ih following Inform lion "1 Option Al'9um 111 o nc I Bild 4-30: Dialogbox fur Kommandoaufrufe Sie starten das Kommando, in dem Sie OK drOcken. Es ist tatsachlich eine neue Ara unter UNIX angebrochen, die verspricht, doch wesentlich benutzerfreundlicher zu sein, als wir sie im Kapitel 3 kennengelernt haben. Damit Sie sich auch wirklich in einer ,freundlichen< Umgebung befinden, konnen Sie Ihren Arbeitsbereich so gestalten, wie Sie sich darin wohlfOhlen, Ihre Lieblingsfarben wahlen und noch einiges mehr. Wie, erfahren Sie im nachsten Kapitel. 362
4.8 Wie passen Sie das COE an Ihre Wunsche an? 4.8 Wie passen Sie das COE an Ihre WOnsche an? Kochen Sie geme? Wenn ja, wissen Sie, daB es wichtig ist, sich aile Zutaten und moglichen Gerate bereitzulegen, um sich ganz dem Gelingen eines Gerichtes zu widmen. Dies gilt sic her nicht nur tors Kochen. Auch auf unserem Schreibtisch sollten wir die Dinge, die wir oft benotigen, schnell im Zugriff haben. 1m CDE bietet sich hierfOr die Desktop-Anzeige an. 4.8.1 Andern der Oesktop-Anzeige Wenn Sie z.B. ein neues Terminal-Fenster ofter benotigen als den Texteditor, konnen Sie die Anzeige entsprechend andem. Offnen Sie hierfOr die Bedientafel (subpanef) oberhalb des Notizblocks. Gehen Sie mit der Maus neben das TerminalSymbol und rufen mit der rechten Maustaste das Menu auf: Hiermit wird das danebenstehende Symbol in die OeskCopy to Main Panel - top-Anzeige Obemommen Install Icon Text EdItor Delete Temllnal' Icon Editor Help _ _ Mit Delete wird das Symbol aus der Bedientafel geloscht f-- Auf! das Hilfemenu auf Wenn Sie Copy to Main Panel angeklickt haben, erscheint soforl die neue Anzeige Bild 4-31: Obernahme von Symbo/en aus der Bedientafe/ in die Desktop-Anzeige Sollten Sie die angebotenen Programme in der Bedientafel nicht benotigen, konnen Sie diese mit Delete loschen. Wie Sie neue Programme hinzuzutogen, sehen Sie im nachsten Beispiel. 363
4 CDE - die grafische Benutzeroberflache unter UNIX Hinzufi.igen einer Bedientafel und Erganzen der Programmauswahl Bei Symbolen, uber denen bisher kein Pfeil ist, konnen Sie eine Bedientafel (sog. subpanel) hinzufOgen. Hierfur klicken Sie mit der rechten Maustaste neben oder auf das Symbol, z. B. die Uhr und wahlen aus dem dann angezeigten Menu Add Subpanei Gehen Sie mit der Maus neben oder auf das Symbol und rufen Sie mit der rechten Maustaste das MenO auf: Add Subpanel FOg! eine Bedientafel hinzu Delete Subpanel Loscht eine Bedientafel Help Ruf! das HilfemenO auf Bild 4-32: HinzufOgen einer Bedientafel Um ein weiteres Programm in ein Bedienfeld einzubinden, offnen Sie die Schublade mit den Werkzeugen, den Application Manager. Sie erhalten ein Menu, in dem mogliche Programme nach verschiedenen Rubriken sortiert sind. In unserem Beispiel wahlen wir unter Desktop-Tools das Programm fOr eine DigitalUhr. Das Programmsymbol ziehen wir einfach auf den hierfur vorgesehenen freien Rahmen zum Installieren von weiteren Program men, und schon konnen Sie zwischen einer Analog- oder Digital-Zeitanzeige wahlen. 1. Programm anwi:ihlen I~ I 2. In die leere Fli:iche von Install Icon zieh~e~n_ _~~~~!.!!:~~~=~~~~~~~==-~ -~P~ I pacl 3. Fertig, wir konnen nun auswahlen. welche Uhrwir wOnschen 364 Bild 4-33: HinzufOgen von Programmen
4.8 Wie passen Sie das CDE an Ihre Wiinsche an? Auf diese Art und Weise kennen Sie naturlich auch weitere Programme in die anderen Bedientafeln ubernehmen oder vorhandene leschen und Ihre OesktopAnzeige so mit den von Ihnen benetigten Werkzeugen erganzen. 1m Bild 4-9 auf Seite 346 hatten wir gesehen, wie Sie in verschiedene Arbeitsbereiche wechseln kennen. Wollen wir uns nun ansehen, wie Sie weitere Arbeitsbereiche anlegen und umbenennen kennen. Anlegen von weiteren Arbeitsbereichen Sollten Ihnen die vier Arbeitsbereiche (workspace, desktop) nicht mehr ausreichen, kennen Sie uber das Workspace-Menu mit Add Workspace weitere hinzufugen: Gehen Sie mit der Maus auf den Balken und rufen Sie mit der rechten Maustaste das Menu auf: •" Add Workspace Delete Rename Help Fug! einen Arbeitsbereich hinzu Loscht den danebenstehenden Arbeitsbereich Benennt den Arbeitsbereich um Ruf! das Hilfemenu auf Bild 4-34: HinzufOgen eines Arbeitsbereichs Oamit Sie wissen, welche Verarbeitung Sie in welchem Arbeitsbereich gestartet haben, gehen Sie mit der Maus einfach in die Textzeile des Balkens und geben einen neuen Namen ein, oder Sie kennen im oben gezeigten Menu Rename anklicken. Was fehlt Ihnen noch, um sich wohlzufi.ihlen? Richtig, das Ambiente. Wie wir das AuBere unserer Arbeitsumgebung verandern kennen, erfahren Sie im folgenden Abschnitt. 365
4 COE - die grafische Benutzeroberflache unter UNIX 4.8.2 Oer Style-Manager Hiermit konnen wir alles stylen, nicht nur den Arbeitsbereich. Wenn Sie das Symbol fOr den Style-Manager anklicken, erhalten Sie folgende MenOauswahl: Auswahl Zuordnung von Farbpaletten Auswahl eines Hintergrunds Mauseinstellung BildschirmEinstellungen Voreinstellung fOr Neustart Bild 4-35: Menu Style-Manager Zu den einzelnen Menupunkten: o Color - Zuordnung der Farbpaletten .. an • ., - Cdar Wenn auf Ihrem System mehrere Farbpaletten gespeichert sind, konnen Sie hier eine Zuordnung treffen. In den Farbpaletten sind bereits unterschiedliche Farben fOr den Schreibtischhintergrund, fOr Fensterumrandungen etc. zugewiesen. ~ Bild 4-36: ColorAuswahl der Farben HoIp Empfehlung: Lassen Sie die detaillierte Farbzuordnung (Number of Colors ... und Modify) durch den Systemverwalter vornehmen - damit die System-Ressourcen nicht zu schnell aufgebraucht sind (Farben kosten Speicher!) und damit in Foigeprogrammen keine unerwOnschten Effekte auftreten. Es ist sicher einmal interessant, die Moglichkeiten durchzutesten, doch gerade bei Farben sollten Sie es nicht zu bunt treiben. Die voreingestellten Pal etten sind meist schon auf harmonische und nicht zu grelle Farben abgestimmt. Wahlen Sie also eine der so schon klingenden Palettennamen wie Delphinum. Aber auch hinter Grass oder Desert verbergen sich nette Farbspiele. Viel SpaB - aber vielleicht sollten Sie sich zuvor einen Termin setzen, damit Ihnen die Zeit nicht davonlauft. 366
Wie passen Sie das COE an Ihre Wunsche an? o 4.8 Font - Auswahl der Schriften AaHbLcJdtet f(;9~1..u45b71i~ Hier konnen Sie die GroBe der Schrift voreinstellen. Beim nachsten Aufruf, z. B. eines Terminalfensters, wird die voreingestellte SchriftgroBe verwendet. BUd 4-37: FontAuswahlderSchriften o Backdrop - Auswahl eines Hintergrunds BUd 4-38: BackdropAuswahl eines Hintergrunds Auch hier gibt es viele nette Muster, wahlen Sie sich eines fUr den Hintergrund des Arbeitsbereichs aus. Es empfiehlt sich, den Arbeitsbereichen unterschiedliche Hintergrundmuster und Farben zuzuweisen. Wechseln Sie hierfOr jeweils zuvor in den betreffenden Arbeitsbereich. Probieren Sie einfach mal ein paar Muster aus. Was verbirgt sich z. B. hinter Southwest oder PinStripe? (Es konnte natOrlich sein, daB auf Ihrem System andere Muster vorgegeben sind - doch sicher ebenso schone). 367
4 CDE - die grafische Benutzeroberflache unter UNIX o Keyboard - Tastatureinstellung Die Defaulteinstellung " . ~ erlaubt, daB Tasten, wenn Sie sie gedrOckt lassen, automatisch wiederholt werden (auto repeat) und kein lastiges Klickgerausch ertont, wenn Sie auf den Tasten klimpern (click volume). Je weiter Sie den Regier nach rechts schieben, um so lauter klikken Ihre Tasten. BUd 4-39: KeyboardTastatureinstellung o Mouse - Mauseinstellung tilndedn • Rl9hl Ih'ooI,oId BUd 4-40: MouseMauseinstellung l 1 Bei Handedness konnen fOr Linkshander die Tasten links und rechts vertauscht werden. AuBerdem konnen die Maustastenfunktionen umgestellt werden: Transfer bedeutet, daB markierte Daten mit der 2. Maustaste (mitte) an der Cursor-Position eingefOgt werden. Adjust bedeutet, daB stattdessen bei einer Auswahl von Texten weitere mit dieser Taste hinzugefOgt werden. Bei Double-Click wird mit dem RegIer die Geschwindigkeit eingestellt, mit der die Funktion Doppelklick erkannt werden soli. Mit Acceleration stellen Sie die Geschwindigkeit ein, mit der der Maus-Cursor Ober den Bildschirm flitzt. Mit Threshold kann das Minimum an Pixeln eingestellt werden, um die sich eine Maus bewegt. Mit beiden Acceleration und Threshold kann die Maus so eingestellt werden, daB sie ganz prazise bewegt werden kann, was bei einigen Zeichenprogrammen wichtig sein konnte. 368
Wie passen Sie das CDE an Ihre Wunsche an? o Beep - Einstellung fur den Warnton Wenn Sie bei manchen Fehlerhinweisen nur sanft vom System darauf aufmerksam gemacht werden wollen, sollten Sie den Regier fOr Ton und Duration (Dauer des Tons in Sekunden) weit links lassen. --=::;::::::::J.' o _~~1S] Volume ..... Tone ':00 Our"UOII Help Mit Volume = 0% wird der Ton ganz ausgestellt. Bild 4-41: BeepEinstellung fOr den Warn ton Unter Ton ist die Frequenz von 82 bis 9000 Hertz einzustellen. e..... Le! o 4.8 1 Screen - Bildschirmeinstellungen Delaull Auto ScrHn 8fAl1kln~ Screen '''''~~ On Slart BI .. l>ng 1°JICIIlm_l2!la!ll!!l!I mln"l .. lronl Oil P""elloc~ u~ 8ack9round~ for lock Tr.mp.il",n1loc~ Spinning linn TIme Per B.1ckground minutn Help Bild 4-42: Screen - Bildschirmeinstellungen Bei Auto Screen Blanking on, wird der Bildschirmschoner (Screen Blanker) eingestellt. Unter Start Blanking werden die Minuten eingestellt, nach denen automatisch der Bildschirm auf den Bildschirmschoner umgestellt wird. Klicken Sie Use Backgrounds for Lock an, konnen Sie in der Auswahlliste ein oder mehrere Muster fur den Bildschirmschoner anklicken, die gleich im Ausschnitt daneben angezeigt werden. Geben Sie mehrere Muster an, mussen Sie zusatzlich die Zeit, nach wieviel Minuten gewechselt werden soli, angeben (Time Per Background). 369
4 CDE - die grafische Benutzeroberflache unter UNIX o Window - Fenstervoreinstellung Style Man lJer Window Default Polnll" Window To la~o AClive In dieser Dialogbox wird eingetragen, wie Ihre Fenster behandelt werden sollen. 'I! I Die wichtigste Einstellung ist, wie das Fenster auf den Maus-Cursor reagieren 5011: Allow Pnmary Windows On Top Show Conlon" Outing Move Window Icon u elcon 80. • Piau, On Workspace Cancel Help Wahlen Sie Point in Window ... , wird das Fenster sofort aktiv, sobald der Maus-Cursor in dem Fenster ist. Mit Click in ... wird es dagegen erst aktiv, wenn Sie das Fenster bewuBt anklikken (was ich empfehlen wurde, da die andere Methode zu leicht zu Fehlern fOhren kann). Mit Raise Window ... steht das aktive Fenster immer im Vordergrund. Bild 4-43: WindowFenstervoreinstellung o Allow Primary ... stellt ein, daB das zuerst geeffnete Fenster immer vollstandig sichtbar ist. Startup - Voreinstellung fUr einen Neustart Stvle Manager - Startup Hier geben Sie ein, wie Ihr Arbeitsbereich nach dem Login dargestellt werden soli: ;!af!U' so wie Sie ihn verlassen haben, in die Default- oder Home-Session, sie wollen sich erst beim Abmelden entscheiden. Hier kennen Sie ein zusatzliches Menu aufrufen, urn die Home-Session zu definieren. Help Bild 4-44: StartupVoreinstellung fOr einen Neustart 370
Zum AbschluB noch ein paar Tips zum COE aus der Praxis 4.9 Nun, die Voreinstellungen sind zwar etwas zeitaufwendig, aber sie sollten ja auch nur einmal eingetragen werden. Es ist ja auch ganz nett, ab und zu einen neuen Tapetenwechsel fOr die Schreibtisch-Umgebung vorzunehmen, aber wichtig ist es nicht unbedingt. Und uberlassen Sie knifflige Einstellungen am besten Ihrem Systemverwalter. 4.9 Zum AbschluB noch ein paar Tips zum CDE aus der Praxis o o Vermeiden Sie, zu viele Fenster ge6ffnet zu haben. Hier sollten Sie die M6glichkeit nutzen, sie als Icon an den Rand des Bildschirms zu legen oder auf die verschiedenen Arbeitsbereiche auszuweichen. o Um schnell mit UNIX-Kommandos etwas uberprUfen zu k6nnen, ist es sinnvoll, immer ein Terminalfenster ge6ffnet zu halten - bzw. den Dateimanger mit einem Ordner, in dem die von Ihnen am haufigsten genutzten Befehle abgelegt sind. Bei Platzmangel legen Sie diesen Ordner am besten als Icon an den Rand des Bildschirms. o Da, wie Sie gesehen haben, zwar UNIX-Kommandos durch Doppelklick gestartet werden k6nnen, ist es nun noch effektiver, sich eigene Kommandos zu schreiben, die gleich die von Ihnen ben6tigten Optionen beinhalten oder sie anzeigen und uber Menu abfragen, da Sie sonst doch die Optionen auswendig wissen muSten. Diese Kommandos k6nnen dann in einem speziellen Ordner jederzeit abrufbereit sein. o Durch das kleine SchloS am Bildschirm ist es leicht, Ihr System zu schUtzen, wenn Sie - auch nur fOr kurze Zeit - Ihren Arbeitsplatz verlassen. o Zur Sicherheit und um den Bildschirm zu schonen, sollten Sie die ScreenLock-M6glichkeiten nutzen. War UNIX bisher eher etwas fOr Tuftier, macht es jetzt mit dem CDE richtig SpaS, mit UNIX zu arbeiten. In diesem Sinne: Viel Freude und Erfolg bei Ihrer taglichen Arbeit! 371
5 Obersichten Dieses Kapitel soli Ihnen helfen, das Gelernte aufzufrischen oder sich kurz und schnell zu informieren. Als zusiitzliche Hilfe ist diesem Buch eine Kurzreferenzkarte beigefOgt, in der die hiiufig verwendeten Kommandos und Sonderzeichen zusammengestellt sind. Die Karte enthiilt zusiitzlich noch Wissenswertes Ober UNIX (Editoren, wichtige Dateien fOr den Benutzer und Zusammenfassungen der Bourne-, Korn- und C-SheIO. Die einzelnen Themen: 5.1 Alphabetische der Kommandos 5.2 Verzeichnis der Bilder 5.3 Glossar 373 C. Wolfinger, Keine Angst vor UNIX © Springer-Verlag Berlin Heidelberg 2000
5.1 Alphabetische Ubersicht der Kommandos In dieser Obersicht sind nur kurz die Funktionen der Kommandos aufgefDhrt, nicht die einzelnen Optionen. Unter der angegebenen Seitenzahl finden Sie die ausfDhrliche Beschreibung des Kommandos und entsprechende Beispiele. In der beigelegten Kurzreferenzkarte finden Sie auBerdem die Mufig benotigten Kommandos als Obersicht nach Funktionen geordnet und alphabetisch sortiert mit Angabe der wichtigen Optionen. 374
5.1 A-C Alphabetische Ubersicht der Kommandos A alias um eine Aliasfunktion zu bilden 312 at um Befehle zu bestimmten Zeiten zu starten 222 banner um Zeichen im GroBformat auf den Bildschirm auszugeben 315 bg um einen Job (ProzeB) im Hintergrund weiterlaufen zu lassen 319,323 biff um den Benutzer zu benachrichtigen, wenn neue Post (mail) eingegangen ist 74 break um Schleifen vorzeitig abzubrechen 293 cancel um einen /p-Druckauftrag abzubrechen 172 cal um einen Kalender anzuzeigen (nur in der Kurzreferenzkarte aufgefUhrt) case um eine gezielte Weiterverarbeitung zu erreichen, die Ober Vergleichsmuster angesteuert wird cat um Dateien aneinanderzuhangen 90 cat um sich einen Dateiinhalt anzusehen 65 cat> um schnell eine Datei zu erstellen 88 cd um in Directories zu wechseln 58 chmod um Zugriffsrechte zu andern (symbolisch) 177 chmod um Zugriffsrechte zu andern (mit Oktalzahl) 179 chgrp um die Gruppenzugehorigkeit zu andern (nur in der Kurzreferenzkarte aufgefUhrt) chown um Besitzrechte zu andern 182 clear um den aktuellen Bildschirminhalt zu loschen 315 cmp um Dateien miteinander zu vergleichen 334 compress um Dateien zu verdichten continue um an das Ende einer Schleife zu springen 289 cp um Dateien zu kopieren 159 B C 297 247,247 375
5 C-E Ubersichten cpio -i um Dateien aus einem cpio-Archiv wieder einzulesen 216 cpio um ein Archiv auf Magnetband, Streamer, Floppy oder als Datei anzulegen 214 cpio -p um einen Dateibaum zu kopieren 207 csh um die C-Shell aufzurufen cut um Spalten auszuschneiden -0 85,326 333 D date um Datum und Uhrzeit anzuzeigen dd um Dateien, Dateibereiche oder gesamte Platten 1:1 zu kopieren 242 df um die freien Blocke aller im System montierten Platten/Floppies anzuzeigen 191 diff um Dateien miteinander zu vergleichen 334 dosdir um sich den Inhalt eines Directories auf einer DOS-vorformatierten Floppy anzusehen 227 dosformat um eine Floppy im DOS-Format zu formatieren 227 dosread um DOS-Dateien auf einen UNIX-Rechner zu kopieren 227 doswrite um UNIX-Dateien auf eine DOS-Floppy zu kopieren 227 du um den belegten Platz (Blockanzahl) anzuzeigen 190 echo um Nachrichten auf den Bildschirm auszugeben 105, 259 ed um Dateien zeilenweise zu editieren 122 env um definierte und exportierte Variablen anzuzeigen 262 exit um eine Shellprozedur vorzeitig zu beenden 275 exit Kommandos, um eine Terminalsitzung zu beenden export um die GOltigkeit von Variablen auf Unterprogramme zu Obertragen expr um Rechenoperationen auszufOhren 61 E 376 47 262,265 294
5.1 F-I Alphabetische Ubersicht der Kommandos F 293 false liefert nur den Exitstatus >ungleich Oc fc wiederholt bereits eingegebene Kommandos/Befehle oder zeigt sie an (History-Mechanismus) 312,313 fg um einen Job/ProzeB im Vordergrund weiterlaufen zulassen 319,323 file um den Inhalt einer Datei zu klassifizieren 189 find um Dateien zu suchen und zu finden 183 find •.• 1 cpio ••• um einen Dateibaum zu kopieren 207 finger um Benutzerinformation zu erhalten for um eine Schleife einzuleiten 286 for in do done um eine Schleife einzuleiten 288 ftp um mit Dateien eines entfernten Rechners zu arbeiten (kopieren, ansehen) 245 function functions um Funktionen zu erstellen um bereits vorhandene Funktionen anzuzeigen 299 70 G grep um nach Mustern in Dateiinhalten zu suchen 98, 188 H 337 head um die ersten Zeilen einer Datei anzusehen history (alias zu fc -I) um die zuletzt eingegebenen Befehle anzuzeigen hostname um den eigenen Rechnername zu erfragen 239 if then else fi um den Ablauf zu steuern 274 integer (alias zu typeset -i) um eine Variable als Integer-Typ zu kennzeichnen (nur ganze Zahlen dOrfen zugewiesen werden (gilt nur fOr ksh) 315 377
5 J-M Ubersichten J jobs um die aktuellen Jobs anzuzeigen (gilt nur fUr csh/ksh) 320 K kill um Programme vorzeitig abzubrechen ksh um die Korn-Shell als Sub-Shell zu starten 112,320 309 L 165,166 In um Dateien weitere Namen l/1ardlinks oder symbolische links) zu vergeben logout um eine Terminalsitzung zu beenden Ip um Dateien auszudrucken 172 Ipq um eine aktuelle Anzeige der mit Ipr gestarteten Druckauftrage zu erhalten analog zu Ipstat fUr IpAuftrage 174 Ipr um Dateien auszudrucken analog zu Ip 174 Iprm um einen Druckauftrag, der mit Ip gestartet wurde, abzubrechen (analog zu cancel fUr Ip-Auftrage) 174 Ipstat um eine aktuelle Anzeige des Spool-Programms Ip mit den noch offen en Druckauftragen zu erhalten 173 Is um Dateien in dem aktuellen Directory anzuzeigen 50 Is um Dateimerkmale anzuzeigen 47 52,169 M 378 mail um Nachrichten (Post) elektronisch zu senden 73 man um die Beschreibung von Kommandos (Manualseiten) anzusehen 62 mesg um den Bildschirm fUr Nachrichten zu sperren bzw. wieder zu 6ffnen 73 mkdir um Directories anzulegen more um einen DateHnhalt seitenweise anzuzeigen /etc/mount um Floppies oder Platten zu montieren 157 66 203
5.1 Alphabetisehe Ubersieht der Kommandos M-S mt um ein Magnetband/Streamer vor- und zuruckzuspulen 213 mv um Dateien umzubenennen oder in ein anderes Directory zu schieben 163 um Prozesse auch nach einem logout weiterlaufen zulassen 338 N nohup p passwd um das PaBwort zu i:indern 46 pg um Dateiinhalte seitenweise anzuzeigen 68 ping um zu kontrollieren, ob andere Rechner erreichbar sind 238 pr um Dateien fUr den Druck aufzubereiten 175 ps um den Status der Programme abzufragen 113 pwd um das Arbeitsdirectory anzuzeigen 49 R rep um Dateien von oder an entfernte Rechner zu kopieren 239 read um eine Antwort vom Terminal zu lesen 271 rlogin um sich an einem entfernten Rechner anzumelden 243 rm um Dateien und Dateibi:iume zu loschen 162 rmdir um Directories zu loschen 158 rsh um auf einem entfernten Rechner eine Shell zu starten 241 sed um Dateien im batch zu bearbeiten 151 set um die definierten Variablen anzuzeigen 262 set um Shell-Optionen zu setzen 284 sh um Dateien mit Kommandofolgen auszufUhren 254 5 379
5 S-U Obersichten sleep um Wartezeiten in Sekunden zu setzen sort um Dateiinhalte zu sortieren sort um Zeichenketten oder Dateien zu sortieren 332 stop um einen Job/ProzeB zu anzuhalten 319 sync um Dateiinformationen auf die Platte zurOckzuschreiben und den Rechner auszuschalten 293 97 76 T tail um die letzten Zeilen einer Datei anzusehen 337 talk um ein Gesprach Ober Bildschirm zu fOhren 72 tar -c um ein tar-Archiv zu erstellen 219 tar -t um ein Inhaltsliste eines tar-Archivs zu erhalten 221 tar -x um Dateien aus einem tar-Archiv zurOckzukopieren 221 tee um eine Pipe-Ausgabe zusatzlich in eine Datei abzuleiten 330 telnet um sich an einem entfernten Rechner anzumelden 243 test um Zahlen zu vergleichen 280 test um Zeichenketten (Text in ASCII) auf Gleichheit zu prOfen 277,278 touch um eine Datei anzulegen oder das Modifikationsdatum up-to-date zu setzen 265 trap um Signale zu behandeln 301 true um Exitstatus ,0< zu erhalten 293 tty um den Terminalnamen (Typ) anzuzeigen typeset um in der Korn-Shell Variable zu setzen 314 /etc/umount um Platten oder Floppies wieder auszuhangen 205 unalias um einen Alias wieder aufzuheben 313 uncompress um mit compress verdichtete Dateien wieder in den Normalzustand zu bringen 248 71 U 380
5.1 U·z Alphabetische Obersicht der Kommandos until um eine Schleife einzuleiten, die so oft durchlaufen wird, wie die nachfolgende Kommandofolge nicht erfolgreich ist 290 um bildschirmorientiert Dateien zu editieren 139 V vi W we um Zeilen, Worter und Zeichen zu zahlen 95 whatis um eine Kurzinformation Ober ein Kommando zu erhalten 65 whereis um den Pfad von Befehlen zu erhalten nur in der Kurzreferenzkarte while um eine Schleife einzuleiten, die so oft durchlaufen wird, wie die nachfolgende Kommandofolge erfolgreich ist (Exitstatus 0) who um zu sehen, wer noch am System arbeitet 69 write um Benutzern, die am System angemeldet sind, eine Nachricht zu send en 71 290 Z zeat um mit compress komprimierte Text-Dateien anzusehen 248 381
5.2 Verzeichnis der Bilder Diese Aufstellung soli Ihnen helfen, bestimmte Beispiele oder ein bestimmtes Bild schnell wiederzufinden. Die Bilder sind nach der laufenden Bildnummer sortiert und nach den Hauptabschnitten unterteilt. Die Seitennumer ist jeweils als letztes in der Zeile angegeben. 382
Verzeichnis der Bilder 5.2 Bilder in Kapitel 1 Allgemeine Einfuhrung Bild Bild Bild Bild Bild Bild Bild 1-1 1-2 1-3 1-4 1-5 1-6 1-7 Schematische Darstellung eines Rechners .............................. .4 Innenleben eines Rechners mit Prozessorboard ...................... 5 Hauptaufgaben eines Betriebssystems .................................. 10 Beispiel des Dateisystems unter UNIX .................................... 12 Beispiel eines FluBdiagrammes .............................................. 15 Beispiel eines >Mini'-C-Quell-Programmes ............................. 16 UNIX-Portierungen verschiedener Firmen .............................. 20 Bilder in Kapitel 2 Konventionen und Begriffe zu diesem Buch Bild 2-1 Bild 2-2 Bild 2-3 Bild 2-4 Syntax der Kommandos ......................................................... 26 Beispiel eines Dialoges mit dem Rechner ............................... 27 Beispiel einer engJischenlamerikanischen Tastatur ................ 29 Belegung der Funktionstasten ................................................ 30 Bilder in Kapitel 3 UNIX - praktisch angewandt Abschnitt 3.1 Auf los geht's los ... Bild 3 -1: Beispiel einer Nachricht des Systems nach dem Hochfahren in den Multi-User-Modus ........................................................ 34 MogJiche Terminalverbindungen ............................................. 35 Maus-Funktionen ....................................................................37 Beispiel einer Schreibtischumgebung unter CDE ................... 38 Neues Terminal-Fenster unter CDE ....................................... .40 Beispiel Pull-Down-Menu ...................................................... .40 Wesentliche Funktionen eines Fensters ................................. .41 Beispiel der Datei letclpasswd .............................................. .44 Erstes Anmelden ..................................................................... 45 Beispiel Erste Eingabe des PaBworts .................................... .45 Andern des PaBwortes ............................................................46 Abmelden vom System unter CDE ........................................ .47 Beispiel eines Dateibaumes mit Benutzerdateien .................. .49 Beispiel Hierarchie - Vergleich Arbeitszimmer ....................... 51 Beispiel Jisten, anzeigen von DirectorieslDateien (Is -I) ........... 52 Beispiel Jisten, anzeigen vom aktuellen Directory mit Is -FR ...................................................................................... 53 Beispiel listen, anzeigen von DirectorieslDateien (Is -FR) ..................................................................................... 53 Beispiel Jisten, anzeigen mit relativem Pfadnamen (..) ........... 54 Beispiel relative Pfadangabe (./../) ......................................... 55 Bild 3-2: Bild 3-3: Bild 3-4: Bild 3-5: Bild 3-6: Bild 3 - 7: Bild 3-8: Bild 3-9: Bild 3-10: Bild 3 - 11: Bild 3-12: Bild 3-13: Bild 3-14: Bild 3-15: Bild 3-16: Bild 3 -17: Bild 3 -18: Bild 3-19: 383
5 Obersichten Bild 3-20: Bild 3-21: Bild 3-22: Bild 3-23: Bild 3-24: Bild 3-25: Bild 3-26: Bild 3-27: Bild 3-28: Bild 3-29: Bild 3-30: Bild 3-31: Bild 3-32: Bild 3-33: Bild 3-34: Bild 3-35: Bild 3-36: Bild 3-37: Dateibaum des Seminarrechners 5 ............................................6 Darstellung der Baumstruktur im Dateimanager ..................... 57 Zugriffsrechte - Anzeige mit Is -I ........................ .................... 58 Beispiel cd Directory / pwd ..................................................... 59 Beispiel von date (Datumsanzeige) ......................................... 61 Beispiel von man (Anzeige von Manualseiten - date) .......... ... 62 Beispiel von man (Anzeige von Manualseiten) Fortsetzung ............................................................................. 64 Beispiel von cat (Anzeige des Inhalts einer Dateij ................... 66 Beispiel von more (Blattem in Dateien) mit Teilanzeige der Manualseite >date.1, ................................. 67 Beispiel von pg (page - Blattem in Dateien) ....... ...... ............... 68 Beispiel von who (Wer arbeitet am System) .... ....................... 69 Beispiel von who am i (wer bin ich) .......................... ............... 70 Beispiel von tty (Termina/-Typ) .. .............................................. 71 Beispiel write (Nachrichten senden) ........................................ 72 Beispiel write (Nachrichten empfangen) ................................. 72 Beispiel von mail - versenden ............................ ..................... 73 Beispiel von mail (Briefe empfangen) ............ .... ........ .......... .... 74 Beispiel des Hilfsmenue von mail ....................................... .... 75 Abschnitt 3.2 Es .shelltc 384 Bild 3-38: Bild 3-39: Bild 3 - 40: Bild 3-41: Bild 3-42: Bild 3-43: Bild 3-44: Bild 3-45: Bild 3 - 46: Bild 3-47: Bild 3-48: Bild 3-49: Bild 3-50: Bild 3-51: Bild 3-52: Bild 3-53: Bild 3-54: Bild 3-55: Shell a/s Schale des Betriebssystemkems .............................. 82 Bereitzeichen der Shell ........................................................... 84 Standardein- und Standardausgabe der Shell ........................ 86 Umleitung der Standardausgabe ............................................ 87 Umleitung der Standardausgabe ....................... ..................... 88 Beispiel Erstellen einer Datei .................................................. 89 Beispiel Umleitung der Standardausgabe (Erganzung) .......... .90 Beispiel Zusammenhangen von Dateien mit cat ..................... 91 Beispiel Fehlerumleitung ......................................................... 92 Beispiel Umleitung der Eingabe .............................................. 93 Beispiel einer Verkettung ........................................................ 94 Beispiel Pipe-Mechanismus .............................. ....... ............... 95 Beispiel Pipe mit Is I wc .......... ............................... ......... ........ 96 Beispiel Pipe mit Sortierprogramm ....................... .................. 98 Beispiel grep Suchen nach einem Muster .............................. 98 Dateinamenexpansion durch Metazeichen ........ .. ................... 99 Beispiel grep mit Dateinamenexpansion (*) ... ....................... 100 Beispiel Is mit Dateinamenexpansion (?) ...... ..... .................... 100
Verzeichnis der Bilder Bild 3-56: Bild 3-57: Beispiel Is mit Dateinamenexpansion ([J) ............................. 101 Beispiel: Fehler durch Angabe von Metazeichen bei Umleitung von Ein-/Ausgabe ......................................... 101 Bild 3-58: Loschen von Dateien mit Metazeichen Beispiel Fluchtsymbol \ ........................................................ 102 Beispiel Aufhebung von Sonderzeichen durch Backslash .................................................................... 103 Beispiel doppe/te AnfOhrungszeichen .................................. 104 Beispiel: Aufhebung von Metazeichen (doppelte AnfOhrungszeichen) .............................................. 104 Ersetzungsmechanismen 1. Teil ............................................. 105 Beispiel echo mit Sonderzeichen .......................................... 106 Beispiel echo mit Sonderzeichen innerhalb von AnfOhrungszeichen " ............................................................. 106 Beispiel: Bildung und Nutzung von Variablen ....................... 107 Beispiel: Ersetzung durch Ergebnisse von Kommandos ...... 108 Beispiel keinerlei Substitution durch ..................................... 109 Ersetzungsmechanismen 2. Teil ............................................ 109 Bild 3-59: Bild 3-60: Bild 3-61: Bild 3-62: Bild 3-63: Bild 3-64: Bild 3-65: Bild 3-66: Bild 3-67: Bild 3-68: 5.2 Abschnitt 3.3 Editoren unter UNIX Bild 3-69: Bild 3-70: Bild 3-71: Bild 3-72: Bild 3-73: Bild 3-74: Bild 3-75: Bild 3-76: Bild 3-77: Bild 3-78: Bild 3-79: Bild 3-80: Bild 3-81: Bild 3-82: Bild 3-83: Bild 3-84: Beispiel Aufruf eines Programmes, das im Hintergrund ablaufen soli ...................................................... 111 Beispiel Abbruch eines Hintergrundprozesses ..................... 112 Beispiele der Kommandos ps und kill ................................... 113 Grafische Darstellung der ProzeBstruktur ............................. 115 Beispiel Aufruf des Editors ed .............................................. 122 Kommandoeingabe im ed ..................................................... 123 Bereichsdefinition im ed ....................................................... 123 Beispiel Anzeige von Zeilen im ed ........................................ 124 Beispiel Editor ed, numerierte Dateianzeige und Beenden des Programms ..................................................... 124 Beispiel Editor ed, Warnung nicht existierende Datei ........... 125 Beispiel Editor ed, Eingabe und Ersetzung (substitute) ........ 125 Beispiel Editor ed, EinfOgen und Anh8.ngen (insert, append) ..................................................................... 127 Beispiel Editor ed, Anzeige mit Zeilennummer ..................... 127 Beispiel Editor ed, Oberschreiben von Zeilen ....................... 128 Beispiel Editor ed, Kopieren von Zeilen (t - transfer) ............ 129 Beispiel Editor ed, ROckgangigrnachen der letzten Anderung (undo) ........................................................ 130 385
5 Ubersichten Bild 3 - 85: Bild 3-86: Bild 3-87: Bild 3-88: Bild 3 - 89: Bild 3-90: Bild 3-91: Bild 3-92: Bild 3-93: Bild 3-94: Bild 3-95: Bild 3-96: Bild 3-97: Bild 3-98: Bild 3-99: Bild 3-100: Bild3-101: Bild 3-102: Beispiel Editor, Sichern der Datei und Beenden des Programmes ................................................................... 130 Beispiel Editor ed, Beenden des Programms fehlerhafte Eingabe .......................... .... ................................. 130 Beispiel Editor ed, Beenden des Programms - ohne Warnung bei nicht zuruckgeschriebenen Dateien ................................ 131 Beispiel: Editor ed, Suchen in der Datei mit '//' .................... 132 Beispiel: Editor ed, Suchen und Ersetzen global .................. 133 Metazeichen - regulare Ausdrucke (ed, vi, sed und grep) ............................................................ 134 Beispiel Editor ed, Suchen und Ersetzen je am Anfang einer Zeile ...................................................... ........... 135 Beispiel Editor ed, Suchen und Ersetzen mit Ubernahme der gefundenen Zeichenkette ........................... 135 Sonderzeichen im Editor ....................................................... 136 Beispiel Aufruf vi .................................................................. 139 Beispiel Korrekturen im vi: Anht:ingen am Ende der Zeile ....................................................................... 140 Beispiel Korrekturen im vi: Umschalten in den Kommandomodus - L6schen einer Zeile ............................. 140 Beispiel Korrekturen im vi: Ersetzen durch Kommando R ............................................... 141 Beispiel Korrekturen im vi: L6schen eines Zeichens mit x ................................ ............... 141 Beispiel Korrekturen im vi: wortweise Vorrucken Ersetzen (Uberschreiben) eines Wortes ................................ 142 Beispiel Aufruf vi: Suchen und Ersetzen im ex-Modus: s/alt/neu/ ..................... 144 Beenden des vi ..................................................................... 145 Beispiel sed als Filterprogramm ....... ..................................... 151 Abschnitt 3.4 Dateiverwaltung und Pflege Bild 3-103: Bild 3-104: Bild 3-105: 386 Bild 3 - 106: Bild 3-107: Bild 3-108: Bild 3-109: Beispiel Strukturierung durch Directories ............................. 154 Beispiel listen, anzeigen von Directories/Dateien (Is -RF) ................................................................................... 156 Beispiel Dateibaum - neue Aufteilung im Ubungsdirectory /usrlkurs/monika .......... ... ....... ... ... ............ 156 Beispiel Anlegen von Directories - (mkdir und Is -I) .............. 157 Beispiel L6schen von Directories - rmdir ............................. 158 Beispiel Kopieren einer Datei - cp ........................................ 159 Beispiel Kopieren einer Datei - cp ................................... ..... 160
Verzeichnis der Bilder Bild 3-110: Bild 3-111: Bild 3-112: Bild 3-113: Bild 3-114: Bild 3-115: Bild 3-116: Bild3-117: Bild 3-118: Bild 3-119: Bild3-120: Bild 3-121: Bild 3-122: Bild3-123: Bild3-124: Bild3-125: Bild 3-126: Bild3-127: Bild 3-128: Bild 3-129: Bild 3-130: Bild 3-131: Bild 3-132: 5.2 Beispiel Kopieren von mehreren Dateien in ein Directory - cp ...................................................................... 161 Beispiel Kopieren eines Dateibaumes mit cp -r .................... 161 Beispiel Obernahme von Dateien in andere Directories - mv .................................................................... 164 Beispiel Umbenennen von Dateien oder Directories mv ......................................................................................... 164 Beispiel zusatzliche Namensvergabe fOr Dateien In ........................................................................................... 165 Beispiel symbolischer Link (Softlink) ..................................... 166 Beispiel Anzeige der Dateien mit weiteren Datei-Attributen (Is -lis) ......................................................... 168 Beispiel einiger Geratedateien (devices) (Teilanzeige von Is -Ii /dev) .................................................... 170 Kennzeichen der Dateitypen ................................................. 171 Beispiel Ausdrucken von Dateien mit dem Spooler -Ip ....... 173 Beispiel Druckaufbereitung mit pr ........................................ 175 Beispiele Zugriffsrechte ........................................................ 176 Beispiel verschiedener Zugriffsrechte (Anzeige mit Is -I) ................................................................... 177 Beispiel Andern der Zugriffsrechte mit symbolischer Angabe - chmod ugo+-rwx ...................... 179 Beispiel Errechnung der Oktalzahl fOr Zugriffsrechte ........... 180 Beispiel Andern der Zugriffsrechte mit Oktalzahl .................. 181 Beispiel Besitzrechte beim Kopieren von Dateien ................ 181 Beispiel Andern der Besitzerrechte - chown ........................ 182 Beispiel Suchen und Finden von Dateien - find ................... 186 Beispiele Suchen und Finden von Dateien (find mit -exec Funktion) ....................................................... 187 Beispiel Suchen und Finden von Dateiinhalten - grep ......... 188 Beispiel Versuch einer Dateiklassifizierung - file ................... 189 Anzeige der freien und belegten Plattenkapazitat ................. 191 Abschnitt 3.5 Sicher ist sicher! Bild 3-133: Bild 3-134: Bild 3-135: Bild 3-136: Bild 3-137: Floppy ................................................................................... 202 Beispiel Anzeige der montierten Platten - /etc/mount ......... 203 Beispiel Sichern von Dateien auf Floppy /etc/mount, cp ...................................................................... 204 Beispiel Mount-Directory nach dem Aushangen der Floppy .......................................................... 205 Beispiel des Dateibaumes mit ausgehangter Floppy ............ 206 387
5 Ubersichten Bild 3-138: Bild 3-139: Bild 3-140: Bild 3-141: Bild 3-142: Bild 3-143: Bild 3-144: Bild 3-145: Bild 3-146: Bild 3-147: Bild 3-148: Bild3-149: Bild 3-150: Bild 3-151: Beispiel einer Sicherung auf Floppy mit find I cpio als Dateibaum ....................................................................... 208 Beispiel Abmontieren (Aushangen) von einer Floppy nach der Sicherung eines Dateibaumes - /etc/umount ........ 209 Beispiel Einlesen von Dateibaumen aus der Sicherung auf Floppies - cpio (als Dateisystem) ................... 210 Magnetband ..........................................................................211 Streamer ...............................................................................212 Beispiel Sicherung als Archiv auf Streamer cpio in Verbindung mit find ................................................... 216 Beispiel Anzeige des Inhaltsverzeichnisses eines cpio-Archivs .......................................................................... 218 Beispiel Einlesen bestimmter Daten aus einem cpio-Archiv ............................................................................ 218 Beispiel Erstellung eines tar-Archivs ..................................... 220 Beispiel Restaurieren einer Datei mit tar -x ........................... 222 Beispiel Kommando mit at zu einer bestimmten Zeit ausfOhren zu lassen .............................................................. 223 DenkanstoBe zu einem Sicherungsplan ................................ 224 Beispiel Kopieren von DOS-Dateien nach UNIX ................... 228 Beispiel Kopieren von UNIX auf DOS-Floppy ....................... 228 Abschnitt 3.6 Wissenswertes fiber Netze Bild 3-152: Bild 3-153: Bild 3-154: Bild 3-155: Bild 3-156: Bild 3-157: Bild 3-158: Bild 3-159: OSI-Schichtenmodel ............................................................ 237 Beispiel ping - Erreichbarkeit anderer Rechner kontrollieren ............................................................ 238 Beispiel rcp - Kopieren von und auf fremde Rechner .... ....... 240 Beispiel Ausgabe von tar mit rsh und dd auf ein Gerat im Netz ........................................................................ 242 Beispiel Anmelden an einem entfernten Rechner mit telnet ...............................................................................244 Beispiel komprimiertes tar-Archiv mit ftp auf einen anderen Rechner Obertragen ................................................ 247 Anmelden mit rlogin und Auspacken der komprimierten tar-Archiv-Obertragung mit uncompress und tar -x ............. 248 Ansehen einer komprimierten Textdatei mit zcat .................. 249 Abschnitt 3.7 Shell-Prozeduren 388 Bild3-160: Bild3-161: Bild 3-162: Ablauf einer Shell-Prozedur grafisch dargestellt ................... 255 Eingabemog/ichkeiten von Kommandos .............................. 256 Beispiel Erstellen einer Shell-Prozedur ................................. 258
Verzeichnis der Bilder Bild 3-163: Bild 3-164: Bild 3-165: Bild 3-166: Bild 3-167: Bild 3-168: Bild3-169: Bild 3-170: Bild 3-171: Bild 3-172: Bild 3-173: Bild 3-174: Bild 3-175: Bild 3-176: Bild 3-177: Bild 3-178: Bild 3-179: Bild3-180: Bild 3-181: Bild 3-182: Bild 3-183: Bild 3-184: Bild 3-185: Bild 3-186: Bild 3-187: Bild 3-188: Bild3-189: Bild 3-190: Beispiel einer Shell-Prozedur zur wochentlichen Sicherung ..................................................... 260 Beispiel Aufruf der Shell-Prozedur fUr wochentliche Sicherung .......................................................260 Beispiel einer Shell-Prozedur zur Uiglichen Sicherung ......... 261 Beispiel Aufruf der Shell-Prozedur fOr tagliche Sicherung ................................................................ 261 Beispiel: Wert der Variablen PATH ....................................... 262 Anzeige und Erlauterung der vordefinierten Shell-Variablen ...................................................................... 263 Beispiel von .profile mit Anderung der Variablen .................. 264 Beispiel einer Anmeldung mit geandertem .profile ............... 264 Obersichtstabelle vordefinierter Variablen ............................ 267 Obersichtstabelle Positionsparameter .................................. 268 Beispiel: Shell-Prozedur mit Positionsparameter .................. 268 Beispiel Ausgabe der Positionsparameter ............................ 269 Beispiel einer Shell-Prozedur ,Listen eines Directories' Muster 1- Positionsparameter ............................................. 270 Beispiel Aufruf der erstelften Shell-Prozedur ,listen, ............. 270 Beispiel Aufruf der erstelften Shell-Prozedur ,listen, mit Parameter ....................................................................... 271 Beispiel einer Shell-Prozedur 'Anzeigen einer Datei, Muster 2 - read-Funktion ...................................................... 272 Beispiel if then else fi ............................................................ 274 Beispiel einer Shell-Prozedur ,Anzeigen einer Datei, Muster 3 - erganzt um das Kommando test und die Abfrage mit if then else fi ......................................... 275 Verschachtelung von if-Bedingungen ................................... 276 Alternative Eingabe mit ,elif, statt 'else if, ............................. 276 Beispiel test-Abfrage auf Textgleichheit ............................... 279 Beispiel Kombination des test-Kommandos (-a,-o) .............. 280 Beispiel Teil einer Shell-Prozedur mit algebraischem Vergleich ...............................................................................281 Beispiel der Shell-Prozedur -Ioschen .................................. 283 Obersicht moglicher Schleifenkommandos .......................... 285 Beispiel Prozedur ,listen' erganzt mit einer for-Schleife ...........................................................................287 Beispiel der Shell-Prozedur - 'pruefe', erganzt mit einer for in- Schleife ...................................................................... 289 Beispiel der Shell-Prozedur - ,dirpruef, mit while- und untilSchleife .................................................................................292 5.2 389
5 Obersichten Bild 3-191: Bild 3-192: Bild 3-193: Bild 3-194: Bild 3-195: Beispiel einer Endlosschleife ................................................ 294 Endlosschleife mit Rechenoperation .................................... 295 Beispiel Teil der Shell-Prozedur - ,dirpruef<, erganzt um expr .................................................................... 296 Beispiel einer Shell-Prozedur 'rechne< mit case .. und expr ............................................................. 298 Beispiel function ................................................................... 299 Abschnitt 3.8 Die Korn-Shell Bild 3-196: Bild 3-197: Bild 3-198: Bild 3-199: Bild 3-200: Bild 3-201: Bild 3-202: Bild 3-203: Bild 3-204: Erganzungszeile in $HOMEl.profile ...................................... 308 Funktionen fOr den Befehlszeileneditor (vi und emacs) ......... 311 Beispiel Erstellen von einer Alias-Funktion ........................... 312 Zusammenfassung Aias-Funktionen ..................................... 313 Beispiel countdown Rechenoperation mit Integer-Variablen ................................................................... 315 Beispiel Datei $HOMEI.kshrc ................................................ 318 Beispiel Jobcontrol mit stop und fg ...................................... 320 Tabelle mit einigen Signalen ................................................. 320 Die verschiedenen Jobsteuerungen ..................................... 321 Abschnitt 3.10 Noch ein paar Befehle Bild 3-205: Bild 3-206: Bild 3-207: Bild 3-208: Bild 3-209: Bild 3-210: Beispiel sort als Filterprogramm (Sortierung nach Spa/ten) ..................................................... 332 Beispiel cut, Separieren der Spa/ten 0,4 und 5 aus letclpasswd .................................................................... 333 Beispiel Vergleich von Dateien mit cmp ............................... 335 Beispiel read in Verbindung mit Pipe .................................... 336 Beispiel head ........................................................................337 Beispiel tail ............................................................................337 Bilder in Kapitel 4 CDE - die grafische Benutzeroberflache unter UNIX 390 Bild 4-1: Bild 4-2: Bild 4-3: Bild 4-4: Bild 4-5: Bild 4-6: Bild 4-7: Bild 4-8: Bild 4-9: Bild 4-10: Anmeldefenster im CDE ....................................................... 340 Schreibtischumgebung - Arbeitsflache ................................ 340 Erlauterungen zur Desktopanzeige ....................................... 341 Desktopanzeige - MenD ........................................................ 341 Bedientafel Dber Texteditor .................................................. 342 Bedientafel fOr Drucker ......................................................... 343 Beispiel Terminkalender ........................................................ 344 Arbeitsflache - Beispiel eines MenDs ................................... 345 Neuer Arbeitsbereich ............................................................ 346 Texteditor - MenD File .......................................................... 347
Verzeichnis der Bilder Bild 4-11: Bild 4-12: Bild 4-13: Bild 4-14: Bild 4-15: Bild 4-16: Bild 4-17: Bild 4-18: Bild 4-19: Bild 4-20: Bild 4-21: Bild 4-22: Bild 4-23: Bild 4-24: Bild 4-25: Bild 4-26: Bild 4-27: Bild 4-28: Bild 4-29: Bild 4-30: Bild 4-31: Bild 4-32: Bild 4-33: Bild 4-34: Bild 4-35: Bild 4-36: Bild 4-37: Bild 4-38: Bild 4-39: Bild 4-40: Bild 4-41: Bild 4-42: Bild 4-43: Bild 4-44: 5.2 Texteditor- Dialogbox, um Dateien auszuwahlen ................ 347 Texteditor- Menu Edit .......................................................... 348 Texteditor- Find/Change-Dialogbox .................................... 349 Texteditor- Format ............................................................... 349 Texteditor - Menu Options ................................................... 350 Texteditor _ Tastatur-Befehle ................................................ 350 Beispiel einer Hilfe-Menu-Seite ............................................ 351 Das Hilfe-Menu ..................................................................... 352 Help -Index Search .............................................................. 353 Dateimanager einige Dateitypen ........................................... 354 Pop-up-Menu Datei .............................................................. 356 Vereinfachung von UNlX-Kommandos unter CDE ............... 356 Dateimanager Menus File, Selected und View .....................357 Pop-up-Menu fur auf die Arbeitsf/ache gelegte Dateien ...... 358 Dialogbox Set View Options ................................................. 358 Dialogbox Set Filter Options ................................................. 359 Dialogbox Permission - Andern von Zugriffsrechten ............ 359 Dialogbox Find ................... ................................................... 360 Wie entleeren Sie den Papierkorb ........................................ 361 Dialogbox fOr Kommandoaufrufe .......................................... 362 Obernahme von Symbolen aus der Bedientafel in die Desktopanzeige ........................................................... 363 HinzufOgen einer Bedientafel ................................................ 364 Hinzufugen von Programmen ............................................... 364 HinzufOgen eines Arbeitsbereichs ........................................ 365 Menu Style-Manager ............................................................ 366 Color - Auswahl der Farben ................................................. 366 Font - Auswahl der Schriften ................................................ 367 Backdrop - Auswahl eines Hintergrunds .............................. 367 Keyboard - Tastatureinstellung ............................................. 368 Mouse - Mauseinstellung ..................................................... 368 Beep - Einstellung fOr den Warnton ..................................... 369 Screen - Bildschirmeinstellungen ......................................... 369 Window - Fenstervoreinstellung ........................................... 370 Startup - Voreinstellung fur einen Neustart............................ 370 391
5.3 Glossar In diesem Kapitel sind die in diesem 8uch verwendeten 8egriffe erliiutert und die verwendeten englischen FachausdrOcke in die deutsche Sprache Obersetzt. Die 8egriffe sind kursiv dargestel/t und alphabetisch sortiert. 392
5 A-B Obersichten A Ablaufdiagramm oder FluBdiagramm - Grafische Darstellung eines Programmablaufs. Ein Ablauf- oder FluBdiagramm wird verwendet, um die Einzelschritte von komplexen Aufgaben fOr dieErstellung eines Programms Obersichtlich darzustellen Ablaufsteuerung - In einer Shellprozedur konnen durch Abfragen wie >if .. then, ,for .. do, >case .. in .. , usw., unterschiedliche Kommandofolgen je nach Ergebnis der Abfrage durchgefOhrt werden Absoluter Pfadname - Er beginnt immer mit der root (Wurzel des Dateibaumes >1,) und enthalt aile Directories bis zu dem gewOnschten Dateinamen (z. B. lusr/kurs/monikal.profile) append - anhangen Arbeitsf/ache - 1m CDE wird die Bildschirmflache so benannt, auf der Objekte wie Ordner, Notizblatter oder ein symbolisierter Bildschirm (Terminal) abgelegt werden konnen. Man spricht deshalb auch von einer Schreibtischumgebung. Arithmetische Anweisung - Dies sind Anweisungen um in einem Programm Rechenoperationen durchzufOhren, hierzu gehoren u. a. die Grundrechen arten (addieren, subtrahieren, multiplizieren, dividieren) ASCI/-Code - (American Standard Code for Information Interchange IAmerikanischer Standard Code fOr Informationsaustausch) Eine allgemeine Regel fOr die rechnerinterne Darstellung von Zahlen und Zeichen AT& T - American Telephone and Telegraph B backup - Sicherung Bandmarke - Zeichen, das zur Trennung von Dateien auf ein Band geschrieben wird (z. B. um das Ende einer Datensicherung auf Band zu markieren) BASIC - (BeginnersAII purpose Symbolic Instruction Code) einfache hOhere Programmiersprache Bedientafel - siehe -> subpanel Befehl- Eine (oder mehrere) verstandliche Anweisung an den Rechner, etwas zu tun (Kommando) Bell Laboratories - Ein riesiges Zentrum fOr Forschung und Entwicklung der AT&T Benutzerkennung - Namen, mit dem sich der Benutzer anmeldet. Er ist in der Datei letc/passwd eingetragen 393
5.3 Glossar B-C Bereitzeichen oder Prompt - Die Shell zeigt durch folgende Symbole am Bildschirm an, ob sie weitere Auftrage annehmen kann: $ Prompt fOr normale Benutzer in der Bourne- und Korn-Shell % Prompt fOr normale Benutzer in der C-Shell # Bereitzeichen fOr Systemverwalter > Hinweiszeichen, daB die Shell weitere Angaben erwartet Betriebssystem - Das Steuerungs- und Verwaltungsprogramm des Rechners, der damit aile Fahigkeiten und Meglichkeiten den Anwendungsprogrammen zur Verfugung stellt Bildschirmorientierter Editor - Der gesamte Bildschirm steht fOr Eingabe und Anderung zur Verfugung. Meist wird mit Cursortasten gearbeitet, um an eine bestimmte Stelle des Bildschirms zu gelangen Bina.r- Binar bedeutet aus 2 Einheiten bestehend. Zahlen werden nur aus den Werten 1 und 0 dargestellt: 1=00001, 2=00010, 3=00011, 4=00100 Bugs - (direkte Obersetzung: Kafer) Es handelt sich hierbei um Schwachen oder Fehler in einem Programm Byte - Eine adressierter physikalische Einheit, die Zusammenfassung von 8 bit, in der ein Zeichen oder eine Zifter (nicht Zahl) im ASCII-Code binar dargestellt werden kann C C- Programmiersprache unter UNIX CAD - (Computer Aided Design) rechnerunterstUtztes Konstruieren, gemeinhin die Obertragung aller Arbeiten vom Zeichenbrett auf den grafischen Bildschirm eines CAD-Systems CAM - (Computer Aided Manufacturing) die rechnergestUtzte Produktion Carriage Return (CR) - Wagenrucklauf CDE - (Common Desktop Environment) eine grafische Oberflache, das die bisher unterschiedlichen Desktop-Programme ablest bzw. erweitert. Es wurde gemeinsam von den Firmen Hewlett-Packard Company, IBM, Novell und Sun Microsystems entwickelt Chip - Mikrobaustein der integrierten Schaltungstechnik, in dem elektronische Komponenten dicht gepackt sind (meist in Kunststoft oder Keramik verpackt) CIM - (Computer integrated manufacturing) GesamtunterstUtzung der Fertigung von Bestellung uber Entwicklung und Konstruktion bis hin zur Auftragsabwicklung COBOL - (COmmercial Business Oriented Language) Programmiersprache, fOr kommerzielle Problemlesungen 394
5 Ubersichten c-o Compiler- Obersetzungsprogramm, um Quelldateien einer Programmiersprache in ein ausfOhrbares Programm zu ubersetzen (Binarcode oder Maschinencode) concatenate - zusammenhangen CPU - (Central Processing Unit) Prozessor. Ein Prozessor erkennt die Befehle (Anweisungen) eines Programmes und setzt sie um Cursor - Positionsanzeigesymbol (Schreibmarke) am Bildschirm, meist ein kleines blinkendes Rechteck D Datei - logische Einheit auf der Platte, die aus einer Foige von Zeichen, W6rtern und Satzen besteht Dateinamenexpansion - Ersetzung von ,Metazeichen' durch aile vorhandenen Dateinamen, die den vorgegebenen Auswahlkriterien der Metazeichen entsprechen Dateitypen - Unter Unix gibt es folgende Dateitypen, die durch ein bestimmtes Zeichen in den Dateimerkmalen (anzusehen mit dem Kommando Is -I) gekennzeichnet sind delete - 16schen Delete-Taste - L6schtaste device - Zuordnung, unter UNIX sind im Directory /dev diedevices (Geratedateien wie Drucker, Terminal, Platte usw.) eingetragen Desktop - 1m CDE die Schreibtischumgebung oder Arbeitsflache Desktop-Anzeige - Die Steuerleiste im CDE, mit der CDE-Programme und -Menus aufgerufen werden Dialogbox - Ein Menu-Fenster in dem verschiedene Programmaktionen ausgewahlt oder zusatzliche Angaben hierzu eingegeben werden k6nnen Directory - Unter UNIX ein Knotenpunkt im Dateisystem (ahnlich einer Astverzweigung) die lediglich ein Inhaltsverzeichnis der unter diesem ,Zweig' enthaltenen Dateien und Unterdirectories enthiilt disk - Platte Doppelklick - Wenn mit der linken Maustaste (1) kurz hintereinander zweimal geklickt wird (--t Klicken) drag and drop - Auf der grafischen Oberflache ein Objekt anwahlen, die Maustaste gedruckt lassen und auf oder iii ein anderes Objekt (z. B. in ein anderes Fenster) ziehen und dort loslassen. Hiermit k6nnen z. B. Dateien in ein anderes Fenster verschoben werden 395
5.3 Glossar E-F E Editor - (abgeleitet von Herausgeber) Programm zum Erstellen und Andern von Dateien Eingabemodus - In den Editoren ed und vi wird zwischen Eingabe- und Kommandomodus unterschieden. 1m Eingabemodus kann Text eingegeben werden Elektronikkarten - boards (Speicher, Prozessor, Steuereinheiten) EOF - (End offile) Zeichen fUr DateiendeErsetzungsmechanismus- Hierzu geh6rt die Dateinamenexpansion durch Metazeichen und die Einschrankung dieser Expansion durch doppelte und einfache AnfUhrungszeichen; Variable werden mit dem ihr zugewiesenen Wert ersetzt ($); Ergebnisse von Kommandos als Parameter eingesetzt, wenn sie in accent graves gesetzt sind (' ') EUNET - European User Network EUUG - European UNIX User Group Example - Beispiel execute - ausfUhren Exitstatus - Jedes Kommando meldet der Shell zuruck, ob es >erfolgreich, (0) oder >nicht erfolgreich, (ungleich 0) war expression - Ausdruck F Fenster - (window) Auf einer grafischen Oberflache werden Fenster fUr unterschiedliche Arbeiten geoffnet. Fenster sind durch Rahmen begrenzt. Es konnen mehrere Fenster gleichzeitig geoffnet sein, die sich uberlappen konnen FlFO-Datei - (firstin first out) Eine Datei, die als Puffer wirkt, wobei das, was zuerst in die Datei geschrieben wurde, zuerst wieder weitergeleitet wird, z. B. die named pipe, Kennzeichen >p' File Manager - (Dateimanager) 1m CDE wird hiermit die Dateiverwaltung uber grafische Symbole und Menus abgewickelt. Directories werden als Ordner (folder'), Dateien, je nach Inhalt, als Notizblatt oder entsprechende Icons dargestellt Files - Dateien Floppy Disk- (Diskette) Ahnlich einer kleinen Schallplatte. Geeignet fUr die Speicherung kleinerer Datenmengen Fluchtsymbol - (Aufhebungszeichen) Unter der Shell wird mit dem nach hinten weisenden Schragstrich (backslash) z. B. die Bedeutung der Sonderzeichen (wie *,?) aufgehoben 396
5 Ubersichten F-H Font - Damit wird ein kompletter Satz einer Schrift (mit Buchstaben, Zahlen und Zeichen) in einer GroBe und Art (kursiv, fett) bezeichnet, wie z. B. Helvetica, 10 Punkt, Fettschrift formale Fehler- (Syntaxfehler) Jede Programmiersprache hat bestimmte Regeln. Werden diese nicht eingehalten, spricht man von Syntaxfehlern oder formalen Fehlern Formatieren - (Textformatierung) Eine Textdatei wird fOr den Druck aufbereitet, wobei z. B. ein Randausgleich erfolgt, Kopfzeilen erstellt werden, Seiten automatisch umbrochen und Seitenzahlen vergeben werden. Ober entsprechende Makros gesteuert, kann der Text eingeruckt, zentriert oder in einer anderen Schriftart dargestellt werden Formatierung einer Platte - Eine Platte wird in Blocke unterteilt und diese mit Prufsummen und Blocknummern versehen FORTRAN - (FORmula TRANslation) Eine Programmiersprache fOr technisch wissenschaftliche Anwendungen front panel- 1m CDE die Steuerleiste oder -+ Desktop-Anzeige. Funktionstasten - Tasten, denen bestimme Funktionen zugeordnet sind G group - Benutzergruppen. Jede Gruppe erhalt in der Datei /etc/passwd eine Nummer. Zusatzlich wird unter dieser Nummer in der Datei /etc/group eingetragen, welche Benutzer dieser Gruppe angehoren GU/ (Graphical User Interface) - Grafische Benutzeroberflache GUUG - German UNIX User Group H Hardware - (harte Ware) Hardware sieht man und kann man anfassen. Zu ihr gehoren z. B. Kabel, Platten, Gehause, Elektronikkarten Hierarchisches Dateisystem - Unter UNIX ist das Dateisystem hierarchisch angelegt, d.h. es beginnt bei einer Wurzel (root = /), die sich uber ,Directories in die Tiefe und Breite verzweigt (auch Baumstruktur genannt) Home-Directory - Fur jeden Benutzer ist in der Datei /etc/passwd das Directory eingetragen, in dem er nach dem Anmelden arbeitet HTML -Dateien (Hypertext Markup Language) - Sie werden benotigt, um die WWW-Seiten aufzubereiten, die dann z.8. mit dem Programm Netscape dargestellt werden Hyperlink - Verbindungen von einer Markierung zu einer anderen. 1m Hilfe-Menu vom CDE sind Hyperlinks unterstrichen. Wenn Sie mit der Maus auf Hyperlinks doppelt klicken, wird automatisch die Seite mit den weitergehenden Informationen aufgerufen 397
5.3 Glossar I-M Icon - (Kleines Bi/dchen) I-node - Die Inode ist der Dateikopf einer Datei. INlT-Taste - von initialisieren, beginnen. Meist eine Taste oder ein Schalter, um einen Rechner zu starten input - E:ingabe Interface, Controller - Steuereinheit die dafUr sorgt, daB die jeweiligen Gerate richtig betrieben und gesteuert werden. FOr jed en Geratetyp gibt es einen eigenen Controller K Kabel- Neben Stromkabel sind verschiedene Kabel (abhangig von Leitungen/Pinbelegung) zur Obertragung von Dateninformationen und Steuersignalen in einem Rechner vorhanden Klassifizierung - Zuordnung zu einer bestimmten Gruppe Klicken - Wenn die linke (1.) Maustaste gedrOckt und gleich wieder losgelassen wird Kommandomodus - Bei den Editoren ed und vi wird nach Eingabe- und Kommandomodus unterschieden. 1m Kommandomodus konnen Befehle wie z. B. ,Iosche Zeile, oder ,drucke von bis, erteilt werden Kommandos - Programmaufrufe. Kommandos konnen ausfUhrbare Programme (ursprOnglich in einer Programmiersprache geschrieben und in die Maschinensprache Obersetzt), eigene Shellprozeduren (ausfUhrbare Dateien mit Kommandos) oder shell-interne Programme (Teil des Shellprogramms selbst) sein Kommentarzeichen - In Shellprozeduren konnen Zeilen oder der Rest einer Zeile durch die Zeichen : und # als Kommentar ,entwertet, werden Konventionen - Vereinbarungen, Regeln L LAN - (Local Area Network) Verbindung von Rechnersystemen an einem Standort length - Lange login - (log - Protoko/~ eine Terminal-,Sitzung, beginnen, sich anmelden Logischer Vergleich - Abfrage auf groBer, kleiner und VerknOpfungen mit ,und, und ,oder, logische Verknupfung - Verbindungen von Abfragen mit ,oder, und ,und, M 398 Magnetplatten - Vergleichbar mit einem Plattenstapel. Platten mOssen formatiert werden, bevor sie benutzt werden konnen, dann erst kann ein Dateisystem
5 Ubersichten M-M eingerichtet werden. Sie sind zur Speicherung von groBeren Datenmengen geeignet Main Memory - Hauptspeicher major device number - Eine Zuordnungsnummer (Treiber-Nummer) fOr Geratedateieri, um die entsprechende Software (driver) zuzuordnen, damit das Gerat richtig gesteuert wird Makros - Kurzzeichen fOr besondere Verarbeitung (Anweisungen an das Programm) z. B..TH (Title Header) bewirkt, daB der nachfolgende Text als Kopfzeile aufbereitet wird Maus-Cursor - Ein kleines Symbol (meistens ein Pfeil), das sich am Bildschirm bewegt, wenn die Maus verschoben wird memory - Speicher message - Nachricht mail- Briefpost maximize - Ein MenOpunkt unter dem CDE, der ein Fenster auf die volle GroBe der Bildschirmflache vergroBert. Dies kann auch Ober eine Schaltflache(Viereck) an der rechten oberen Ecke ertolgen (--> minimize) Metazeichen - Zeichen mit einer erweiterten Bedeutung. Die Zeichen konnen durch ein oder eine Auswahl verschiedener Zeichen. oder Zeichenfolgen ersetzt werden. Unter der Shell wird z. B. das ,? ersetzt durch ein beliebiges Zeichen, das ,*. ersetzt durch eine beliebige Zeichenfolge, oder es wird ein Zeichen der in eckige Klammer, [ .. J< gesetzten Auswahl bestimmter Zeichen Obernommen minimize - Ein MenOpunkt unter dem CDE, der ein Fenster als Icon auf der Arbeitsflache ablegt. Dies kann auch Ober eine Schaltflache (Punkt) an der rechten oberen Ecke ertolgen (--> maximize) minor device number - Zuordnungsnummer fOr Geratedateien, wo sich das Gerat im Rechner befindet (z. B. 1. oder 2. Stecker der Terminal anschlOsse) modification date - Modifikationsdatum. Datum an dem eine Datei zuletzt verandert (bzw. das erste Mal erstellt) wurde Modem - (Modulator Demodulator) Umwandlung von digital auf analog und umgekehrt Modulo - Restwert einer Division von ganzen Zahlen mount - montieren, einhangen Multi-Tasking - Mehrere Programme konnen parallel ablaufen Multi-User-Betrieb - Mehrbenutzerbetrieb. Mehrere Benutzer konnen gleichzeitig am System arbeiten 399
5.3 Glossar N-P N New Line (NL) - Neue Zeile no space - kein Platz mehr. Systemmeldung, wenn auf einer Platte oder Floppy kein Platz mehr zum Anlegen oder Erweitern von Dateien vorhanden ist NoscrolllScroll - Taste, um einen ,abrollenden Text, am Bildschirm zu stoppen und wieder weiterlaufen zu lassen o Objectcode - Ein Obersetztes Quellcodeprogramm in dem fOr den betreffenden Prozessor lesbaren Code (Maschinensprache binar-Format) offset - bei Druckangaben linke Randeinstellung Oktalzahl- Eine Ziffer (Zahl) wird mit 8 Zeichen dargestellt, wobei die Zahlenwerte ganzen Zahlen (0,1,2 ...) eindeutig zugeordnet sind Optionen - wahlweises Angeben z. B. von bestimmten Parametern (zusatzliche Angaben), die eine unterschiedliche AusfOhrung des Programmes bewirken other - (andere) 1st bei den Zugriffsrechten als der Rest der Benutzer (weder Besitzer noch Gruppe) definiert output - Ausgabe p Parameter - zusatzliche Angaben bei einem Programmaufruf PATH - (Suchpfad) Die Shell sucht der Reihe nach in all jenen Directories nach einem Kommando, die als Wert der Variablen PATH zugewiesen wurden PaBwort - (Codewort, Geheimwort). Es wird beim Anmelden verlangt und ist beim Eintippen nicht sichtbar PID - (Process IDentification Number) Nummer des Prozesses Pipe - (Rohr) Mehrere Kommandos k6nnen Ober den Pipe-Mechanismus zusammen verarbeitet werden, wobei jeweils die Ausgabe des vorhergehenden Kommandos die Eingabe des nachfolgenden Kommandos wird. Das PipeZeichen ist >i' Plattenkapazitat - Der zur VerfOgung stehende Platz zum Anlegen von Dateien (meist in Megabytes berechnet) Pop-up-Menu - siehe Pull-Down-Menu Positionsparameter - Beim Aufruf eines Kommandos werden die einzelnen Parameterden Variablen $1, $2 .. $9 je nach Position (1.Parameter, 2.Parameter usw.) zugewiesen. $0 gibt den Namen des Kommandos wieder PPID - (Parent Process IDentification Number) Nummer ges ,Eltern,-Prozesses print - drucken 400
5 Ubersichten P-$ Programmiersprachen - Unter UNIX u.a. verfOgbar: COBOL, BASIC, FORTRAN, C, PASCAL, MODULA-2, LISp, ADA, APL, PROLOG Programmverzweigungen - Unterschiedliche FortfOhrung eines Programmes, je nach erfOliter Bedingung (if ... wenn ... ) Provider - Dies sind Firmen, die Dienste im Internet oder anderen Netzen anbieten Pull-Dawn-Menu - Auf der grafischen Oberflache werden MenOs so ben an nt, die aufgrund von einer Schaltflache herausklappen. In den MenOs kann dann eine Funktion ausgewahlt werden Q Quellcode -In einer Programmiersprache erstelltes Programm. Bei heheren Programmiersprachen meist der englischen Sprache angeglichen. Der Quellcode wird in ein Maschinenprogramm Obersetzt (kompiliert) und ergibt dann den Objektcode R read- lesen Realzeitsystem - Die Programme erhalten eine Prioritat zugewiesen. Wichtige Aufgaben kennen somit vorrangig durchgefOhrt werden Relativer Pfadname - Die Datei wird yom jeweiligen Standpunkt (Arbeitsdirectory) relativ angesprochen. Liegt die Datei in einem Directory Ober dem aktuellen Directory, wird das >Hinaufgehen< mit zwei Punkten (.f) gekennzeichnet. Die einzelnen Directories werden jeweils durch einen Schragstrich von einander getrennt. (z. B. wird die Datei lusr/kurs/monika/Uebungenlloesche relativ yom Directory lusr/kurs/monika angesprochen mit: Uebungen/loesche) S Schaltflache - (push button) Auf einer grafischen Oberflache eine Markierung (oft der Name in einer MenOzeile oder ein Icon in Form eines Schalters oder eines Knopfes. Wird mit der Maus die Schaltflache angeklickt (-> Klicken), wird eine Aktion gestartet (z. B. ein MenO ausgeklappt) Schleifen - eine oder mehrere Anweisungen sollen mehrmals wiederholt werden. Unter der Shell werden Schleifen eingeleitet durch die Kommandos: for, while oder until sequentielle Verarbeitung - Daten kennen nur nacheinander gelesen oder geschrieben werden (z. B. bei einem Magnetband), im Gegensatz zu einer direkten Verarbeitung (direct access - z. B. beim Zugriff auf die Platte) Shell-Prozedur - Datei mit einem oder mehreren Kommandos bzw. Kommandofolgen. Um eine Shellprozedur selbstandig ablaufen zu lassen, muB die Datei ausfOhrbar sein (chmod +x) Shell-Variable - Unter einem Namen wird ein Wert zugewiesen, den Sie spater mit $ und dem angegebenen Namen wieder abrufen kennen 401
5.3 Glossar s-s shutdown - Das System herunterfahren Single-User-Modus - Ein-Benutzer-Betrieb Software - (weiche Ware) Die Software kann weder gesehen noch angefaBt werden. Zur Software zahlen Programme, die zum Betrieb eines Rechners und zur AusfOhrung der ihm ubertragenen Aufgaben notwendig sind Speichermedien - Dies sind >Datentrager<, auf denen Daten geschrieben werden k6nnen. Hierzu geh6ren Platten, Floppies, Magnetbander usw. Spooler - (Spool simultaneous peripheral operation online) Ein Programm, das Druckauftrage sam melt und sie der Reihe nach abarbeitet Sprunganweisung - In Obereinstimmung mit einem vorgegebenen Muster wird ein Programm unterschiedlich fortgesetzt standalone - Ais >standalone< werden Programme bezeichnet, die ohne Hilfe des Betriebssystems auf der nackten Hardware ablaufen k6nnen, z. B. das Betriebssystem UNIX beim Laden von einem Magnetband. (Es bleibt speicherresident - andauernd geladen) Standardeingabe, Standardausgabe - Unter der Shell ist die Standardeingabe und die Standardausgabe das Terminal. Die Ein- und Ausgabe kann durch entsprechende Zeichen ( <, >, », 2» umgeleitet werden Statement - (Aussage) Anweisung Steuereinheiten - (Controller) Sie sorgen dafur, daB die einzelnen Gerate (Terminal, Drucker usw.) richtig betrieben, gesteuert werden stream-oriented - (Datenstrom) zeichenweises Abarbeiten von Dateien Streamer oder Streamer-Kassette - Ahnlich einer Musikkassette ein kleineres Magnetband in einer Kassette. Es wird verwendet, um kleinere Datenmengen zu sichern Strings - Zeichenketten, wie sie z. B. bei einer Pipe von dem vorherigen Kommando an das nachfolgende Kommando Obergeben werden Stromversorgung - Rechner werden intern nicht mit 220 Volt betrieben und ben6tigen deshalb eine eigene Stromversorgung (Akku) substitute - ersetzen Superuser Systemverwalter - Ein mit besonderen Rechten (keine Einschrankung der Zugriffsrechte) versehener Benutzer (root - Benutzernummer in /etc/passwd = 0) Style Manager - Ein Menu unter dem CDE, mit dem das AuBere der grafischen Oberflache verandert werden kann (Farben, Hintergrund, Fonts etc.) 402 subpanel - Zusatzliche Bedientafel, die von der Desktop-Anzeige (front panel, main pane~ ausgeklappt werden kann. Aus dieser Bedienflache heraus k6nnen weitere Programme/Funktionen gestartet werden
5 Obersichten s-u Synopsis - knappe Zusammenfassung Syntax error - Regelfehler (z. B. formaler Fehler in einem Programm) T TCPIIP (Transmission Control Protocol I Internet Protocol), die bedeutendste Protokollfamilie, mit der die meisten Anbindungen zwischen UNIX-Rechnern und zahlreichen anderen Systemen in einem LAN oder z. B. Ober Internet verbunden sind. temporarer Puffer - Viele Editoren, wie z. B. der ed und der vi, arbeiten nicht auf der Originaldatei, sondern legen wah rend des Editierens einen temporaren Puffer an (Bereich im Speicher), der durch ein Schreib-Kommando erst in die Originaldatei auf der Platte zurOckgeschrieben wird Terminal - Dialogstation (Bildschirm + Tastatur) test - (prOfen) Ein shell-internes Kommando, das nicht als Dateiname benutzt werden so lite Text-Cursor - Sobald ein Maus-Cursor in ein Feld fOr Texteingabe kommt, verandert er sich zu einem anderem Symbol meistens zu einem kleinen Strich Textverarbeitungsprogramm - Ein Programm, mit dem Texte erstellt und gleichzeitig ,druckgerecht< (Seitenumbruch, Seitenzahl, Randeinstellung, Tabellen, verschiedene Schriftarten etc.) aufbereitet werden Time Sharing - Mehrere Programme erhalten quasi gleichzeitig Rechnerzeit. In Wirklichkeit wird die Rechnerzeit in etwa gerecht aufgeteilt, und jeder ProzeB erhalt immer wieder kurzfristig Rechnerzeit zugeteilt. (siehe auch Realzeitsystem) Tools - (Werkzeuge) Ais Werkzeuge werden Kommandos bezeichnet, die bestimmte Aufgaben erledigen. z.B. gehoren zu Software-Tools Programme, die die Softwareentwicklung unterstOtzen, wie Programme zurVersionspflege, Programmgenerierung etc. U Umleitungszeichen - Unter der Shell konnen Standardausgabe (> und »), Standardeingabe «), und Fehler (2)) mit den in Klammern angegebenen Zeichen umgeleitet werden unconditional- ohne Konditionen (Bedingungen) undo - rOckgangig machen unmount - demontieren, au shang en user - Benutzer 403
5.3 Glossar V-Z V verbose - Igeschwatzig, weitschweifend, wortreich) Wird unter UNIX die Option -v angegeben, bedeutet dies, daB alles, was in dem Kommando vor sich geht, ausfOhrlich angezeigt wird Verschachtelung - Werden mehrere if-Bedingungen ineinander aufgerufen, oder Kommandos rufen weitere Kommandos auf, spricht man von Verschachtelung, etwa vergleichbar mit Kinderspielzeugschachteln, die ineinandergesteckt werden Vordefinierte Variable -In der Shell sind fOr jeden Benutzer bestimmte Werte von Variablen vordefiniert (z. B. $HOME mit dem Directory, das in der Datei letc/passwd als ,Home-Directory' eingetragen wurde) W WAN - (Wide Area Network) Verbindung von Rechnersystemen Ober ein Oberregionales Netzwerk width - Breite working directory - Arbeitsdirectory. Hierbei handelt es sich jeweils um jenes Directory, unter dem gerade gearbeitet wird. Mit dem Kommando pwd (print working directory) wird es angezeigt workspace - siehe ..... Arbeitsf/ache write - schreiben Wurzel- (root, Kennzeichen ,I,) Beginn des Dateisystems WWW - (World Wide Web) Weltweite Vernetzung von Informationen Ober das Internet. HierfOr werden Informationen Ober HTML-Seiten aufbereitet, die es erlauben, weitere Anfragen Ober Hyperlink zu verknOpfen. Mit Hyperlinks kennen wiederum weltweit Rechner angesprochen werden. Aile greBere Firmen bieten Ober das Internet einen Informations- oder Servicedienst an. Sogar die ARD und ZDF erreichen Sie seit Mitte 1996 unter http://www.ard.de und http://www.zdf.de Wysiwyg - (What you see is what you get) Damit werden Programme (in der Regel Textverarbeitungsprogramme) bezeichnet, die am Bildschirm die Ausgabe so anzeigen, wie sie spater auch ausgedruckt werden Z zeilenorientierter Editor - Anderungen kennen nur auf die Zeile bezogen erfolgen Zugriffsrechte - FOr jede Datei sind Lese-, Schreib- und AusfOhrerlaubnis (read, write, execute) fOr den Besitzer einer Datei, Benutzer der gleichen Gruppe und die restlichen Benutzer (user; group, others) als Dateimerkmal eingetragen. Mit dem Kommando Is -I werden sie angezeigt, mit dem Kommando chmod (change mode) kennen sie verandert werden 404
6 Literaturverzeichnis Es gibt zwischenzeitlich eine ganze Reihe guter UNIX-Bucher. Viele davon sind in englischer Sprache geschrieben. In diesem Kapitel sind nur einige Bucher aus dem reichhaltigen Angebot herausgesucht, die Ihnen, aufbauend auf diesem Lehrbuch, einen tieferen Einstieg in UNIX ermoglichen. Hierzu gehOrt auch die UNIX System V Standard-Dokumentation, herausgegeben von Prentice Hall, die aus verschiedenen Manuals besteht. Die einzelnen Themen: 5.1 Standarddokumentation UNIX SYSTEM V.4.2 5.2 WeiterfOhrende Literatur und Literaturangaben 405 C. Wolfinger, Keine Angst vor UNIX © Springer-Verlag Berlin Heidelberg 2000
6.1 Standarddokumentation UNIX V.4.2 Die Dokumentation ist so umtangreich, daB Sie ein eigenes Regal datOr ben6tigen wOrden. Hier nur ein kurzer Oberblick mit den jewei/igen Inhalten. 406
Standarddokumentation UNIX V.4.2 UNIXSVR4.2 UNIX V.4.2 Referenz-Manuale In der nachstehenden Aufzahlung sind jene Manuale in Fettdruck hervorgehoben, die fOr Sie interessant werden konnten, wenn Sie sich tiefer in UNIX einarbeiten mochten. ADMIN-A Basic System Administration Handbuch fOr den Systemverwalter ADMIN-B Advanced System Administration WeiterfOhrende Bedienungsanleitung API Operating System API APLI Application Builder Users's Guide & Reference AUDIT Audit Trail Administration CHAR Character User Interface Programming COM Command Reference Handbuch fOr den Anwender zweiteilig: Kommandos von a bis I und Kommandos von m bis z C-TOOLS Tools Programming in Standard C DESK-GUIDE Guide to UNIX Desktop DESK-HAND Desktop Handbook DESK-Quick Desktop Quick Start DRIVER Device Driver Reference DRIVER-P Portable Device Interface FILES System Files und Device Reference GRAPHIC Graphical User Interface Programming INST Installation Guide NET-AD Network Administration NET-PR Network Programming Interface PC PC Interface Administration PROGREF Programmer's Reference Manual Handbuch fOr den Programmierer SOFT UNIX Software Development Tools STREAMS Streams Modules and Drivers SYS Programming with System Calls USERS User's Guide WINDOW Windowing System API Reference 407
3 UNIX - praktisch angewandt Inhalt der Referenzbucher Die in den ReferenzbOchern beschriebenen Kommandos sind unterteilt in Sektionen (Sections), die von 1 bis 7 und 0 (fOr Device Drivers) numeriert sind (z.T. noch unternumeriert mit Buchstaben). Command Reference (Commands a-I) Command Reference (Commands m-z) Diese HandbOcher sind als Nachschlagewerk zu verstehen. Sie finden in diesen BOchern aile Kommandos alphabetisch sortiert, die Sie als "normaler Benutzer" verwenden. Diese Kommandos sind im Dateisystem unter den Directories /bin und /usr/bin (fur binary programs) abgelegt. 1 General-Purpose User Commands Kommandos fOr den "normalen" Anwender, wie z. B. date, Is 1C Basic Networking Commands 1F Form and Menu Language Interpreter Operating Systems API 2 System calls 3 BSD System Compatibility Library 3C Standard C Library 3curses ETI-curses Library 3E Executable and Linking Format Library 3G General-Purpose Library 31 Identification an Authentication Library 3M Math Library 3N Networking Library 3S Standard I/O Library 3W MultibytelWide Character Conversion Library 3X Specialized Libraries Windowing System API 408 3Dt Desktop Metaphor 3DnD Drag and Drop 30LlT MoO LIT 3curses ETI-curses Library System Files and Devices 4 System File Format 5 7 Special Files 01-05 Device Driver Miscellaneous Facilities
6.2 WeiterfOhrende Literatur Diese Auswahl soli kein Urteil uber andere auf dem Markt erschienenen UNIX-Bucher sein. 1m deutschen Handel sind zwischenzeitlich viele UNIX-Bucher erhaltlich, wobei viele nur in englischer Sprache verfugbar sind. Einige sind spezialisiert auf bestimmte Themen wie z.B. Wordprocessing (Textverarbeitung), Editor vi, Systemverwaltung, fortgeschrittene Programmierung, andere auf bestimmte UNIX-Portierungen (SIN/X, bsd u. a.). Wie der Name dieses Kapitels schon sagt, handelt es sich um weiterfuhrende Literatur, die Ihnen einen tieferen Einstieg in UN/X ermoglicht. Viele Buchhandlungen fUhren Informationslisten uber DV-Literatur, so auch JF Lehmanns, Fachbuchhandlung, 50937 Koln mit Bestellservice zum Nul/tarif uber 0130-4372 oder E-mail: bestellung@jf-Iehmanns.de. 409
3 UNIX - praktisch angewandt Auswahl einiger im deutschen Handel erhaltlichen UNIX-Bucher: J.Gulbins, K.Obermayr UNIX V.4. Begriffe, Konzepte, Kommandos Schnittstellen Springer Verlag Kernighan/Ritchie Programmieren in C Carl Hanser- Verlag MOnchen Bolsky/Korn The Korn-Shell Command and Programming Language Prentice Hall OSF OSF/1 Operating Systems mit folgenden Banden: OSF/1 User's Guide OSF/1 Command Reference OSF/1 Programmer's Reference OSF/1 System and Network Administrator's Reference Application Environment Specification (AES) Operating System Programming Interface Volume Prentice Hall I. Trommer Bourne- und Korn-Shell Oldenbourg Verlag I. Trommer, S. Schmitz Systemadministration unter UNIX Oldenbourg Verlag XlOPEN Portability Guide Version 4 (XPG4) Er besteht aus einem Satz aus 5 BOchern X/OPEN Compo Ltd Auswahl einiger LNIX-Bucher: Hetze,Hohndel/MOlier/Kirch Anwender LlNUX Handbuch LunetlX MOiler Hetze GbR Michael Kofler LlNUX - Installation, Konfiguration, Anwendung Addison-Wesley Marc Andre Selig LlNUX Markt & Technik Stefanie Teufel Jetzt Ierne ich Linux Markt & Technik Zusatzliche Literaturangaben: F. Vester 410 Denken, Lernen, Vergessen Deutsche Verlags-Anstalt OVA
7 Stichwortverzeichnis Dieses Stichwortverzeichnis soli Ihnen helfen, schnell nach einem Begriff zu suchen. Findet sich ein Begriff auf mehreren Seiten, sind die Seitenzahlen durch Kommas getrennt angegeben. Handelt es sich bei dem Stich wort um die Syntaxbeschreibung eines Befehls, ist das Wort ,Kommando< mit angegeben. Kommandos sind zusatzlich noch alphabetisch unter dem Kapitel 5. 1 aufgefOhrt. In der beigelegten Kurzreferenzkarte finden Sie auBerdem die Mufig ben6tigten Kommandos als Obersicht nach Funktionen und alphabetisch sortiert sowie Wissenswertes uber UNIX. 411 C. Wolfinger, Keine Angst vor UNIX © Springer-Verlag Berlin Heidelberg 2000
Symbole-A Symbole 412 " " - Ersetzungsmechanismus 103 #!lbin/csh 257 #!/bin/ksh 257 #!lbin/sh 257,326 #!/usr/bin/csh 326 $ - Bereitzeichen 84 $# 268 $$ 268 $0 - Kommandosubstitution 108 $* 268 $? 268 $0 267 $1 267 $DISPLAY 266 $ENV 266,316 $EXINIT 266 $HISTSIZE 316 $HOME 264, 266 $home 328 $HOMEI.exrc 150 $HOMEI.kshrc 317 $IFS 266 $LANG 266 $LOGNAME 266 $OLDPWD 316 $PATH 266 $prompt 328 $PS1 266 $PS2 267 $PWD 267, 316 $SHELL 267 $TERM 267 $TZ 267 $VISUAL 267, 316 % - Bereitzeichen C-Shell 84 && - Zeichen fUr bedingte AusfUhrung 273 ; - Kommandos verketten 94 . (Punkt fOr aktuelles Directory) 54 .. (fOr darOberliegendes Directory) 54 .cshrc 326 .dtprofile 263 .kshrc 308 .login 263, 326 .profile 263, 308 .,rhosts 238,241,244 .sh_history 309 I - root 51 Idev 170 Idev/fdO 202 Idev/nrmtO 215 Idev/null 91 letc/hosts 238 letc/hosts.equiv 238, 241 , 244 letc/mount (Kommando) 203 letc/passwd 43 letc/passwd (Auszug aus der Datei) 44 letc/umount (Kommando) 205 Ipub/incoming 240 Ipub/outgoing 240 Itmp 240 = - Zuweisung von Variablen 107 > - Ausgabeumleitung 87 » - Ausgabeumleitung (anhangen) 90 @zahl = 328 1- Pipe 95 II - Zeichen fOr bedingte AusfOhrung 274 , , -keinerlei Substitution 109 , '- Kommandosubstitution 108 $argv 328 2> - Fehlermeldungen umleiten 92 A Abbruch eines Kommandos 256 Abhangigkeit von Ergebnissen 257 Ablaufdiagramm 14 Abmelden yom System 47 absolute Pfadnamen 50 Acceleration (CDE) 368 Add Workspace 365 Addition 314 Adjust 368 Adobe Photoshop 23 AIX 20
A-B 7 Stichwortverzeichnis Aktivieren weiterer Arbeitsbereiche 346 aktuelle Anzeige des SpoolProgramms Ip 173 aktuelles Directory 58 alias (Kommando) 312 alias kurzel Befehl (csh) 328 Alias-Funktionen 306 Alias-Mechanismus 312, 326 allexport 318 Allow Primary 370 American Telephone and Telegraph 18 An- und Abmelden (Zusammenfassung) 48 Analog-Zeitanzeige 364 Andern der Desktop-Anzeige 363 Andern des PaBwortes 46 Andern von Zugriffs- und Besitzerrechten 176 Andern von Zugriffsrechten (CDE) 359 Anderungsdatum 167 AnfUhrungszeichen 103 Anmeldefenster im CDE 340 Anmelden 35 Anmeldung 44 Anwendungsschicht 237 Anzeige eines Datei-Inhaltes 65 Application-Manager 364 Application-Manager (CDE) 343 Applixware 23, 229 Arbeitsbereiche (CDE) 342 Arbeits-Directory 49 Arbeitsflache 38, 340, 345 Archiv 214 Arithmetische Anweisungen 13 ASCII 65 ASCII-Code 11 ASCII-Terminal-Einstellung 340 ASCII-Terminals 35 Assembler 18 at (Kommando) 222 AT&T 18 at-Jobs 223 Aufbewahrungsort 225 Aufhebung von Metazeichen 102 Aufruf eines Kommandos 256 Aufteilung der Platten 190 ausfUhrbar 255 Ausfuhrerlaubnis 179 Ausgabe eines Kommandos >wegwerfen< 91 Ausgabeumleitung 87 Aushangen der Floppy 205 Ausschalten des Systems 76 Austausch von Daten mit dem PC 227 Austausch-Datentrager zu PCs 202 Austauschformat rtf 229 Auswahlmenu 35 auto repeat 368 Auto Screen Blanking 369 Automatisches Starten von Kommandos 362 awk 331 B Backdrop - Auswahl eines Hintergrunds (CDE) 367 BACKSPACE 29 Bandmarke 212 banner 315 banner (Kommando) 315 BASIC 16 batchorientierter Editor sed 151 Baumstruktur 12, 57 Bedientafel uber dem Texteditor (CDE) 342 Beep - Einstellung fUr den Warnton (CDE) 369 Befehle 26 Befehlszeileneditor 306, 310 Befehlszeileneditor (Funktionen) 311 Beispiel der Shell-Prozedur -Ioschen 283 413
8-C belegten Platz (Blockanzahl) anzeigen 190 Bell Laboratories 18 Benutzer 43 Benutzerdaten, Sicherung 225 Benutzerinformation 70 Benutzername 167 Bereit-Zeichen 48 Bereitzeichen der Shell 84 Berkeley Universitat 18 Besitzerrechte 59 Besitzrechte andern 182 besondere Hinweise 27 Besonderheiten im vi 150 Betriebssystem 5, 6, 7 Betriebssystemkern 82 Betriebssystem (Zusammenfassung) 9 bg %Jobnummer 319 bgnice 318 biff 74 Bildschirm fUr Nachrichten sperren 73 Bildschirm stoppen 66 Bildschirm weiter laufen lassen 66 Bildschirmeinstellungen 369 bildschirmorientierte Editoren 121 binare Dateien 11 Binarformat 65 BISON 19 Bit-Obertragungschicht 237 block oriented 171 boot 33 Bourne 18 Bourne-Shell 85, 326 break (Kommando) 293 breaksw 327 Bridge 236 BSD 18 BSD-UNIX 20 Buroautomation 23 c 414 C 16 CAD/CAM 23 cancel (Kommando) 172 canceln 28 Carriage Return 28 case 257,327 case (Kommando) 297 cat 88 cat (Kommando) 65 cat (Kommando) (aneinanderhi:ingen) 90 cat> (Kommando) 88 CATIA 23 cd 58 CDE 19, 22, 36 CDE (Common Desktop Environment) 34 CDE Menu File 357 CDE Menu Remove from Workspace 358 CDE Menu Selected 357 CDE Menu View 357 CDs 4 Central Processing Unit 6 Change Permission (CDE) 356 character oriented 171 Chips 5 chmod mit symbolischer Angabe (Kommando) 177 chmod mit Zahlenwerten (Kommando) 179 chown (Kommando) 182 clear (Kommando) 315 Click in (CDE) 370 click volume (CDE) 368 cmp 331 cmp (Kommando) 335 COBOL 16 Color - Auswahl der Farben 366 Command Line Login 340 COmmercial Business Oriented Language 16 Common Desktop Environment 22 Compiler 17,18 compress (Kommando) 247 CO NT 320 continue (Kommando) 289
C-D 7 Stichwortverzeichnis controller 4 Copy (CDE) 41, 355 Copy as Link 357 Corel Draw 23 COSE 19 cp (Kommando) (eine Datei) 159 cp (Kommando) (mehrere Dateien) 160 CP/M 8 cpio - Inhaltsverzeichnis 217 cpio (copy input output) 207 cpio -i (Kommando) 216 cpio -0 (Kommando) 214 CPU 5,6 CPU-Leistung 8 C-Quell-Programm 16 crontab 223 C-Shell 85, 326 CTRL 28 CTRL+d 47, 72 CTRL+q Bildschirm we iter laufen lassen 66 CTRL+s - Bildschirm stoppen 66 Current Help 353 Cursor 28 Cursortasten 28 cut 331 cut (Kommando) 333 cut (CDE) 41 o Darstellung des Ordners (CDE) 358 date 33 date - Auszug Manualseite 64 date (Kommando) 61 Datei 11 Datei erganzen 90 Datei erstellen 88 Dateibaum 49 Dateien aneinanderhiingen 90 Dateien fUr den Druck aufbereiten 175 Dateien in ein anderes Directory >schieben< 163 Dateien 16schen 102 Dateien such en 183 Dateien umbenennen 163 Dateikopf 167 Dateimanager (CDE) 57, 342, 354 Dateimerkmale anzeigen 169 Dateinamen 155 Dateiset 212 Dateisystem 11, 49 Dateisystem einrichten 167 Dateityp 70, 167 Dateitypen (CDE) 354 Datenbanken 23 Datendarstellungschicht 237 DAT-Laufwerke 212 Datum 33 Datumsanzeige 61 dd 241 dd (Kommando) 242 DEC 18 default 58, 327 Delete (CDE Desktop-Anzeige) 363 DELETE-Taste 29 Denken, Lernen, Vergessen 2 DESCRIPTION 63 Desktop 22,36,345 Desktop-Anzeige 38, 341 df (Kommando) 191 DIAGNOSTICS 63 Dialogbox Find 360 Dialogbox fur Kommandoaufrufe 362 Dialogbox Permission 359 Dialogbox Set Filter Options 359 Dialogbox Set View Options 358 Dialogbox, um Dateien auszuwahlen 347 Dialogverarbeitung 21 Dienstprogramme 22 diff 331 diff (Kommando) 334 Digital Archiv Tape 212 Digital UNIX 20 Digital-Zeitanzeige 364 Directories (Erlauterung spez. unter UNIX) 12 415
O-F Directory 53 Directory (allgemeine Beschreibung) 11 DISPLAY 243 ditroff 121 Division 314 DLT-Bander 212 Doppelklick 362, 368 DOS 244 dosdir (Kommando) 227 dosformat (Kommando) 227 dosread (Kommando) 227 doswrite (Kommando) 227 Double-Click 368 Druckauftrage 172 Druckersymbol (CDE) 356 Druckformatierprogramm 120 Druckmanager (CDE) 343 DTP - Desktop Publishing 23 DTP-Bereich 19 DTSOURCEPROFILE=true 263 du (Kommando) 190 Duration 369 E 416 echo 105,257 echo (Kommando) 259 ed 121 ed - Bereich definieren 123 ed (Kommando) 122 Editor 120 Ein- und Ausgabe 14 Eingabe an der Tastatur 28 Eingabemodus 122 Einlesen gesicherter Dateien von einer Floppy 210 Einlesen gesicherter Daten aus einem cpio-Archiv 216 eject 229 Elektronikkarten 4 elektronische Post 73 elif 276 emacs 310,318 Endezeichen (CTRL+d) 72 endif 327 Endlosschleife 295 endsw 327 entfernbare Datentrager 201 Entleeren des Papierkorbs (CDE) 361 env (Kommando) 262 ENV=$HOMEI.kshrc 313 EOF 47,120 EOF (end of file - Zeichen fOr Dateiende) 93 Ersetzungsmechanismus der Shell 105 Erstellen eigener ShellProzeduren 257 Erstellen eines Archivs 214 Erstellungsdatum 167 Ethernet-Karte 236 EUCLID 23 EUnet 75 EXCEL 229 ex-Editor 144 exit (Kommando) 275 Exit (CDE) 343 export 262,314 export ENV 313 expr 265 expr (Kommando) 294 F false (Kommando) 293 Farbzuordnung (CDE) 366 fc (fix command) 309 Fehler in Shell-Prozeduren 284 Fehlermeldungen 86 Fehlermeldungen umleiten 92 Fenster 36, 39 Fenster schlieBen 42 Fettdruck 27 fg %Jobnummer 319 FIFO-Datei 97 file (Kommando) 189 File (CDE) 355 File Manager (CDE) 354 File-Server 222 file transfer protocol 236
F-H 7 Stichwortverzeichnis Filter Options (CDE) 359 Filterprogramm 151, 332 find (Kommando) 183, 207 Find (CDE) 356 find ... I cpio ... (Kommando) 207 Find/Change-Dialogbox (Texteditor) (CDE) 349 Finden von Dateien oder Dateiinhalten (CDE) 360 find-Kommando 207 finger (Kommando) 70 Floppies 201, 202 Floppies oder Platten montieren 203 Fluchtsymbol 102 FluBdiagram 14,281 Font - Auswahl der Schriften 367 for 285 for do done 257 for in do done (Kommando) 288 foreach Name ( argumente ) Befehlsfolge end 327 formatiert 202 Formatierung 167 FORmula TRANslation 16 for-Schleife 286 FORTRAN 16 FrameMaker 23 frei zur VerfOgung stehende Blocke 191 front panel 38 ftp 227,236 ftp - Auswahl der wichtigsten Befehle 245 ftp (Kommando) 245 ftp (file transfer protocol) 244 function (Kommando) 299 G Geratedateien (devices) 170 Go Home (CDE) 355 Go To (CDE) 355 goto 327 GoUp (CDE) 355 Grafik-Terminals 35 Grafische Benutzeroberflache 22 grafische Oberflache 36 grep 331 grep (Kommando) 98, 188 GroBe in Bytes 167 Grundrechenfunktionen 314 Gruppe 167 Gruppenzugehorigkeit 44 GUI22 GUUG 75 H halt 76 Handedness 368 Hardlink 165 Hardware 5 Hardware und Software 4 Hauptspeicher 6 head (Kommando) 337 Header (Kopfzeile) - mail 74 Help - Index Search (CDE) 353 Hewlett Packard 18 hierarchisches Dateisystem 11 Hilfe (CDE) 42 Hilfe-MenO (CDE) 343, 352 Hilfsfunktionen im CDE 352 Hintergrund (CDE) 367 Hintergrundprozesse 110 HinzufOgen einer Bedientafel (CDE) 364 HinzufOgen eines Arbeitsbereichs (CDE) 365 HinzufOgen von Program men (CDE) 364 history 310 History-Mechanismus 306,309,326 Home-Directory 43, 49 Home-Session 370 hostname (Kommando) 239 HP-UX 20 HTML-Dateien 67, 348 HUP 320 417
I-L IBM 20 Icon 36,42 IDEAS 23 IEEE 19 if then else fi 257,274 if ( ausdruck ) then 327 ignoreeof 318 Ikonisieren (CDE) 345 Individuelle Zugriffsrechte fOr Dateien 21 Informationen Ober Benutzer 70 Informix 23 Inhaltsverzeichnis von Dateien 12 INIT-Taste 33 Inkonsistenzen 76 Inkrementelle Sicherung 225 Innenleben eines Rechners 5 inode 167 INT 320 integer 314,315 Integer-Variable 265 Intel 8 Interface 6 International Standards Organization 236 IRIX 20 ISO 236 J Jobcontrol 114,307,319 Job-Kontrolle 326 Jobsteuerungen 321 K 418 Kabel 4 Kapazitaten der Floppies 211 keinerlei Substitution 109 Kennzeichen der Dateitypen 171 Keyboard Tastatureinstellung 368 KILL 320 kill (Kommando) 112 kill -9 319 kill Signal %Jobnummer 319 Kommandoaufruf 267 Kommandoaufruf - Syntax 83 Kommandomodus 122 Kommandos 26 Kommandos im ed 137 Kommandos verketten 94 Kommandosubstitution 108 Kommentar 257 Kommerzielle Software 24 Kommunikation 22 Konventionen 25 Kopieren eines Dateibaumes mit cp -r 161 Kopieren eines Dateibaumes mit cpio 207 Kopieren im CDE (Textbereiche) 41 Kopieren von Dateibaumen 214 Kopieren, L6schen und Umbenennen von Dateien 159 Korn-Shell 85, 306 ksh -0 vi 310 KOnstliche Intelligenz 24 kursiv 27 l LAN 22 Laufwerk 202 Lernmethode 2 Leseerlaubnis 179 Lichtkontrollanzeige (CDE) 343 Link-Icon 357, 360 Link-Icons 360 LlNUX 20 LISP 24 In (Kommando) 166 In (Kommando) (Hard link) 165 In (Kommando) (symbolischer Link) 166 Local Area Network 22 Login 34,45 Login-Directory 48 Logische Vergleiche 13 logout 47
L-N 7 Stichwortverzeichnis Loschen (Texte) im CDE 41 Loschen von Dateien (CDE) 361 Loschen von Dateien und Dateibaumen 162 Loschprogramm 281 Loschtaste 28 Lotus 229 Lotus Notes 23 lowercase 314 Ip (Kommando) 172 Ip-Druckauftrag abbrechen 172 Ipq (Kommando) 174 Ipr 173 Iprm (Kommando) 174 Ipstat (Kommando) 173 Ipstat -t 172 Is 50 Is (Kommando), um Dateimerkmale anzuzeigen 169 Is (-IFR) 52 M Macintosh 244 Magnetband 211 Magnetooptische Platten 201 Magnetplatten 4 mail 239 mail (Kommando) 73 Mail-Tool 342 Main Memory 6 Mainframes 244 major device number 171 Makros 67 man (Kommando) 62 Manualseiten 63 Mathematica 23 Maus 36,37 Maus-Cursor 37 Maximize (CDE) 42 Menu File (CDE) 347 Menu Style-Manager 366 Menus des Dateimanagers 357 Merkmale einer Datei 167 mesg (Kommando) 73 message 71 Metazeichen (ed, sed, grep und vi) 134 Metazeichen im Editor ed 133 Microsoft 18 Minimize (CDE) 42 minor device number 171 mkdir (Kommando) 157 mkfs 167, 202 MOD 201 Modem 236 modification date 184 Modulo 314 Modus 58 more (Kommando) 66 Motif 19 mount 190 Mouse - Mauseinstellung 368 MS/DOS 8 mt (Kommando) 213 Multiplikation 314 Multi-Tasking 21 Multi-User-8etrieb 21 Multi-User-Modus 33 MUNIX 18 mv (Kommando) 163 mwm 34 N Nachrichten elektronisch senden 73 Name der Datei 167 named pipe 171 Netz 236 Netzwerkfahigkeit 22 Neuanlegen und Loschen von Directories 157 neue Zeile 28 neuer Arbeitsbereich 346 neues Terminal 40 Neustart (CDE) 370 New Folder (CDE) 355 NFS (Network File System) 243 NIS (Network Information Service) 242 no rewind 215 419
N-R no space 190 noclobber 318 nohup (Kommando) 338 normale Datei 53 Noscroll 28 Novell 19 nroff 121 o Objectcode 17 Oktalzahl 179 Online-Manual 62 Open Systems Interconnection 237 OpenWin 22 openwin 34 Optionen in der Korn-Shell 318 Options (CDE Anmeldefenster) 340 Oracle 23 OSF 19 OSI-Model 237 OSI-Schichtenmodel 237 p 420 Papierkorb 344 Papierkorb (CDE) 361 Parent Process IDentification Number 112 Partitions 190 password (PaBwort) 45 PaBwort 42,244, 245 PATH 83,261 PATH als Suchpfad 255 PC (Personal Computer) 227 PCS 18 Personal Computer 227 Pfad 12 Pfadnamen 51 pg (Kommando) 68 PID 112 ping (Kommando) 238 Pipe-Mechanismus 95, 256 Pipe-Zeichen ( I) 95 Plattenbelegung 190 Plattencheck 76 Plausibilitatsprufungen 272 Point in Window (CDE) 370 Positionsparameter 257,267 Positionsparametern 268 POSIX 19 Post lesen 74 PPID 112 pr (Kommando) 175 Process IDentification Number 112 ProEngineer 23 Programm 5,13 Programme im Hintergrund starten 110 Programme vorzeitig abbrechen 112 Programmiersprache 14 Programmiersprachen 5, 16 Programmverzweigungen 13 Progres 23 PROLOG 24 Prompt 84 Provider 73 ProzeB 17 ProzeBkontrolle 307,319 ProzeBnummer 111 Prozessor 4 Prozessorboard 5 ps 319 ps (Kommando) 113 public domain 20 Pull-Down-Menus 36, 40 Put Back 361 Put in Trash (CDE) 356, 361 pwd 49 Q QIC-Format 212 Quellcode 17 QUIT 320 R r -3 (Korn-Shell, History) 310 Raise Window (CDE) 370 rcp 236
R-S 7 Stichwortverzeichnis rcp (Kommando) 239 read 257 read - internes Shell-Kommando 271 read in Verbindung mit dem Pipe-Mechanismus 336 Realzeitsystem 7 Rechenoperationen 294 Rechner 4 Rechner starten 33 Rechnername 240 Referenzzahler 167 regularer Link 165 relative Namen 50 relative Pfadnamen 54 remote copy 236 remote login 236 remote shell 236 Remove from Workspace (CDE) 358 Rename (CDE) 357,365 repeat 327 Repeater 236 Restaurieren von Dateien aus einem tar-Archiv 221 Return 28 RETURN-Taste 29 rlogin 236 rlogin (Kommando) 243 rm (Kommando) 102, 162 rmdir (Kommando) zum Loschen von Directories 158 Rollbalken 36, 42 root 12,43 Router 236 rsh 236 rsh (Kommando) 241 rtf (rich text format) 229 Run-Kommando 257 5 Santa Cruz Co 20 SAP-Rl324 Schaltflache fOr Menuaufruf 341 Schaltflachen 36, 41 Schleifen 14, 257 Schleifenklammerung 285 Schleifenkopf 285 Schleifenrumpf 285 Schleifenverarbeitung 285 SchloB (CDE) 342 Schragstrich 60 schreibbereit 202 Schreiberlaubnis 179 schreibgeschOtzt 202 Schreibring 211 Schreibschutz 212 Schreibtischumgebung 340, 342 Schrift voreinstellen 367 SCO-UNIX 19,20 Screen - Bildschirmeinstellungen 369 Scripte 326 Scroll 28 Scroll-Balken 36 sed (Kommando) 151 Selected (CDE) 355 Senden von Nachrichten 71 Server-System 19 set (Kommando) 262 set (Kommando) (Optionen) 284 set +0 318 Set Filter Options 359 set -0 vi 310 set -0 (Kommando) 318 set prompt 326 Set View Options (CDE) 355 set -x 286 setenv 328 SGI Silicon Graphics 20 sh (Kommando) 254 Shell - Benutzerschnittstelle und Kommandointerpreter 21 Shell- Variable 257 Shell-Prozedur (Beispiel} 260 Shell-Prozeduren 254, 326 Shell-Script 254 Shell-Symbol 362 Shell-Variablen 107 Shred 361 421
S-T 422 shutdown 76 Sichern 200 Sichern von Dateien auf Floppy 204 Sicherung mit cpio als Archiv 214 Sicherung mit tar 219 Sicherung Systemsoftware 225 Sicherungskonzept 224 Sicherungsmedium von kleineren Datenmengen 209 Sicherungsschicht 237 Siemens 20 Signale 320 Single-User-Modus 33 SINIX 20 Sitzung 47 sleep (Kommando) 293 softlink 166 Software 5 Software-Tools 22 SOLAR IS 20 Sonderzeichen 53 Sonderzeichen im ed 136 sort 331 sort (Kommando) 97,332 Sortierkriterien fOr den ge6ffneten Ordner 357 Sortierung nach Spalten 332 Spec1170 19 Speichergerate 6 Spooler 88 Spool-Programm 172 Sprachen 22 Spreadsheet-Programme 229 Sprunganweisung 13 Standardausgabe 86 Standardeingabe 86 Start Blanking 369 Start des Rechners 76 Start-Directory 184 Starten einer Korn-Shell 308 Startup - Voreinstellung fOr einen Neustart 370 Status der Programme abfragen 113 Steuereinheiten 4 Steuerungsschicht 237 Steuerzeichen 83 STOP 320 stop %Jobnummer 319 Streamer 211 STRG 28 Strings 98 Stromversorgung 4 Strukturieren durch Unterdirectories 154 Style-Manager 343 Subject (Betreff) - mail 74 subpanel (CDE) 363 Subtraktion 314 Suchen nach Dateien und Mustern in Dateiinhalten 183 Suchkriterien 184 Suchmechanismen im Editor ed 131 Sun Microsystems 20 Superuser 33, 43 switch 327 Sybase 23 SYLK-Format 229 symbolischer Link 166 sync 76 SYNOPSIS 63 Syntax 26 syntax error 295 Syntaxfehler 17 Systemkonsole 33 Systemsoftware 200 Systemverwalter 33, 43 T Tabulatortaste 28 tail (Kommando) 337 talk (Kommando) 72 tar -c (Kommando) 219 tar -t (Kommando) 221 tar -x (Kommando) 221 Tastatur 28 Tasteneingabe (kombiniert) 47 TCP/IP 22
T-V 7 Stichwortverzeichnis technisch-wissenschaftliche Anwendung 23 tee (Kommando) 330 telecommunication netware 236 telnet 236 telnet (Kommando) 243 tempo rarer Puffer 123 TERM 320 Terminal 35 Terminalnamen 70 Terminal-Symbol 40 Terminalverbindungen 35 Terminkalender (CDE) 344 test 257 test - Kombination (und, oder) 279 test (Kommando) 273 test (Kommando), um Zeichenketten zu OberprOfen 277 test - modernere Schreibweise 278 Text-Cursor 37 Texte verandern (Texteditor) 348 Texteditor (CDE) 342,347 Texteditor - Find/Change Dialogbox 349 Texteditor - Format 349 Texteditor - MenO Edit 348 Texteditor - MenO Options 350 Texteditor - Tastatur-Befehle 350 Textgleichheit 272 Textverarbeitung 120 Textverarbeitungsprogramme 229 Threshold (CDE) 368 Time Per Background (CDE) 369 Time Sharing System 7 Timesharing 21 Ton (CDE) 369 Transfer 368 Transportschicht 237 trap-Behandlung 258 Trennung zwischen Directories 155 troff 121 true (Kommando) 293 TSTP 320 tty (Kommando) 71 Turnus einer Sicherung 222 typeset (Kommando) 314 U Ober Netz verbunden 35 Obernahme von Symbolen in Desktop-Anzeige 363 OberprOfen der Platten- oder Floppybelegung 190 Uhr (CDE) 341 ULTRIX 18,20 Umbenennen von Dateien 357 Umbenennung 164 Umgebungsmanager 343 Umleitung 256 Umleitung mit tee 330 Umschalttaste 28 unalias (Kommando) 313 unalias KOrzel 328 uncompress (Kommando) 248 Uniplex onGo 23 University of California at Berkeley 20 UNIX 8 UNIX von J. Gulbins/K. Obermayr 1 UNIX-Dateibaum 56 UNIX-Dateisystem 12 UNIX-Portierungen 20 Unixware 19 Unterschiede zur C-Shell 326 until 285 until (Kommando) 290 uppercase 314 Use Backgrounds for Lock 369 USL 19 uucp 22 V Variable ENV 308 Variablen der Korn-Shell 307,314 VAX 18 Vereinfachung von UNIXKommandos unter CDE 356 Verkettung 256 423
v-z Verkettung von Kommandos 94 Vermittlungsschicht 237 Verschachtelung von if-Bedingungen 276 versteckte Dateien 357 Verweis zu einer bestehenden Datei 166 vi 121,318 vi, Suchen und Ersetzen im ex-Modus 144 vi, Besonderheiten 150 vi, Eingabemodus 138 vi, Kommandos 146 vi,Objekte 142 vi, Optionen 150 vi, Umschalten in den Kommandomodus 140 vi, wesentlichen Eigenschaften 138 View (CDE) 355 VISUAL 310 Volume 369 vordefinierte She"-Variable 262 vordefinierte Variable 257 Vordergrundprozesse 110 Vorteile von She"-Prozeduren 256 VUE 22 W WagenrOcklauf 28 WagenrOcklauf-Taste 29 WAN 22 Warnton (CDE) 369 wc (Kommando) 95 Wechsel des Directories 59 Wertzuweisung 265 wesentliche Eigenschaften des Editors vi 138 whatis (Kommando) 65 while 285 while (Kommando) 290 while ( ausdruck ) Befehlsfolge end 327 who (Kommando) 69 Wide Area Network 22 424 WindowFenstervoreinste"ung 370 windows 36 Windows-NT 19 wochentliche Sicherung (Beispiel) 260 Workspace 36, 365 write (Kommando) 71 Wurzel des Baumes 12 WWW-Seiten 67 Wysiwyg-Programme 120 X XlOPEN 19 xdm 34 XENIX 18 XPG 19 X-Terminals 35 X-Window 35 Z Z80-CPU (Zilog) 8 zcat (Kommando) 248 Zeichenketten 98 Zeichensatze 28 zeilenorientierte Editoren 121 Zugriffsdatum 167 Zugriffsrechte 58,167,176 Zugriffsrechte andern 177 Zugriffsrechte andern (CDE) 357 zusatzliche Optionen (KornShe") 307 Zuweisung von Variablen 107
Nachwort Dieses Nachwort ist an all jene gerichtet, denen dieses Buch ein Begleiter war, UNIX im Selbststudium zu erlernen. In einem Seminar wOrden Sie, dessen bin ich sicher, ein Zertifikat erhalten, daB Sie erfolgreich teilgenommen haben. Zu Beginn wOnschte ich Ihnen ,guten Appetit!,; sind Sie auf den Geschmack von UNIX gekommen? Nun, ich hoffe, Ihnen hat es SpaB gemacht, mit UNIX zu experimentieren. Ich habe mich bemOht, die einzelnen Themen ausfOhrlich zu behandeln. Aile Obungen sind ,live, nachvollzogen, doch trotzdem konnte es vorkommen, daB eventuelle Unstimmigkeiten auf anderen UNIX-Rechnern aufgetreten sind. Sollten Sie beim Lemen oder Nachvollziehen der Obungen auf Unklarheiten oder Unvollstandigkeiten gestoBen sein, ware es schon, wenn Sie mir diese mitteilen. Auch wenn Sie Anregungen, Verbesserungsvorschlage oder selbst interessante Beispiele zu den Themen dieses Buches haben, wOrde ich mich freuen, diese in einer der nachsten Auflagen mit zu berOcksichtigen. Schreiben Sie bitte an den VDI-Verlag, Kennwort ,UNIX" Abt. VBR, Postfach 101054, 40001 DOsseldorf oder schicken Sie mir eine e-mail unter100712.1411@CompuServe.com. Vielen Dank im voraus fOr Ihre MOhe. August 1996 Christine Wolfinger 425