Amiga goes UN*X: csh
Dieser Artikel richtet sich an all diejenigen Amiga-Besitzer
(Mess-DOS-Anwender bitte umblättern!), die immer noch mit CLI bzw.
(Commodore-)Shell arbeiten. Ich will mit diesem Artikel versuchen,
eine etwas andere Benutzerschnittstelle zu beschreiben und
schmackhaft zu machen. Nein, nicht die Workbench! Ich spreche von
der C-Shell, kurz csh.
Ursprünglich wurde sie von Matthew Dillon von UN*X auf den Amiga
portiert, z. Zt. wird sie von Dominik Müller weiterentwickelt.
Ich werden nun versuchen, einige Punkte herauszustellen, die mir
wichtig erscheinen.
1. Installation
Diese gestaltet sich relativ problemlos. Man kopiert das 93K lange
File nach C: und die ARP-Library ins LIBS:-Verzeichnis. Als nächstes
setzt man in der "Startup-Sequence" seinen Stack auf mindestens 8K.
Die Shell besitzt zwei eigene Startup-Dateien, normalerweise
"s:firstlogin" und "s:login". Diese sind mit "s:startup-sequence" und
"s:user-startup" vergleichbar. Der Unterschied ist, daß "login" für
jede Shell abgearbeitet wird, "firstlogin" nur für die Shell, mit der
man bootet: dies ist nützlich, wenn man mehrere Shell-Fenster
aufmachen möchte, Befehle wie "setmap" oder diverse "assign"s aber
nur einmal ausführen will.
Als letzten Befehl in der "Startup-Sequence" ruft man dann die csh
auf. Diese arbeitet daraufhin die obrige(n) Datei(en) ab und stellt
sich dann dem Benutzer zur Verfügung.
2. Neuigkeiten gegenüber AmigaDOS
- Pipes, unter UN*X etwas alltägliches, sind hier ein Schlagwort. Man
versteht darunter das Umlenken der Ausgabe eines Befehls in einen
anderen hinein. Um z. B. die Anzahl der "assign"-Befehle in der
Datei "s:firstlogin" zu zählen, ist folgender Befehl möglich:
1> search s:firstlogin assign | linecnt
Ein Minuspunkt muß für die Realisierung vergeben werden: Die
Programme laufen synchron ab, wobei das Zwischenergebnis in einer
temporären Datei abgespeichert wird. Dies soll jedoch in einer
kommenden Version behoben werden.
- Jeder ausgeführte Befehl wird in einer Shell-History gespeichert
und kann auf mehrere Arten wiederholt werden. Dies kann zum einen
mit den Cursortasten geschehen: Cursor rauf/runter blättert vor/
zurück; Um den letzten Befehl erneut auszuführen kann man auch
"
!!
" eingeben.
Oft möchte man aber einen Befehl wiederholen, der schon etwas
früher ausgeführt wurde. Auch hier bietet die csh zwei Möglichkeiten:
Zum einen kann der Anfang des Befehls getippt werden, dann drückt
man Shift-Cursor-rauf und kann so sämtlichen Befehle durchblättern,
die mit der getippten Zeichenfolge anfangen. Für den letzten "copy"-
Befehl reicht meist "co"<shift+crsr-rauf>.
Dies kann man auch ohne Cursortasten bewerkstelligen, indem man
der Zeichenfolge, mit der der gesuchte Befehl beginnt, ein "!"
voranstellt: "!co
".
- Ein weiterer herausragender Punkt ist die Vervollständigung von
Dateiname: Mit "s:sta"<TAB> bekommt man die nächste Datei angeboten,
die mit der getippten Zeichenfolge übereinstimmt, im Normalfall
"s:startup-sequence". (Falls der Dateiname Leerzeichen enthält, wird
er automatisch in Anführungszeichen gesetzt!).
Eine Möglichkeit, alle Dateien anzuwählen, die einen bestimmten Muster
genügen, erreicht man mit <ESC-TAB> (erst Escape, dan Tabulator-Taste).
Dies ist in Verbindung mit Wildcards oft nützlich:
"rm *.o<ESC-TAB>" schreibt alle Namen, die mit ".o" enden, hinter
"rm". Will man wirklich alle löschen, kann man Return drücken oder die
Befehlszeile entsprechend abändern.
- Folgende Wildcards werden u. a. erkannt:
?
- Entspricht einem beliebigen Zeichen
*
- Entspricht 0 oder mehr beliebigen Zeichen
.../*
- Alle Dateien im aktuellen und darunterliegenden Verzeichnis:
"rm .../*" löscht das aktuelle Verzeichnis mitsamt
Unterverzeichnissen (geht auch mit "
rm -r *
")
[]
- Zeichenklassen: "
rm *.[co]
" löscht Source- und Objektfiles
Das Besondere an allen Wildcards ist, daß sie von der Shell und nicht
von den Anwendungsprogrammen expandiert werden.
- Einfache Belegung der Funkionstasten: Zu jeder F-Taste existieren
zwei (lokale) Umgebungsvariablen, z. B. "f1" und "F1". "f1" kann für
die F1-Taste gesetzt werden, "F1" für Shift-F1. Es ist darauf zu
achten, daß kein automatisches Return ausgeführt wird.
Beispiele:
- "
set f1 dir
": - Nach drücken von F1 kann man noch z. b. DF0:
eingeben und dann erst Return drücken.
- "
set F10 cls^M
": - Nach Shift-F10 wird der Bildschirm gelöscht.
3. Befehle
Neben den oben genannten allgemeinen Fähigkeiten bietet die csh auch
noch ca. 100 interne Befehle und über 80 Funktionen (z. B. für
Stringverarbeitung), die bei der Erstellung von Shell-Skripts
äußerst nützlich sind. Hier ein Ausschnitt mit kurzer Beschreibung:
alias
:- Weist einem Befehl einen neuene Namen zu. Dabei können auch
Parameter übergeben werden.
cd
:- Alles wie gewohnt, mit einer Ausnahme: mit Option "-g" und
mehreren Pfaden als Parameter aufgerufen wird eine Liste aller
vorhanden Directories in den jeweiligen Pfaden erstellt. Diese
Liste wird dann verwendet, wenn man nicht den ganzen Pfad
tippen will. Beispiel: "cd -g sys:". Ist man nun irgendwo und
gibt "cd keymaps" ein, so springt man (normalerweise) ins
Verzeichnis "sys:devs/keymaps".
Wird auf dieses Feature verzichtet, dann kann der "cd"-Befehl
vor Directory-Namen auch weggelassen werden: Mit ".." gelangt
man ebenso ins nächsthöhere Verzeichnis wie mit "cd ..".
dir
:- ca. 10 verschienden Optionen, die kombiniert werden können.
Interessant: es kann ein eigenes Ausgabeformat erstellt werden.
Es ist außerdem möglich, Directories farblich hervorzuheben.
man
:- Wie unter UN*X: zum angegebenen Befehl wird eine genauere
Anleitung ausgegeben.
rxrec
:- Mit diesem Befehl empfängt die Shell AREXX-Befehle und kann
so ferngesteuert werden.
rxsend
:- Sendet einen AREXX-Befehl an einen anzugebenden Port. Für
diesen Befehl muß kein AREXX-Interpreter laufen!!!
whereis
:- Durchsucht ein oder mehrere Laufwerke nach einer Datei.
Hier könenn auch wahlweise Wildcards verwendet werden.
4. Fazit
Neben den oben erwähnten Befehlen existieren noch umfangreiche Befehle
zur Erstellung von Shellskripts: diverse Schleifenbefehle, Abfragen,
Verzweigungsanweisungen, ...
Außerdem kann das Erscheinungsbild noch weiter verändert werden: So
kann man den Text im Fenstertitel und/oder Prompt u. a. auf eine der
folgenden Anzeigen setzen: freier Speicher, Zeit, Datum, Pfad, ...
Alles in allem ist die csh auf dem Amiga eine echte Alternative zu
CLI/Shell, die ich nicht missen möchte. Vor allem das Expandieren der
Wildcards, die History-Funktionen und die Vervollständigung von
Dateinamen sind schon Grund genug, sich die Shell einmal anzuschauen.
Besorgen kann man sich die Shell (aktuelle Version: 5.19) über FTP
bei amiga.physik.unizh.ch [130.60.80.80] im Verzeichnis /amiga/devel
oder bei ftp.uni-paderborn.de
im Verzeichnis /pub/aminet/util/shell,
dort werden aktuelle Versionen zuerst Veröffentlicht.
Bei Problemen (Beschaffung, Installation, ...) helfe ich gerne weiter!
© Copyright Hubert Feyrer (hubert.feyrer@rz.uni-regensburg.de),
950728