Ergänzende Praxistipps Skript erzeugt mit Targeteam i Diese Dokumentation enthält eine Zusammenstellung von Hinweisen zur Systemumgebung, die für das Praktikum verwendet wird. Es werden Themen angesprochen, die sich in früheren Semestern als problematisch für einige Teilehmer herausgestellt hatten. Inhaltsverzeichnis 1 Setzen des CLASSPATH - Umgebungsvariablen unter Unix 2 1.1 "Was sind Shells?" . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 "Was hat das mit dem CLASSPATH zu tun?" . . . . . . . . . . . 3 1.3 "Und was bedeutet das für mich?" . . . . . . . . . . . . . . . . . 3 1.4 "Wie setze ich nun den CLASSPATH?" . . . . . . . . . . . . . . 3 1.4.1 sh-Familie (sh, ksh, bash): . . . . . . . . . . . . . . . . . 3 1.4.2 csh-Familie: (csh, tcsh) . . . . . . . . . . . . . . . . . . . 4 Automatisch definierte Umgebungsvariablen . . . . . . . . . . . . 5 1.5 2 3 "In der sunhalle sitzen, aber mit Lehrstuhlrechnern arbeiten - Wie geht das?" 7 Dateiübertragung mit FTP 9 3.1 "Wie kopiere ich eine Datei mit FTP von einem Rechner zu einem anderen?" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 "Ich muß aber mehrere Dateien übertragen. Muß ich jede Datei einzeln mit put oder get auf den Zielrechner kopieren?" . . . . . . 11 3.3 "Wie erzeuge ich eine Archivdatei?" . . . . . . . . . . . . . . . . 12 3.4 "Und wie kann ich eine ZIP-Datei wieder auspacken?" . . . . . . 13 3.5 "Wie kann ich nun einen ganzen Dateibaum von der sunhalle an einen Lehrstuhlrechner kopieren?" . . . . . . . . . . . . . . . . . 13 ii 9 1 1.2 "Was hat das mit dem CLASSPATH zu tun?" Je nachdem, welche Shell sie benutzen, müssen Sie andere Befehle eintippen, um Umgebungsvariablen (auch oft Shell-Variablen genannt) zu setzen oder anzusehen, oder um kleine Skripten zu schreiben, die die Shell ausführen soll. Das ist aber nicht so kompliziert, wie es jetzt klingt. Kapitel 1 Es gibt im wesentlichen zwei Shell-Dinosaurier, um die sich jeweils eine Menge "naher Verwandter" schart: Diese Urahnen sind die sh (wie shell) und die csh (wie c-shell). Beide Shells stehen auf so ziemlich jedem Unix-System zur Verfügung, haben aber hinsichtlich ihrer eingebauten Befehle und hinsichtlich der Verwaltung von Umgebungsvariablen nicht viele Gemeinsamkeiten. Setzen des CLASSPATH Umgebungsvariablen unter Unix Da beide Shells alles andere als komfortabel zu bedienen waren, wurden nach und nach andere Shells implementiert, die sich entweder an der sh oder an der csh orientierten. Die bekanntesten Verwandten der sh sind die ksh und die bash. Ein enger, aber deutlich komfortablerer Verwandter der csh ist die tcsh. Das Setzen des CLASSPATH ist zentral für die Entwicklung von JavaAnwendungen. Im folgenden wird beschrieben, wie der CLASSPATH unter Unix zu setzen ist. Mit der Umgebungsvariablen CLASSPATH wird dem Java-Compiler und dem Java-Interpreter mitgeteilt, wo er alle die Klassendateien suchen soll, die nicht den Standard-Packages zugeordnet sind. Sie können CLASSPATH genau setzen und setzen wie jede andere Umgebungsvariable. 1.1 "Was sind Shells?" In der Unix-Welt gibt es nicht eine Eingabeaufforderung. Sobald Sie ein Terminalfenster starten, wird ein Programm gestartet, das man Shell nennt. Die Shell nimmt Eingaben von Ihnen entgegen und bearbeitet sie entsprechend. Wenn Sie beispielsweise "netscape" eintippen und dann RETURN drücken, startet die Shell den Netscape-Browser. Unter Unix können Sie sich unter mehreren Shells Ihre Lieblings-Shell aussuchen, die immer dann gestartet wird, wenn Sie ein Terminalfenster öffnen. Die Auswahl ist vielfältig: tcsh oder ksh kennen Sie vielleicht schon, denn diese werden von den Systembetreuern gern als Standard-Shell festgelegt, wenn eine neue Kennung eingerichtet wird. Daneben gibt es aber noch viele andere Shells, beispielsweise bash, sh, zsh oder csh. 1.3 "Und was bedeutet das für mich?" Sie müssen zuerst ermitteln, welche Shell Sie verwenden. Tippen Sie einfach export ein. Sagt Ihre Shell export: Command not found, so können Sie davon ausgehen, daß Sie eine Shell aus der csh-Familie haben. (Sie können sichergehen, indem Sie printenv SHELL eingeben. Dann sollten Sie irgendwas mit csh oder tcsh am Pfadende sehen.) Sehen Sie hingegen keine Fehlermeldung, so arbeiten Sie mit einer Shell aus der sh-Familie. 1.4 "Wie setze ich nun den CLASSPATH?" Je nachdem, aus welcher Shell-Familie (sh-Familie oder csh-Familie) Ihre Shell kommt, können Sie nun folgendermaßen mit Umgebungsvariablen arbeiten: 1.4.1 sh-Familie (sh, ksh, bash): Bei Shells der sh-Familie setzen Sie Umgebungsvariablen folgendermaßen: <VARIABLENNAME>=<INHALT> 2 3 Um die Umgebungsvariable auch anderen Programmen zur Verfügung zu stellen, müssen Sie diese Umgebungsvariable exportieren: Mit setenv gesetzte Umgebungsvariablen sind bereits globale Umgebungsvariablen; es ist daher nicht nötig, diese noch zu exportieren. export <VARIABLENNAME> Jetzt können Sie mit der Umgebungsvariablen arbeiten. Sie können mit Falls Sie die ksh oder die bash benutzen, geht das auch kürzer: ${<VARIABLENNAME>} export <VARIABLENNAME>=<INHALT> auf ihren Inhalt zugreifen. Hatte die Umgebungsvariable bereits einen Inhalt, so wird er überschrieben. Nun können Sie den Inhalt der Umgebungsvariablen mit $<VARIABLENNAME> – Bitte beachten Sie die geschweiften Klammern. Diese sind in vielen Fällen nicht nötig. Es schadet aber auch nicht, sie immer mit anzugeben, um eventuell auftretenden Schwierigkeiten aus dem Weg zu gehen. in Ihren Shell-Skripten benutzen. Beispiel: Setzen des CLASSPATH" Beispiel: Setzen des CLASSPATH Angenommen, Sie wollen Klassendateien im Verzeichnis /usr/proj/java/tmp dem Java-Compiler und dem Java-Interpreter zugänglich machen. Dann schreiben Sie: CLASSPATH=/usr/proj/java/tmp export CLASSPATH – Oder kürzer - falls Sie die ksh oder bash benutzen: Betrachten wir wieder das obige Beispiel: Sie wollen dem Java-Compiler und dem Java-Interpreter Klassendateien in /usr/proj/java/tmp zugänglich machen. Dann schreiben Sie in der csh oder der tcsh: setenv CLASSPATH /usr/proj/java/tmp Wenn Sie nun wissen wollen, was in Ihrem CLASSPATH steht, so können Sie den Inhalt folgendermaßen ausgeben: echo ${CLASSPATH} export CLASSPATH=/usr/proj/java/tmp Wenn Sie nun wissen wollen, was in Ihrem CLASSPATH steht, so können Sie den Inhalt folgendermaßen ausgeben: echo $CLASSPATH 1.5 Automatisch definierte Umgebungsvariablen – (Auf die Unterscheidung zwischen lokalen und globalen ShellVariablen wird hier nicht eingegangen.) 1.4.2 (Auch hier wird auf die Unterscheidung zwischen lokalen und globalen Variablen nicht eingegangen.) Jede Shell definiert bei ihrem Start automatisch eine ganze Reihe von Umgebungsvariablen. Sie können einen Blick auf die Liste der Umgebungsvariablen werfen, wenn Sie set (sh, ksh, bash) oder setenv (csh, tcsh) eingeben. csh-Familie: (csh, tcsh) Sie können Umgebungsvariablen folgendermaßen setzen: Eine hilfreiche Umgebungsvariable ist $HOME: Diese Umgebungsvariable enthält den Pfad ihres Home-Verzeichnisses. setenv <VARIABLENNAME> <INHALT> Hatte <VARIABLENNAME> vorher bereits einen Inhalt, ist dieser nun überschrieben. 4 – Beispiel Sie wollen dem Java-Interpreter alle Klassendateien zugänglich machen, die Sie unter ihrem Home-Verzeichnis in java/mtj abgelegt haben. Dann schreiben Sie 5 sh-Familie (sh, ksh, bash): CLASSPATH=$HOME/java/mtj export CLASSPATH csh-Familie (csh, tcsh): setenv CLASSPATH $HOME/java/mtj Aber was kann man machen, wenn Ihr CLASSPATH bereits definiert ist und Sie nur ein neues Verzeichnis zusätzlich in den CLASSPATH mit hinzunehmen wollen? – Eine Möglichkeit ist, den CLASSPATH auszugeben und dann umständlich den ganzen alten Inhalt zusammen mit dem neuen Verzeichnis einem "neuen" CLASSPATH zuzuweisen. – Wesentlich eleganter ist es, den Inhalt von CLASSPATH selbst in der Definition des neuen Inhalts von CLASSPATH zu verwenden: Kapitel 2 "In der sunhalle sitzen, aber mit Lehrstuhlrechnern arbeiten - Wie geht das?" sh-Familie (sh, ksh, bash): CLASSPATH=$CLASSPATH:/neues/Verzeichnis csh-Familie (csh, tcsh): setenv CLASSPATH ${CLASSPATH}:/neues/Verzeichnis Vorsicht: Die csh-Shells liefern bei derartigen Konstruktionen eine Fehlermeldung, wenn der CLASSPATH noch nicht definiert ist! – Enthält der CLASSPATH schon viele Verzeichnisse, kann man sich so viel Tipparbeit sparen. Mit Unix ist es (weitgehend) problemlos möglich, von einem Rechner aus mit einem anderen Rechner zu arbeiten. Dies könnte beispielsweise so aussehen, daß Sie sich auf einem Rechner der sunhalle einloggen, aber dann von dort aus mit Rechnern des Lehrstuhls Schlichter arbeiten. In diesem Fall ist es nicht nötig, daß Sie Ihre Dateien von den Lehrstuhlrechnern in die sunhalle kopieren, denn Sie nutzen den Rechner, an dem Sie gerade sitzen, sozusagen nur als "Fernsteuerung" für einen anderen Rechner. Um sich von der sunhalle aus an einem Rechner am Lehrstuhl Schlichter anzumelden, öffnen Sie zuerst ein Terminalfenster. Dann können Sie die Programme ssh (secure shell) oder slogin (secure login) nutzen, um sich auf einem Lehrstuhlrechner anzumelden. (Natürlich benötigen Sie hierzu eine Kennung an den Lehrstuhlrechnern. Die wurde Ihnen zu Beginn des Praktikums eingerichtet. Ihr Paßwort an Rechnern des Lehrstuhls Schlichter ist identisch mit Ihrem Paßwort in der sunhalle.) – Wollen Sie sich beispielsweise von der sunhalle aus auf dem Rechner atschlichter15 einloggen, so öffnen Sie auf Ihrem sunhalle-Rechner zuerst ein Terminalfenster. Dort tippen Sie dann ssh atschlichter15 oder slogin atschlichter15 6 7 – Sie werden nun nach Ihrem Paßwort gefragt. Wenn Sie sich nicht vertippt haben, sind Sie nun auf atschlichter15 eingeloggt und können mit diesem Rechner genauso arbeiten, als säßen Sie direkt an dessen Tastatur. – Selbstverständlich haben Sie nun auch Zugriff auf Ihre Daten, die Sie auf Lehrstuhlrechnern gespeichert haben. Wollen Sie Programme für X (also Programme, die eine graphische Benutzeroberfläche bieten) auf einem Lehrstuhlrechner ferngesteuert von der sunhalle aus ausführen, so müssen Sie vor dem Programmstart dem Lehrstuhlrechner mitteilen, daß die Fenster des Programms nicht auf dem Lehrstuhlrechner, sondern auf Ihrem sunhalle-Rechner geöffnet werden sollen. Hierfür müssen Sie die Umgebungsvariable DISPLAY setzen. – Angenommen, Sie sitzen vor dem Rechner sunhalle2d, haben sich mit ssh atschlichter15 auf dem Rechner atschlichter15 angemeldet und wollen nun auf atschlichter15 mit dem Texteditor xemacs den Quellcode einer Java-Klasse bearbeiten. Je nachdem, welche Shell Sie benutzen, geben Sie dann ein: – sh-Familie (sh, ksh, bash): DISPLAY=sunhalle2d:0.0 export DISPLAY Oder kürzer bei ksh und bash: export DISPLAY=sunhalle2d:0.0 – csh-Familie (csh, tcsh): setenv DISPLAY sunhalle2d:0.0 – Starten Sie nun das Programm xemacs. Das Fenster öffnet sich bei Ihnen auf dem Monitor und nicht, wie man vielleicht erwarten würde, am Monitor von atschlichter15. Wenn Sie vergessen, die Umgebungsvariable DISPLAY zu setzen, wird das Fenster nicht geöffnet und Sie erhalten eine Fehlermeldung. Kapitel 3 Dateiübertragung mit FTP Stellen Sie sich vor, Sie haben Ihre Java-Klassen in der sunhalle geschrieben und getestet. Und nun sollen Sie für die Testatabnahme Ihre Klassen auf einem Rechner des Lehrstuhls vorführen und erklären. Nun können Sie allerdings von Rechnern des Lehrstuhls Schlichter nicht auf Dateien zugreifen, die in der sunhalle liegen und umgekehrt. Irgendwie müssen Sie also Ihre Dateien von der sunhalle zu den Lehrstuhlrechnern bringen. Eine Möglicheit ist natürlich, die Dateien auf Diskette zu kopieren, die Diskette zum Lehrstuhl zu tragen und dann vor Ort die Dateien von Diskette auf einen Lehrstuhlrechner zu kopieren. Im Zeitalter der Rechnernetze geht das auch eleganter, beispielsweise mit FTP (file transfer protocol). FTP erlaubt es Ihnen, Dateien von einem Rechner über eine Netzverbindung zu einem anderen Rechner zu kopieren. (Neben FTP gibt es auch andere Dienste, die das gleiche leisten. rcp (remote copy) beispielsweise, das allerdings nur unter Unix-Betriebssystemen verbreitet ist. FTP hingegen ist für praktisch jedes Betriebssystem verfügbar.) 3.1 "Wie kopiere ich eine Datei mit FTP von einem Rechner zu einem anderen?" Sie müssen hierzu nur den Namen des Rechners wissen, zu dem Sie die Datei kopieren wollen. Das Vorgehen wird an einem Beispiel am ehesten deutlich. "Und wie kann ich mich wieder abmelden?" Tippen Sie hierzu in dem Terminalfenster, in dem Sie an einem Lehrstuhlrechner arbeiten, einfach logout ein. Alternativ können Sie auch Strg-D drücken. 8 Nehmen Sie also an, Sie haben im Verzeichnis java/mtj/level2 eine Datei Test.java, die Sie in das Verzeichnis MeineKlassen auf dem Rechner atschlichter15 kopieren wollen. Sie haben auf einem Rechner in der sunhalle bereits ein Terminalfenster geöffnet und befinden Sich in Ihrem Home-Verzeichnis. 9 – Wechseln Sie in das Verzeichnis, in dem die Datei Test.java liegt, also in das Verzeichnis java/mtj/level2: cd java/mtj/level2 – Stellen Sie eine Verbindung zum Rechner atschlichter15 her. Benutzen Sie hierzu das Programm ftp: ftp atschlichter15 Sie werden nun nach der Kennung gefragt, unter der Sie sich auf atschlichter15 anmelden wollen. Anschließend müssen Sie noch Ihr Paßwort eingeben. – Nun können Sie Ihre Datei kopieren. Wechseln Sie zuerst in das Verzeichnis auf atschlichter15, in das Sie die Datei kopieren wollen, also MeineKlassen. Geben Sie hierzu im FTP-Programm ein: cd MeineKlassen – Kopieren Sie nun die Datei Test.java in dieses Verzeichnis: put Test.java (Wollen Sie Dateien von atschlichter15 auf Ihren sunhalleRechner kopieren - also die umgekehrte Richtung - so schreiben Sie get Test.java.) – Überzeugen Sie sich, daß Ihre Klasse wirklich kopiert wurde: ls Sie erhalten eine Liste aller Dateien im Verzeichnis MeineKlassen auf atschlichter15. Test.java sollte dabei sein. – Nun ist alles erledigt. Sie können FTP mit dem Kommando exit beenden. Ein kleines Detail, wenn Sie Ihre Dateien nicht von Unix-Rechner zu UnixRechner übertragen wollen, sondern von einem DOS/Windows-Rechner zu einem Unix-Rechner oder umgekehrt: – DOS/Windows und Unix verwenden unterschiedliche Markierungen für das Zeilenende. Dies muß man berücksichtigen, wenn man FTP benutzt. Bei der Übertragung von ASCII-Dateien muß die Markierung des Zeilenendes entsprechend des Zielsystems konvertiert werden; bei Binärdateien (Programme, class-Dateien, Word- / PDF- / PostscriptDokumente) wäre dies absolut tödlich. – Wollen Sie reine ASCII-Dateien übertragen, so teilt man FTP dies mit, indem man vor dem put- oder get-Befehl (also irgendwann zwischen 10 Schritt 2 und 4) für ASCII-Dateien asc und für Binärdateien bin eintippt. Das FTP-Programm weiß dann, ob es die Markierung für das Zeilenende entsprechend konvertieren soll oder nicht. – Sie können vor jeder Datenübertragung entscheiden, ob eine Konvertierung bei der Übertragung durchgeführt werden soll. Sie können beliebig oft zwischen ASCII- und Binärdatenübertragung wechseln. – Wenn Sie mehrere Dateien übertragen wollen, so müssen Sie nicht vor jedem get- oder put-Befehl angeben, welche Art der Übertragung durchgeführt werden soll. Wenn Sie einmal beispielsweise asc eingeben, so verwendet FTP so lange diese Einstellung, bis Sie entweder eine andere Einstellung wählen oder FTP beenden. 3.2 "Ich muß aber mehrere Dateien übertragen. Muß ich jede Datei einzeln mit put oder get auf den Zielrechner kopieren?" Man muß zwischen zwei Fällen unterscheiden: a) Sie wollen nur Dateien übertragen, die in einem gemeinsamen Verzeichnis sind, oder b) Sie wollen einen ganzen Verzeichnisbaum samt aller in ihm enthaltenen Dateien übertragen. Fall a) ist unproblematisch. In diesem Fall gehen Sie so vor wie oben beschrieben, geben aber statt put nun mput an. Statt einem Dateinamen koennen Sie dann auch Dateinamen mit Mustern (z.B. "*" oder "?") angeben. Wollen Sie also alle Dateien, die auf ".java" enden, von einem Rechner auf einen anderen kopieren, so schreiben Sie: mput *.java Fall b) hingegen ist etwas komplizierter. Manche FTP-Server unterstützen die Übertragung ganzer Verzeichnisbäume, andere hingegen erlauben nur die Übertragung einzelner Dateien. – Eine Möglichkeit ist, von dem Verzeichnisbaum, den Sie übertragen wollen, ein "Archiv" zu erstellen. Ein Archiv ist nichts weiter als eine große Datei, die andere Dateien enthält. Um dem Sinn von Archiv-Dateien zu erkennen, hilft vielleicht folgendes Bild: Stellen Sie sich Dateien als kleine Schachteln vor. Wenn Sie viele Dateien von einem Rechner zum anderen übertragen wollen, 11 müssen Sie viele kleine Schachteln einzeln von dem einen Rechner zum Zielrechner tragen. Ein Archiv ist nun eine große Kiste, in die Sie alle kleinen Schachteln (Dateien) packen können, die Sie übetragen wollen. Statt jede Schachtel einzeln von einem Rechner zu einem anderen zu tragen, packen Sie die ganzen kleinen Schachteln in die große Kiste und tragen die große Kiste von dem einen Rechner zum Zielrechner. – Der Vorteil eines Archivs ist nun, daß Sie nur eine große Datei (die Archivdatei) vom einen Rechner zum Zielrechner übertragen müssen. Dies bedeutet, daß Sie viel weniger Schreibarbeit haben. 3.3 "Wie erzeuge ich eine Archivdatei?" Unter Unix gibt es hierfür mehrere Möglichkeiten. Im folgenden werden die sogenannten ZIP-Archive kurz vorgestellt. Diese Art von Archiven können Sie sowohl unter DOS/Windows, als auch unter Unix verwenden. Hier besprechen wir die Befehle zip und unzip, die unter Unix verwendet werden. Unter DOS/Windows können Sie WinZIP verwenden. (Neben zip-Archiven sind auch tar-Archive unter Unix sehr gebräuchlich. Auch diese können Sie mit WinZIP ansehen und auspacken.) Ein ZIP-Archiv erzeugen Sie folgendermaßen: zip <Archivdatei> <Datei_1> <Datei_2> .... <Datei_n> – Wollen Sie beispielsweise die Dateien Klasse1.java, Klasse1.class und Klasse2.java in das Archiv MeineKlassen.zip packen, so schreiben Sie: zip MeineKlassen.zip Klasse1.java Klasse1.class Klasse2.java Endet <ArchivDatei> nicht auf ".zip", so wird diese Endung automatisch angehängt. Wollen Sie nicht nur einzelne Dateien, sondern einen ganzen Verzeichnisbaum in das Archiv packen, so nutzen Sie die Option "-r" für "recursive": zip -r <Archivdatei> <Verzeichnis> – Angenommen, Sie wollen alle Dateien des Verzeichnisses java/mtj in das Verzeichnis mtj.zip packen, so schreiben Sie: zip -r mtj.zip java/mtj 12 3.4 "Und wie kann ich eine ZIP-Datei wieder auspacken?" Hierfür gibt es das Programm "unzip". Um eine Datei archiv.zip auszupacken, schreiben Sie einfach unzip archiv.zip Oft ist es hilfreich, sich vor dem Auspacken eines Archivs anzusehen, welche Dateien das Archiv enthält. Hierfür kennt unzip den Parameter "-l". Wollen Sie also wissen, welche Dateien in der Archivdatei MeinArchiv.zip enthalten sind, so schreiben Sie: unzip -l MeinArchiv.zip 3.5 "Wie kann ich nun einen ganzen Dateibaum von der sunhalle an einen Lehrstuhlrechner kopieren?" Ein Beispiel soll Ihnen das Vorgehen illustrieren: Angenommen, Sie haben sich auf einem Rechner der sunhalle angemeldet und befinden sich in Ihrem Home-Verzeichnis. Sie wollen alle Dateien, die im Verzeichnis java/mtj sowie in eventuell vorhandenen Unterverzeichnissen liegen, auf den Rechner atschlichter20 übertragen. Erzeugen Sie zuerst eine Archivdatei, die alle Dateien enthält, die Sie übertragen wollen. Wechseln Sie hierzu zuerst in das Verzeichnis java/mtj: cd java/mtj Dann erzeugen Sie eine Archivdatei, die wir hier klassen.zip nennen wollen: zip -r klassen.zip * – (Bitte beachten Sie den Parameter "-r". Dieser sorgt dafür, daß nicht nur alle Dateien im aktuellen Verzeichnis, also java/mtj, in das Archiv aufgenommen werden, sondern auch alle Unterverzeichnisse samt der Dateien in ihnen.) Das Archiv klassen.zip übertragen Sie nun mit FTP auf den Rechner atschlichter20. 13 – Öffnen Sie zuerst eine FTP-Verbindung von Ihrem sunhalle-Rechner zu atschlichter20: ftp atschlichter20 – Um sicherzugehen, daß Ihr Archiv nicht durch eine irrtümlich vorgenommene Konvertierung bestimmter Zeichen zerstört wird, sagen Sie FTP, daß ab jetzt alle Dateien ohne automatische Konvertierung übertragen werden sollen: bin – Übertragen Sie nun die Archivdatei: put klassen.zip – Schließen Sie die FTP-Verbindung zu atschlichter20 und beenden Sie FTP mit exit. Ihre Archivdatei ist nun auf atschlichter20. Loggen Sie sich nun auf atschlichter20 ein. Sie können sich entweder direkt an atschlichter20 setzen oder sich von der sunhalle aus remote auf atschlichter20 anmelden. Wechseln Sie in das Verzeichnis, in das Sie mit FTP die Datei klassen.zip kopiert haben und packen Sie nun das Archiv aus: unzip klassen.zip Der Inhalt von klassen.zip wird nun in das aktuelle Verzeichnis ausgepackt. 14