Universität Dortmund Fachbereich Informatik Dortmund, 20. September 2006 Frank Weichert, Heinrich Müller Vorkurs Informatik WS 2006/2007 Einführung in die Unix-Systemumgebung Ausstattung Für die praktischen Übungen zum Vorkurs Informatik stehen im Geschossbau IV im Raum 006 SunRays zur Verfügung. Die genauen Übungsgruppenzeiten werden in der Vorlesung bekanntgegeben. Außerhalb dieser Zeiten stehen die Rechner nicht zur allgemeinen Verfügung, da sie auch für andere Lehrveranstaltungen reserviert sind. Freie Arbeitsplätze können genutzt werden, sofern die Teilnehmer der anderen Lehrveranstaltung nicht gestört werden. Die Ausstattung an Rechnern hat sich in den letzten Jahren erheblich verbessert. Dennoch ist auch weiterhin Sparsamkeit im Umgang mit den Ressourcen angesagt. Hierzu einige konkrete Vorschläge zur Rechnernutzung außerhalb der vorgegebenen Übungsgruppenzeiten: • Den Arbeitsplatz freigeben, wenn er länger als wenige Minuten nicht benötigt wird. • Nicht mehr benötigte Dateien sofort löschen. • Aus dem Web gezogene Bilder, Skripten, Filme und Tondateien, die nichts mit der Vorlesung Vorkurs Informatik zu tun haben, gehören unter gar keinen Umständen auf die Platte. Dies erfordert natürlich etwas Selbstdisziplin. Wir hoffen, dass es möglich ist, auf weitere Reglementierungen zu verzichten. Benutzerumgebung Wie oben schon erwähnt, dienen als Arbeitsplätze Sun-Rays. Diese sind keine Workstations wie z. B. Windows PCs, sondern Terminals, die über Ethernet mit PC-Servern verbunden sind. Auf diesen Servern läuft die gesamte Sitzung ab, die Terminals realisieren lediglich die Bildschirmausgabe und nehmen Eingaben über Tastatur und Maus entgegen. Zum Einloggen setzen Sie sich an ein freies Terminal. Schalten Sie ggf. den Bildschirm ein, auf dem jetzt die Meldung Welcome to <rechnername> und eine Aufforderung erscheinen sollte (vgl. Abbildung 1). Abbildung 1: Loginbild auf den Sun-Rays 1 Geben Sie nun Ihre Benutzerkennung (z.B.: vorkurs4711) ein und bestätigen Sie diese mit einem Klick auf den OK-Button. Nachfolgend müssen Sie noch Ihr Passwort (z.B.: q45rtfd)1 eingeben. Die von uns ausgeteilten Passwörter bestehen aus Groß- und Kleinbuchstaben sowie Ziffern, es sind keine Sonderzeichen enthalten. Wegen der Ähnlichkeit gewisser Zeichen zueinander sind auch keine [iloILO01] enthalten. Nach Eingabe von Benutzerkennung und Passwort startet die Benutzeroberfläche CDE (Common Desktop Environment), das darunterliegende Betriebssystem ist Solaris 9 oder 10. Zu Beginn der Rechnerübungen sollten Sie sich Ihre Benutzerumgebung einrichten. Klicken Sie mit der Maus auf den Desktop-Hintergrund und drücken die rechte Maustaste. Wählen Sie aus dem erscheinenden Menü Programs -> X-Terminal aus. Geben Sie in dem sich öffnenden Fenster den Befehl passwd ein. Anschließend werden Sie aufgefordert Ihr Passwort zu ändern. Denken Sie daran, dass dieses neue Passwort mindestens aus 6 Zeichen besteht und sowohl Buchstaben als auch Ziffern enthalten muss. Die Standard-Benutzerumgebung ist nun aktiv. Sie können sich Ihre Benutzerumgebung nach Wunsch umgestalten. Für auftretende Probleme sind Sie dann jedoch selbst verantwortlich. Das erste Java-Programm Um Ihnen einen einfachen Einstieg in die Erstellung eines ersten Java-Programms unter Solaris zu ermöglichen, sollen im Folgenden, am Beispiel des bekannten ”Hello World”-Programms, die Phasen der Programmentwicklung beschrieben werden. Grundlegendes Hilfsmittel jeder Softwareentwicklung ist ein Editor (hier: emacs) oder eine integrierte Entwicklungsumgebung (Sun ONE Studio) in dem der Quellcode eingegeben oder verändert werden kann. Öffnen Sie zunächst ein X-Terminal (s. Benutzerumgebung) und starten Sie den emacs-Editor. Hierzu binden Sie zunächst das notwendige Modul mit module add emacs ein. Anschließend können Sie den eigentlichen Editor starten: emacs & Das ”&” ist kein Tippfehler, sondern eine Befehlserweiterung im Rahmen eines Multitaskingsystems2 , wie es Solaris darstellt. Ohne hier auf Details einzugehen, wird damit die Möglichkeit bereitgestellt, im aktuell geöffneten X-Fenster neben dem emacs noch weitere Befehle oder Programme zu starten. Im geöffneten Editor geben Sie nun den folgenden Programm-Code ein. class HelloWorld{ public static void main(String argv[]){ System.out.println("Hello World."); } } Da Ihnen vielleicht schon bekannt ist, dass ein Computer über ein ”gewisses Eigenleben” verfügt, müssen Sie ihr Programm abspeichern. Hierzu bewegen Sie den Mauszeiger in die obere Statuszeile und drücken die rechte Maustaste. Mit diesem Vorgang können Sie unterschiedliche Aktionen im Editor aufrufen, die in den sogenannten Pull-Down Menüs zur Verfügung stehen. Mit Files -> Save Buffer veranlassen Sie den emacs dazu Ihr Listing abzuspeichern. Sie werden nun über die untere 1 2 Aus Sicherheitsgründen wird das Passwort bei der Eingabe nicht auf dem Bildschirm angezeigt. Multitasking-Betriebssysteme können verschiedene Prozesse / Tasks gleichzeitig ausführen. 2 Statuszeile dazu aufgefordert, hinter File to save in: den Filename einzugeben. In diesem Fall lautet er HelloWorld.java. Zu beachten ist hierbei, dass die Groß- und Kleinschreibung exakt mit dem verwendeten Klassennamen (s.o. class HelloWorld) übereinstimmt. Nun muss das Programm in den Bytecode übersetzt werden. Wählen Sie aus dem Menü JDE–>Compile aus. Das Programm wird nun compiliert. Falls Sie keinen Fehler gemacht haben endet der Vorgang mit Compilation finished. Jetzt kann das Programm ausgeführt werden. Dazu wählen Sie aus dem Menü JDE–>Run App aus. Der String Hello World. wird auf dem Bildschirm ausgegeben. Alternativ können Sie diese Aktionen auch über die Shell ausführen. Mit javac HelloWorld.java compilieren Sie das Programm und mit java HelloWorld führen Sie das Programm aus. Jene Befehle führt der emacs unsichtbar für Sie auch aus. Hinweise zum Kopieren von Disketten Falls Sie Javaprogramme, die Sie zu Hause erstellt haben, hier an der Uni einspielen möchten, stehen Ihnen dazu im Pool die Rechner napoli1 und napoli2 mit einem Ziplaufwerk zur Verfügung. Um das Ziplaufwerk zu benutzen, muss es erst einmal reserviert werden. Das geschieht mit dem Kommando zlock (Laufwerksbuchstabe). Ist das Laufwerk gerade in Benutzung erscheint ein Hinweis und das Programm wird automatisch beendet. Wenn das Laufwerk frei ist, wird der Benutzer aufgefordert, ein Medium einzulegen. Ist dieses geschehen, so muss die Abfrage mit j beantwortet werden. Jetzt kann auf das Medium zugegriffen werden. Während das Laufwerk in Benutzung ist, kann das Medium nicht entnommen werden. Um das Medium auszuwerfen ist es nötig, den Befehl zunlock (Laufwerksbuchstabe) einzugeben und dann den Auswurfknopf zu betätigen. Um auf die Daten des Mediums zuzugreifen, werden die sogenannten ztools benutzt. Die Laufwerke sind, soweit nicht anders angegeben, über den Laufwerksbuchstaben z: zu erreichen. Details zur Benutzung des Ziplaufwerks erhalten sie auf den Seiten der IRB unter http://irb-www.cs.uni-dortmund.de/anleitungen/ziplaufwerk/index.html. Zur Konvertierung zwischen DOS- und Unix-Textdateien können die Kommandos unix2dos und dos2unix benutzt werden. Die Unix–Shell Für das erfolgreiche Arbeiten an den Rechnern des Fachbereichs sind einige grundlegende Unixkenntnisse unerlässlich. • Die Shell: Der Kommandozeileninterpreter Eine Shell (etwa ’bash’ oder ’tcsh’) ist ein command interpreter (wie z.B. ’command.com’ unter MS-DOS). Eine Shell nimmt also die Benutzereingaben (Befehle) entgegen und führt sie aus. Befehle sind (meist) einzeilig, und bestehen aus durch Leerzeichen getrennten Wörtern. Das erste Wort gibt dabei den auszuführenden Befehl an, und die weiteren dessen Argumente. • Besonderheiten von UNIX-Pfadnamen (hierarchisches Dateisystem) 1. Keine Laufwerksbezeichnungen (im Gegensatz zu DOS und VMS) 2. Verzeichnisnamen werden durch den normalen Slash (/) getrennt, nicht durch einen Backslash (MS-DOS: \). Wurzelverzeichnis ist / vollständige Pfadnamen fangen mit / an, Beispiele: /usr/local/bin/elm /etc/hosts.equiv 3. Groß- und Kleinschreibung werden unterschieden (im Gegensatz zu DOS) 3 4. Ein Punkt (.) am Anfang steht bei ’unsichtbaren’ Systemdateien (z.B. .cshrc), Dateinamen dürfen mehrere Punkte enthalten • Verschiedene Shells: bash, tcsh, usw. Auf den meisten UNIX-Systemen kann man sich aussuchen, mit welchem Kommandointerpreter man arbeiten will. Am komfortabelsten sind die ’bash’ (Bourne-Again Shell), die ’tcsh’ (erweiterte C Shell) und die ’zsh’ (Z Shell). Praktisch alle Shells sind in irgendeiner Form Weiterentwicklungen der ’sh’ (Bourne Shell). • Wildcards: mehre Dateien auf einmal angeben Es ist möglich, mit einem Wort mehrere Files anzugeben: die beiden Zeichen Asteriks (‘*’) und Fragezeichen (‘ ?’) haben bei Filenamen eine spezielle Bedeutung: – ? steht für ein beliebiges Zeichen – * steht für kein, ein oder mehr beliebige Zeichen So steht beispielsweise ‘f?ob*r’ (unter anderem) für ‘foobar’, ‘fzobr’ und ‘foobaar’, nicht aber für ‘fooobar’ oder ‘foobra’. Noch mächtiger sind die sogenannten regulären Ausdrücke. So steht z.B. der Ausdruck [a-k] für irgendeinen Buchstaben von a bis k. b[a-k]n*[0-9] könnte also z.B. für ’bank1’, ’banner25’ oder ’benutzer7’ stehen. Es folgt eine Auflistung einiger wichtiger UNIX-Befehle und dessen Entsprechung unter DOS, sofern ein vergleichbarer Befehl vorhanden ist. 4 UNIX ls [muster] DOS dir [muster] /w ls -l [muster] dir [muster] mkdir name rmdir name cd name cd pwd rm muster md name rd name cd name cd (HOME) cd del muster cp name1 name2 copy name1 name2 cp muster1 [muster2...] dir copy muster dir mv name1 name2 mv muster1 [muster2...] dir ren name1 name2 move muster1 dir du [pfad] du . df [pfad] df . echo [text] less name echo [text] type name ps kill [pid] 5 Beschreibung Zeigt den Inhalt des Verzeichnisses muster an, sonst den Inhalt des aktuellen Verzeichnisses. Wie oben, aber u.a. werden auch Länge und Zugriffsrechte angezeigt. Erzeuge Verzeichnis name. Lösche leeres Verzeichnis name. Wechsle in das Verzeichnis name Wechsle in das HOME-Verzeichnis. Anzeige des aktuellen Verzeichnisses Datei löschen. Unter Unix gibt es kein Undelete! Kopiere Datei name1 in Datei name2. Man beachte, dass name2 immer angegeben sein muss. Der Punkt (’.’) gilt als Alias für das aktuelle Verzeichnis. Kopiere Dateien muster1, muster2... ins existierende Verzeichnis dir (Mit cp -r für ganze Verzeichnisse). Benenne name1 in name2 um. Dateien bzw. Verzeichnisse nach dir verschieben. (disk usage) Gibt an, wieviel Platz ein bestimmtes Verzeichnis mit seinen Unterverzeichnissen / Dateien belegt. (disk free) Gibt an, wieviel Platz auf dem Dateisystem, in dem sich ein bestimmtes Verzeichnis befindet, noch frei ist. Parameter ON und OFF gibt es nicht Anzeigen der Datei name, alternativ auch more möglich Liste der eigenen Prozesse anzeigen. Einen eigenen Prozeß mit der Nummer pid beenden. Forsetzung... UNIX man [name] whatis [name] who DOS help name help name finger [user@maschine] talk [person@maschine] [ttyname] chmod [-R] [ugoa][+-][rwx] name1 chgrp [-R] group name1 Beschreibung Online-Manual zum Befehl name. Kurzbeschreibung von name. Wer ist gerade auf der aktuellen Maschine eingeloggt? Übrigens: whoami sagt uns, wer wir selber sind Liefert Information, ob user auf maschine gerade eingeloggt ist. Wenn einfach user weggelassen wird, gibt es eine Liste der dort eingeloggten Personen. Ermöglicht das Chatten mit Personen im Netz. Auf der gleichen Maschine kann auch die Angabe von maschine weggelassen werden. Ändert die Zugriffsrechte zu Dateien und Verzeichnisse gemäß einer Maske: [ugoa] heißt, die Änderungen gelten für einen selbst (user), die Gruppe (group), den Rest der Welt (others) oder alle gleichzeitig (all). Das Pluszeichen fügt Rechte hinzu, und das Minuszeichen löscht sie. Die Zugriffsrechte [rwx] stehen für Lesen (read), Schreiben (write) oder Ausführen (execute). Ändert die Gruppe von Dateien oder Verzeichnissen auf group. Der Benutzer, der dieses Kommando benutzt, muss natürlich Mitglied der Gruppe group sein Um detailliertere Informationen zu einem Befehl zu erhalten, sei noch einmal auf den Unix-Befehl man Name_des_Befehls verwiesen. Einige Links http://irb-www.cs.uni-dortmund.de/anleitungen/ Anleitungen zu Unix und CDE http://www.javasoft.com/ Informationen zu Java http://www.java.de Homepage der deutschen Java User Group http://www.gnu.org/software/emacs/emacs.html Informationen zum Editor emacs http://www.Vorkurs-Informatik.de Informationsseite zum Vorkurs http://www.Vorkurs-Informatik.de/buch Informationsseite zum Vorkurs-Buch 6