MultiTOS für Einsteiger Teil 4 - MultiTOS goes UNIX

Nachdem MultiTOS installiert ist und auch MINIWIN einige seiner Geheimnisse preisgegeben hat, können wir uns langsam den (Un)Tiefen des Systems nähern. Einer der größten Vorteile von MultiTOS/MiNT ist seine nahe Verwandtschaft zu UNIX! Kaum zu glauben, aber es ist, sehr zur Freude aller UNIX-Fans, ohne großen Aufwand möglich, unter MultiTOS eine Art Mini-UNIX zu installieren!

Wie alle guten und schon tausendmal erzählten Geschichten beginnt die Story von UNIX mit „Es war einmal“. Also: Es war einmal anno 1969, als Ken Thompson in den Bell Labs mit der Entwicklung eines neuen Betriebssystems begann. Es war dies die Zeit der Lochkarten und Lochstreifen, der „arme“ Programmierer mußte seine Programme in Lochkarten stanzen und den Stapel beim Operator abgeben, der fütterte den Rechner mit den Karten, und nach einigen Stunden (oder auch Tagen) konnte der Programmierer sich die Ergebnisse wieder abholen, sofern sein Programm fehlerfrei war. Verständlicherweise erweckte dieses Vorgehen den Wunsch nach einem interaktiven Betriebssystem, an dem mehrere Programmierer gleichzeitig an einem Problem arbeiten können. Es gab allerdings zu dieser Zeit bereits ein Betriebssystem, das diesen Forderungen schon recht nahe kam. Leider hatte dieses MULTICS noch einige Haken, es war ein regelrechter Dinosaurier und lief, wegen der enormen Ansprüche an den Speicher und die CPU, nur auf den größten und somit auch teuersten Rechnern. Ken Thompson hatte aber nur eine PDP-7 (einen „Kleinrechner“ von DEC) zur Verfügung, und auf diesem entstand die erste Version von UNIX; dieser Name ist eigentlich eine „Verballhornung“ von MULTICS. Die erste Ausgabe war noch vollständig in Assembler geschrieben! Da aber etwa zur gleichen Zeit (ebenfalls in den Bell Labs) Dennis Ritchie die Programmiersprache C entwickelte, lag der Gedanke nahe, das System in dieser Hochsprache zu realisieren. Dies geschah dann auch im Jahre 1971, und zwar auf einer PDP-11. Damit war UNIX endgültig geboren. Dieses erste UNIX war bereits ein Multiuser-/Multitasking-System, mehrere Personen konnten quasi gleichzeitig mehrere Programme abarbeiten lassen. Eigentlich war dieses System überhaupt nicht für den kommerziellen Markt gedacht, aber da Bell den UNIX-Quellcode praktisch kostenlos an Universitäten und Hochschulen abgab, verbreitete es sich sehr schnell auf diversen Rechnern. Im Laufe der Zeit wurde UNIX immer besser und umfangreicher, es verbreitete sich hauptsächlich in der Großrechnerwelt und wurde dort zu einem Standard (ein seeehr mächtiger Standard).

Was hat das mit MultiTOS zu tun?

Tjaaaa, eigentlich ist MiNT, der Unterbau von MultiTOS, schon ein kleines UNIX!!! Offensichtlich wurde Eric R. Smith beim Programmieren sehr stark von seiner „UNIX-Liebe“ geleitet. Die wichtigsten Systemaufrufe und Verhaltensweisen von UNIX sind in MiNT enthalten. Damit sind der Anpassung von UNIX-Software auf MultiTOS Tür und Tor geöffnet.

Das Benutzer-Interface von UNIX ist die Shell. Dieses Programm nimmt die Eingabe des Benutzers entgegen und interpretiert sie. Natürlich gibt es unter UNIX nicht nur eine Shell, sondern deren viele... Aber keine Panik, auch unter MultiTOS muß nicht auf die Vielfalt verzichtet werden, die wichtigsten Shells stehen als PD zur Verfügung: Bourne-Shell, Korn-Shell, C-Shell. Im folgenden wollen wir uns auf die Bourne-Shell konzentrieren, weil sie die Standard-Shell unter UNIX ist und weil die anderen ihre Befehle in der Regel auch verdauen. Natürlich kann man dabei die Maus vergessen und muß zur Tastatur greifen, denn damals war die Maus noch gar nicht erfunden. Wie bitte? Was? Keine Maus? Wo soll denn da der Nutzen liegen? Also gut, ein kleines Beispiel vorab:

ls -R -1>dir.txt

Diese Befehlszeile einem UNIX-System „vorgeworfen44, schreibt das Inhaltsverzeichnis des aktuellen Ordners inklusive aller Unterordner in die Datei dir.txt. Man sieht, nicht in allen Fällen ist die Maus schneller. Natürlich war das nur ein „mickriges“ Beispiel für die Fähigkeiten der Bourne-Shell. Im Laufe der Zeit werden wir noch wesentlich mächtigere Befehle kennenlernen.

Installation

Der erste Schritt in Richtung UNIX ist also das Starten einer Shell unter MultiTOS. Dank MINIWIN läuft diese in einem Fenster, und Sie können nebenher auch noch andere Dinge erledigen.

Nun stellt sich noch die Frage, wie komme ich an eine Shell? Sind Sie Besitzer eines Modems, sollte das kein Problem darstellen. In jeder besseren ATARI-Mailbox sind die entsprechenden PD-Programme zu Finden. Für „modemlose“ Zeitgenossen kann es ein bißchen problematischer werden. Interesse? OK, wenn genügend Resonanz hier in der Redaktion eintrudelt, wird es sicher eine entsprechende MiNT-/MultiTOS-Serie in den ST-Computer-PDs geben.

Brauchbare PD-Shells für MiNT/Multi-TOS sind z.B. folgende Programme:

bash.ttp eine Bourne-Shell
ksh.ttp eine Korn-Shell
tcsh.ttp eine C-Shell

Suchen Sie sich eine aus (mein „Liebling“ ist die KSH). Allerdings ist es mit der Shell alleine noch nicht getan! Die meisten Befehle sind unter UNIX eigenständige (kleine) Programme oder Batch-Dateien. Als minimale Grundausstattung sollte daher noch folgendes organisiert werden:

ls.ttp zeigt Dateien/Verzeichnisse an
cp.ttp kopiert Dateien/Verzeichnisse
mv.ttp verschiebt Dateien/Verzeichnisse bzw. dient zum Umbenennen
rm.ttp löscht Dateien
mkdir.ttp legt einen Ordner an
rmdir.ttp löscht Ordner
more.ttp zeigt eine Datei seitenweise an

Haben Sie die entsprechenden Programme zusammen? OK, dann brauchen wir noch ein paar UNIX-Standardordner auf Ihrer Festplatte. Bei mir sieht das z.B so aus: Im Ordner MULTITOS befindet sich der Ordner UNIX, und in diesem wiederum finden sich die Ordner BIN, HOME, ETC und USR. Die TTPs gehören in den Ordner BIN, die restlichen Ordner bleiben diesmal noch leer, mit ihrer Bedeutung werden wir uns in den nächsten Ausgaben beschäftigen (UNIX-Kenner mögen mir diese Minimalinstallation verzeihen, aber mehr würde im Moment nur verwirren). Nun müssen Sie in die Datei MINT.CNF noch folgende Zeilen eintragen:

sin c:\multitos\unix\bin u:\bin 
sin c:\multitos\unix\etc u:\etc 
sin c:\multitos\unix\usr u:\usr 
sin c:\multitos\unix\home u:\home

Dank dieser Zeilen finden Sie die Ordner BIN, ETC, USR und HOME in Zukunft auch im Laufwerk U: direkt im ROOT-Verzeichnis. Das ist besonders wichtig, da es unter UNIX eigentlich keine einzelnen Laufwerke gibt. Unter MiNT/MultiTOS bildet U: diesen Zustand nach! Beim Arbeiten mit einer UNIX-Shell sollten Sie es sich gleich zur Gewohnheit machen, nur noch auf U: zu arbeiten.

Die Datei GEM.CNF bleibt auch nicht ungeschoren, hier tragen Sie bitte diese Zeilen ein:

setenv PATH=.,u:/bin 
setenv HOME=u:/home

Damit teilen Sie der Shell mit, wo sie ausführbare Programme suchen soll und wo Sie zu Hause sind.

Beliebige Verzeichnisse lassen sich unter MiNT in dem Laufwerk U: spiegeln.
Eine UNIX-Shell auf dem ATARI im GEM-Fenster läßt die Herzen von UNIX-Fans höher schlagen.

Alles erledigt? In Ordnung, dann starten Sie Ihren Rechner bitte neu. Ist er wieder erwacht? Gut, dann öffnen Sie das Laufwerk U:, gehen in den Ordner BIN und starten Ihre Shell (z.B. sh.ttp oder ksh.ttp oder tcsh.ttp) mit einem Doppelklick. Nun sollte sich ein Fenster von MINIWIN öffnen und darin das Prompt der Shell erscheinen. Prompt? Ach ja, das Prompt ist ein Zeichen (oder auch mehrere), mit dem die Shell anzeigt, daß sie gewillt ist, Ihre Eingaben anzunehmen. In der Regel wird ein „#“ als Prompt verwendet (werden wir später noch ändern). Eventuelle „Motzereien“ Ihrer Shell wie z.B. „.profile not found“ können Sie vorerst ignorieren (ja, ich höre die UNIX-Kenner schon wieder aufschreien, aber bitte Geduld, jeder fangt klein an :-)

Die Ein-/Ausgabeumleitung ist unter MiNT recht einfach zu verwirklichen.

ls

Geschafft, das Prompt ist da, nun können Sie Ihren ersten UNIX-Befehl eingeben. Tippen Sie einfach „ls“, gefolgt von RETURN. Es sollte das Inhaltsverzeichnis von U:\BIN erscheinen. Damit ist auch schon der Nutzen von ls.ttp erklärt. Aber ls.ttp kann noch mehr! Mit dem Parameter -/ aufgerufen, zeigt es eine ausführlichere Auflistung der Dateien und Verzeichnisse. Der Parameter -R veranlaßt ls dazu, auch den Inhalt aller Unterverzeichnisse auszugeben. Zwar kann ls auch noch viiiiiiel mehr, aber damit wollen wir es fürs erste bewenden lassen.

cd

Sehr schön, aber immer nur im Verzeichnis U:/BIN herumspielen wird auf Dauer auch langweilig. Also wechseln wir das Verzeichnis. Unter UNIX dient hierzu der Befehl cd (change directory). Mit „cd springen Sie einen Ordner höher, und mit „cd bin“ geht es wieder zurück in den Ordner BIN. Wollen Sie mehrere Ordner auf einmal überspringen, können Sie auch komplette Pfadnamen angeben. Z.B. wechselt „cd /c/multitos“ in den Ordner MULTITOS auf Ihrer Partition C:, und „cd /“ geht in das Root-Verzeichnis von U:.

ACHTUNG! Unter UNIX wird das Zeichen „/“ (Shift 7) in Pfadnamen verwendet und nicht wie vom TOS gewohnt das Zeichen „\“ (Shift Alternate Ü). Am besten. Sie springen, der Übung halber, ein Weilchen via cd auf Ihrer Festplatte herum; und damit Sie immer wissen, wo Sie sich gerade befinden, gibt es das Kommando:

pwd

Es steht für das Englische „print working directory“ und gibt das aktuelle Verzeichnis aus.

I/O-Umleitung

Damit sind wir gerüstet, um uns mit einem weiteren Feature von UNIX und mithin auch MultiTOS zu beschäftigen: der Ein-/Ausgabeumleitung. Im Normalfall erhält ein Programm seine Eingaben von der Tastatur und gibt seine Ausgaben auf dem Bildschirm aus. Unter UNIX/MiNT ist dies allerdings nur die Vorgabe, es können fleißig Umleitungen gebaut werden. Ein einfaches Beispiel ist die Umleitung der Ausgabe in eine Datei. Möchten wir die Ausgabe von ls zum Beispiel in einer Datei haben, machen wir das unserer Shell mit folgendem Befehl begreiflich: „ls >test.txt“. Das Zeichen „>“ ist der Schlüssel, der Text der darauf folgt, wird als der Name einer Datei interpretiert, in die die Ausgabe erfolgen soll. Dieses Spielchen ist „latürnich“ nicht auf ls beschränkt, es funktioniert mit praktisch allen UNIX-Befehlen. So schreibt „pwd >test.txt“ das aktuelle Verzeichnis in die Datei test.txt. Aber damit nicht genug, es kann auch die Ausgabe eines Programmes direkt mit der Eingabe eines anderen verbunden werden. Hier kommt more ins Spiel. Zunächst soll es genügen, daß more.ttp die Eingabe seitenweise wieder ausgibt. Man stelle sich vor, in einem Ordner sind sehr viele Dateien, eine Ausgabe mit „ls“ rauscht einfach zu schnell über den Bildschirm, um etwas erkennen zu können. Der UNIX-Freak wird in diesem Falle einfach „ls | more“ eingeben. Das Zeichen „|“ verbindet die Ausgabe von ls direkt mit der Eingabe von more. Da MORE die Eingabe seitenweise wieder ausspuckt und nach jeder Seite auf einen Tastendruck (z.B. Space) wartet, kann man nun das Inhaltsverzeichnis des Ordners in aller Gemütsruhe Seite für Seite betrachten. Wer more vorzeitig beenden will, sollte die Taste „Q“ drücken.

Vorzeitig beendet ist damit auch dieser Artikel. Ich hoffe aber, daß Sie nun erahnen können, welche Vorzüge in MultiTOS noch verborgen liegen. In der nächsten Ausgabe werden wir noch einiges mehr aus der UNIX-Welt kennenlernen und vor allem das System (zur Beruhigung der UNIX-Freaks) anständig einrichten. Wer wirklich in die Un(ix)-Tiefen einsteigen will, sollte sich auch weiterführende Literatur zu diesem Thema besorgen. In jeder Leihbücherei sollten Bücher über UNIX System 7 zu finden sein (z.B. Springer-Verlag, Jürgen Gulbins, UNIX Version 7 bis System V.3, 3. Auflage, ISBN 3-540-19248-4).


Richard Kurz
Aus: ST-Computer 11 / 1993, Seite 106

Links

Copyright-Bestimmungen: siehe Über diese Seite