Feines Handwerk: Craft - eine Unix-ähnliche Shell

Eine neue tastaturorientierte Kommandooberfläche ist auf den Markt gekommen: die UNIX-ähnliche Shell CRAFT. Der Programmname steht im Deutschen für Handwerk und Geschicklichkeit. Dieser Test soll klären, ob CRAFT mehr Handarbeit bedeutet oder geschickt Tastaturgriffe einspart.

Das mausorientierte GEM soll die Bedienung des Rechners per Kommandoeingabe auf der Tastatur ersetzen und für leichte Erlernbarkeit, Fehlervermeidung und logischeres Arbeiten sorgen. Dennoch gibt es viele gute Gründe für die Verwendung einer herkömmlichen Shell, wie sie in anderen Betriebssystemen verwendet wird, da sie bei guter Einarbeitung durchaus ein effizienteres Arbeiten ermöglichen kann.

COMMAND von ATARI hat aufgrund geringer Leistungsfähigkeit und mangelnder Verbreitung keinen großen Erfolg gehabt. Sehr bekannt ist inzwischen die Shell Guläm aus der Public-Domain (siehe PD-News, 3/89. Seiten 12ff), die sich an die UNIX-Shells anlehnt.

Die Kommando-Interpreter der verschiedenen UNIX-Abarten sind ob ihrer Leistungsfähigkeit sehr beliebt und haben einige Konzepte für Shells eingeführt, die weit über COMMAND oder die MS-DOS-Shell hinausgehen. Oftmals werden Programme in UNIX über Shell-Scripts aufgerufen, die teilweise schon Optionen verarbeiten.

CRAFT lehnt sich an die UNIX C-Shell an und bildet viele der UNIX-Features und Utilities nach. Hinzu kommt ein Editor, der mehrere Dateien gleichzeitig bearbeiten kann. Mit diesem Leistungsumfang ist CRAFT praktisch ein professioneller Konkurrent zum Guläm.

CRAFT in der Version 2.0 wird auf zwei Disketten ohne Kopierschutz ausgeliefert. Neben dem umfangreichen Handbuch liegen Plastikstreifen mit Beschriftung für die Editorfunktionen bei, die über den Funktionstasten eingeklemmt werden können. Das Paket kostet ca. DM 340,- und muß momentan noch direkt in den Niederlanden bestellt werden.

Installation

Zur Installation von CRAFT werden einfach alle benötigten Dateien auf den verwendeten Massenspeicher kopiert. Dabei ist mit einer Festplatte natürlich ein schnelleres Arbeiten möglich als mit einer Diskette.

Die Installation, also das Kopieren, wird im Handbuch Schritt für Schritt beschrieben und sollte keinerlei Probleme machen. Gleichzeitig benutzt man dabei sofort die Shell und lernt sie kurz kennen. Bei einem Festplattensystem nimmt das Kopieren weniger als zehn Minuten in Anspruch.

Bei einem reinen Diskettensystem wird eine Arbeitsdiskette erstellt, die während der Arbeit im Laufwerk präsent sein muß, da CRAFT z.B. den Editor nachlädt. Eine Installation auf einer RAM-Disk ist natürlich auch möglich, sie muß dann bei jedem Rechnerstart wiederholt werden. Dieser Vorgang läßt sich per Shell-Script natürlich automatisieren.

Bild 1: Die Befehle der CRAFT-Shell

Shell

CRAFT besitzt 70 eingebaute Kommandos. Sie beinhalten die "normalen” Funktionen zur Dateipflege mit UNIX-Kommandonamen, Verwaltungsfunktionen für die Shell und einige spezielle Funktionen, die z.B. alle Einstellungsmöglichkeiten des Kontrollfeldes nachbilden.

Hinzu kommen weitere Schlüsselwörter, die in Batchdateien - die hier entsprechend UNIX Script heißen die Abarbeitung steuern. Bild 1 zeigt alle eingebauten Kommandos.

Als besondere Features sind zu nennen der eingebaute Druckerspooler, ein in seiner Größe frei einstellbarer Disk-Cache oder die Möglichkeit, über ein Paßwort-File einen Login-Vorgang festzulegen. Letzteres macht zwar beim Einbenutzersystem ST als solches wenig Sinn, kann aber eine Anwendung finden, wenn man sich zum Programmieren automatisch auf Partition D: mit bestimmten Voreinstellungen befinden will; für Arbeiten mit TeX z.B. auf E: mit anderen Einstellungen. Mit entsprechender Paßwortdatei kann man sich im ersten Fall z.B. als Benutzer “C" “einloggen”, ansonsten als “text”.

Die Ein- und Ausgabeumleitung für Standardaus- und eingabe sowie den Fehlerkanal läßt sich problemlos verwenden: wo CRAFT über andere Shells hinausgeht, sind die Pipes.

Pipes sind ein UNIX-Konzept, das - auf Single-Tasking-Maschinen - dafür sorgt, daß die Ausgabe eines Programms als Eingabe eines anderen verwendet wird. Eine Kommandozeile

ls | more

bewirkt den Aufruf von ls (Directory listen), dessen Ausgabe nicht auf den Bildschirm, sondern direkt an das Kommando more weitergereicht wird. more gibt Text aus und sorgt (wie die Standardroutine des Desktops) dafür, daß nach jeweils ca. 20 Textzeilen auf einen Tastendruck gewartet wird.

Mit Pipes lassen sich Kommandofolgen einfacher und logischer formulieren, da CRAFT selbständig für die Auswahl von Zwischendateien sorgt.

Komfort

Die Alias-Funktion ermöglich es, mehrere Befehle unter einem Namen zusammenzufassen. “alias ls ‘clear ; ls’” definiert das ls-Kommando so um, daß vor dem Directory-Listing der Bildschirm gelöscht wird. Besonders praktisch lassen sich hier immer wieder benutzte Optionen festlegen, so z.B. “alias ls ‘ls -I’”.

Die History-Funktion erlaubt die Wiederholung von bereits eingegebenen Kommandos. Auf das Zeichen ! folgt entweder eine Zahl oder eine Zeichenfolge. Die Zahl bezeichnet die Nummer der Kommandozeile, die wiederholt werden soll. Damit man sich aber nicht etwa Nummern merken muß, versucht CRAFT bei einer Zeichenfolge das Kommando zu finden, das mit den eingegebenen Zeichen beginnt. Dieses wird dann erneut ausgeführt. Ebenso kann man mit den Pfeiltasten die zuletzt eingegebenen Kommandozeilen durchgehen und die gewünschte auswählen. Die Wiederholung des letzten Kommandos braucht also nur noch zwei Tastendrücke: Pfeil hoch und Return.

Bei der Eingabe eines Dateinamens kann man sich von CRAFT mittels der Escape-Taste unterstützen lassen. CRAFT versucht dann, aus den bisher eingegebenen Zeichen und dem Directory-Inhalt den vollständigen Dateinamen zu ermitteln. Gibt es eine Datei “CRAFTTES.DOC" reicht die Eingabe von “C” und Escape, und man erspart sich die restlichen Buchstaben. Gibt es gleichzeitig eine Datei “CRAFTTEX.DOC”. vervollständigt CRAFT so weit wie möglich. Die notwendigen Eingaben sind dann “C” Escape “S” Escape.

CRAFT verwaltet Variablen, die in Shell-und Environment-Variablen aufgeteilt werden. Letztere können auch per C-Standardfunktionen von Anwendungen abgefragt werden. Die internen Shell-Variablen steuern den Ablauf vieler Kommandos, insbesondere gibt es die Variable path, die die Pfade festlegt, auf denen CRAFT nach Programmen suchen soll. Die Shell bietet ausreichend Operationen, um Variablen effizient zu manipulieren. Dabei lehnt sich das Programm natürlich an die Vorgaben durch die UNIX-Shells an.

Scripts

Für Scripts - also Batchdateien - hat man eine relativ mächtige Sprache mit Schleifen und Tests zur Verfügung. Wie in UNIX-Shells lassen sich damit sehr intelligente Scripts schreiben, die weit über das automatische Aufrufen von Programmen hinausgehen.

Ein Beispiel (aus dem Handbuch) zeigt das Script in Bild 2, das ein Directory umkopiert. oder - wenn man so will -umbenennt. Die ersten drei Abfragen mit if überprüfen, ob die richtige Anzahl von Argumenten übergeben wurde, ob tatsächlich ein Directory bewegt werden soll, und ob nicht eventuell eine Datei mit dem Namen des Zieldirectories schon existiert.

Falls noch nicht vorhanden, wird ein Zieldirectory eingerichtet. Nun kann die Shell mit dem mv Kommando die einzelnen Dateien kopieren. Soll ein Unter-Directory bewegt werden, geschieht dies durch einen Selbstaufruf des Scripts. Abschließend löscht das Script das Quelldirectory.

Wie zu sehen, sind die Programmiermöglichkeiten fast mit einer Hochsprache zu vergleichen. Ausdrücke lehnen sich an die Sprache C an (daher der Name C-Shell bei UNIX). Bei der Script-Sprache handelt es sich allerdings nicht um etwas Neues, CRAFT implementiert nur die Fähigkeiten von UNIX-Shells.

Über Scripts und Aliases hinausgehend kennt CRAFT selbstdefinierte Shell-Kommandos, die Functions. Bei ihnen wird ein Shell-Programm mit allen für Scripts vorhandenen Kontrollstrukturen vorverarbeitet und im Speicher bereitgehalten. Mit dem Source-Kommando lassen sich entsprechende Funktionsdefinitionen aus Dateien einladen. Die Functions sind eine effiziente Möglichkeit zur Erweiterung und Anpassung der Shell-Funktionen. Gegenüber den Scripts haben sie den Vorteil, daß das Einlesen von Platte entfällt: gegenüber Aliases kann man zusätzlich Kontrollstrukturen benutzen.

Bild 2: Beispiel für eine Batch-Datei mit der CRAFT-Shell

Shell-Benchmarks

Funktion CRAFT 2.0 CRAFT-Funcs Guläm 1.0/3
Directory listen (Is -IR) 1:28 1:33
Dateien ausgeben (cat) 0:28 0:31
Dateien kopieren (cp -i) 2:54 2:43
Dateien löschen (rm) 0:07 0:04
Script-Schleife 0:04.13 0:03.9 0:17
Arithmetik 0:12.95 0:12.8 0:27.5
Variablen 0:09.71 0:09.51 0:27

Guläm handgestoppt, CRAFT mit time-Kommando gemessen

Bild 3: Ergebnisse der Benchmarks

Benchmarks

Eine Shell benchmarken? Ein Testverfahren, das eigentlich für Compiler reserviert scheint, kann auch hier in einem Vergleich mit der Guläm-Shell vorgenommen werden.

Das kleine Testset umfaßt einige Standardoperationen. deren Geschwindigkeit hauptsächlich von GEMDOS bestimmt wird, und kleine Shell-Scripts, die die Geschwindigkeit der Verarbeitung durch die Shell messen. Dabei werden keine Betriebssystemroutinen verwendet, so daß eine Geschwindigkeitsmessung der Shell selber möglich wird.

Die Ergebnisse sehen Sie in Bild 3. Die Unterschiede zwischen CRAFT und Guläm sind in den Standardoperationen minimal, hier bleiben die GEMDOS-Funktionen ein fester Faktor. Anders jedoch bei den Tests mit Scripts. CRAFT verarbeitet Scripts sehr flott, was seine Begründung darin findet, daß CRAFT anders als Guläm Script einmal in den Speicher lädt und dort abarbeitet.

Die gemessenen Zeiten für als Functions definierte Scripts zeigen, daß lediglich der Zugriff auf den Massenspeicher entfällt, jedoch keine geschwindigkeilsbringende Vorverarbeitung stattzufinden scheint. Functions beschleunigen also die Abarbeitung nicht nennenswert.

Editor

Der mitgelieferte Editor STedi kann unter CRAFT als Standard-Editor oder als Accessory verwendet werden. Es handelt sich um einen einfachen, bildschirmorientierten Editor, der bis zu 10 Dateien bearbeiten kann. Gesteuert wird der Editor entweder durch Tastenkombinationen und Funktionstasten oder durch eine Art Menü, das nach Druck auf eine Maustaste am unteren Bildschirmrand auftaucht (Bild 4). Schließlich hat man noch die Möglichkeit nach Escape Befehle durch einen Kommandobuchstaben einzugeben.

Wahrscheinlich wird man meistens die Tastenkombinationen benutzen, die “Menüs" sind zu kryptisch gehalten, und die Eingabe per Kennbuchstaben ist doch etwas umständlich.

STedi beherrscht die üblichen Editorfunktionen wie Suchen/Ersetzen und vielfältige Cursor-Bewegungen. Besonders ist vielleicht die Möglichkeit, in sogenannten Learnbuffers Kommandosequenzen zu speichern und dann als Makros abzurufen.

Für die Bearbeitung von längeren Programmtexten ist das Folding gedacht. Beim Folding (auch t eilweise als Outlining bekannt), werden der besseren Übersicht wegen Textteile “zusammengefaltet" und nur noch als eine Zeile angezeigt. Bild 4 zeigt einen gefalteten Text.

Die fünf letzten Textzeilen enthalten Kommandos, um in Modula-2 ein Feld zu löschen. Sie sind von zwei Kommandozeilen eingerahmt, die mit #[ und #] anzeigen, daß hier gefaltet werden kann. Beim “Schließen" einer Falte verschwinden die eigentlichen Textzeilen, nur die Kommentarzeile wird angezeigt. Hinter der ersten Textzeile im Bild verbirgt sich ein solches Textstück. Durch ## zeigt der Editor an, daß hier gefaltet wurde. Die Markierung des Folding-Bereiches ist so definiert, daß sie in allen Programmiersprachen in einer Kommentarzeile unterzubringen ist. Das Öffnen und Schließen von Folds geschieht einfach mit Funktionstasten. Hier hat der Editor übrigens Probleme mit geschachtelten Folds.

Bild 4: Menüzeile und "zusammengefaltetet” Text

Das Handbuch

Das englischsprachige Handbuch ist schon auf den ersten Blick eine wirkliche Überraschung: Mit 661 Seiten übertrifft es z.B. den Umfang von Lattice-C. Aber auch der Inhalt ist vorbildlich geraten, jede kleinste Funktion der Shell und des Editors wird ausführlich erläutert. Durch eine geschickte Gliederung dient es gleichzeitig als Handbuch und Nachschlagewerk. Veränderungen gegenüber der - hierzulande wahrscheinlich unbekannten - Vorgängerversion 1.0 sind extra markiert.

Besonders hilfreich sind die zahlreichen Querverweise innerhalb des Handbuchs und der dreißig Seiten umfassende Anhang. getrennt nach Shell und Editor. Offensichtlich wurde das Satzsystem TeX zur Herstellung benutzt, das solche Hilfen besonders unterstützt und herausfordert. Das Handbuch wird die Einarbeitung besonders erleichtern und auch bei späterer Routinearbeit und in Spezialfallen praktisch alle Fragen beantworten. Es ist ein hervorragendes Handbuch, das sich auch hier am Vorbild UNIX orientiert.

Fazit

CRAFT ist eine sehr gut gelungene Shell, die effizientes Arbeiten ermöglicht und durch besondere Features unterstützt. Sie erfüllt den Quasistandard UNIX und ist damit herkömmlichen Shells weit überlegen. Der Editor erfüllt seinen Zweck zwar, kann aber nicht besonders glänzen. Möglicherweise bindet man hier besser Tempus ein oder greift auf den TOS-orientierten Emacs zurück.

Der entscheidende Kritikpunkt bleibt allerdings der Preis. Für DM 340,- erhält man ein komplettes C-Entwicklungspaket, hier sollte eine reine Entwicklungsumgebung nicht den gleichen Preis ausmachen. Auf dem Public Domain-Sektor ist es durchaus möglich, sich mit dem Guläm und dem UNIX-Toolkit von Andrew Smith und Steve Ashcroft eine in der Leistungsstarke ähnliche Umgebung zu schaffen und das zu einem weit geringeren Preis. Das Aufkommen von Teilen des Shareware-Betriebssystems GNU von Richard M. Stallman wird diese Nulltarifkonkurrenz noch verstärken.

Wer eine professionelle Entwicklungsumgebung à la UNIX benötigt und sich nicht auf Shareware-Experimente einlassen will, ist mit CRAFT sehr gut bedient. Wer als Hobby-Benutzer auf den Geldbeutel achten muß. hat eine kostengünstigere Alternative in der Shareware.

Bezugsquelle Com Media Leidsekade 9H KL-1017 PP Amsterdam Niederlande



Aus: ST-Computer 06 / 1989, Seite 150

Links

Copyright-Bestimmungen: siehe Über diese Seite