Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ csh(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

login(1)

sh(1)

access(2)

exec(2)

fork(2)

pipe(2)

a.out(4)

terminfo(4)

ascii(5)

environ(5)

csh(1)                                                               csh(1)

NAME
     csh - C-Shell

SYNTAX
     csh [option ...] [datei [argument ...]]

BESCHREIBUNG
     Die C-Shell csh ist wie die Standard-(Bourne-)Shell sh ein Kommando-
     Interpreter und bietet ebenso wie sh auch die wesentlichen Elemente
     einer Programmiersprache. Bei der C-Shell ist die Syntax dieser Pro-
     grammiersprache der Syntax der Programmiersprache C sehr ähnlich
     (daher auch der Name).

     Wie die Bourne-Shell kennt auch die C-Shell Ein-/Ausgabe-Umlenkung und
     Variablen, ersetzt an gewünschten Stellen Kommandos durch ihre Aus-
     gabe, ersetzt Muster durch passende Dateinamen und anderes mehr. Im
     interaktiven Gebrauch bietet die C-Shell mehr Möglichkeiten als die
     Bourne-Shell, z. B.

     -  Vervollständigung von Dateinamen und Benutzerkennungen

     -  History-Ersetzung

     -  Alias-Namen für Komandos

     -  Auftragssteuerung (Job Control).

     Darüber hinaus hat die C-Shell eine Reihe von eingebauten Kommandos,
     die in der Bourne-Shell nicht enthalten sind.

OPTIONEN
     -b   (b - break) Argumente, die nach dieser Option stehen, werden
          nicht als Optionen für csh interpretiert. Damit können Sie beim
          csh-Aufruf Optionen an eine Shell-Prozedur übergeben, ohne daß
          sie als Optionen für csh interpretiert werden.

     -c   Zusammen mit dieser Option müssen Sie für datei den Namen einer
          Shell-Prozedur angeben. Alle auf datei folgenden argumente werden
          als Argumente für datei angesehen und in der Variablen argv
          gespeichert. Es wird eine Subshell erzeugt, die die Shell-Proze-
          dur ausführt.

     -e   (e - exit) csh wird sofort beendet, wenn ein Kommando nicht ord-
          nungsgemäß beendet wird oder einen Endestatus ungleich 0 zurück-
          gibt.

     -f   (f - fast start) Beim Start wird weder die Datei .cshrc noch die
          Datei .login gelesen.







Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          -f nicht angegeben:

          Beim Start wird die Datei .cshrc gelesen; wird csh als Login-
          Shell gestartet, wird außerdem die Datei .login gelesen.

     -i   (i - interactive) csh gibt das Bereitzeichen für Kommandoeingaben
          aus, selbst wenn die Standardeingabe anscheinend kein Terminal
          ist.

     -n   (n - no execution) csh liest und interpretiert alle Kommandos,
          führt sie aber nicht aus.

          Diese Option ist nützlich, um C-Shell-Prozeduren auf Syntaxfehler
          zu überprüfen.

     -s   (s - standard input) csh liest die Kommandos von der Standardein-
          gabe.

     -t   csh liest nur eine einzige Kommandozeile und führt sie aus. Ist
          die Kommandozeile, die Sie eingeben wollen, länger als eine Ein-
          gabezeile, so können Sie das Neue-Zeile-Zeichen mit einem Gegen-
          schrägstrich \ entwerten.

     -v   (v - verbose) Die vordefinierte Variable verbose wird gesetzt.
          Das bewirkt, daß csh jede Kommandoeingabe auf die Standardfehler-
          ausgabe schreibt, und zwar nach der History-Ersetzung, vor ande-
          ren Ersetzungen und vor der Kommandoausführung.

     -V   Die Variable verbose wird gesetzt, bevor die Datei .cshrc gelesen
          wird.

     -x   Die vordefinierte Variable echo wird gesetzt. Das bewirkt, daß
          csh jede Kommandoeingabe auf die Standardfehlerausgabe schreibt,
          und zwar nach allen Ersetzungen, direkt vor der Kommandoausfüh-
          rung.

     -X   Die Variable echo wird gesetzt, bevor die Datei .cshrc gelesen
          wird.

     datei [argument ...]
          datei [argument ...] können Sie nur dann angeben, wenn Sie keine
          der Optionen -i, -s, -t angeben.

          datei ist der Name des Kommandos oder der Shell-Prozedur, die
          ausgeführt werden soll. datei wird als 0-tes Argument übergeben.

          argument
               Argument für das Kommando bzw. die Shell-Prozedur datei. Sie
               können mehrere Argumente angeben. Die Argumente werden der
               Variablen argv zugewiesen.




Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          datei [argument ...] nicht angegeben:

          csh liest die Kommandos von der Standardeingabe.

FUNKTIONSWEISE UND GEBRAUCH DER C-SHELL
     Dieser Abschnitt ist in folgende Unterabschnitte gegliedert:

     ⊕  Starten und Beenden der C-Shell

        -  Die Dateien .cshrc, .login und .logout

     ⊕  Interaktiver Ablauf

        -  Bereitzeichen der C-Shell

        -  Wie bearbeitet die C-Shell die Kommandozeile?

     ⊕  Nicht-interaktiver Ablauf

     ⊕  Vervollständigung von Dateinamen und Benutzerkennungen

     ⊕  Lexikalische Analyse

        -  Aufteilung der Kommandozeile in Worte

     ⊕  Parsen der Kommando-Eingabezeile

        -  Einfache Kommandos

        -  Pipelines

        -  Pipelines verknüpfen

        -  Pipelines klammern

        -  Kommandos bzw. Pipelines, die im Hintergrund ablaufen

     ⊕  History-Ersetzung

     ⊕  Alias-Namen für Komandos

     ⊕  Umlenkung der Ein-/Ausgabe

     ⊕  Variablen-Ersetzung

        -  Variablen ausgeben, definieren und löschen

        -  Variablen, die die Shell benutzt

        -  Auf den Wert einer Variablen zugreifen

        -  Entwertungszeichen und Variablen-Ersetzung


Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

        -  Zeitpunkt der Variablen-Ersetzung

        -  Shell-Parameter

     ⊕  Kommandos durch ihre Ausgabe ersetzen

     ⊕  Muster durch passende Dateinamen ersetzen

     ⊕  Ausdrücke und Operatoren

        -  Klammer-Operator

        -  Arithmetische Operatoren

        -  Logische Operatoren

        -  Vergleichsoperatoren

        -  Dateieigenschaften abfragen

        -  Abfragen, ob ein Kommando erfolgreich ausgeführt wurde

     ⊕  Ablaufsteuerung

        -  Schleifen und Verzweigungen

     ⊕  Kommandoausführung

        -  Wie sucht die C-Shell nach einem Kommando?

        -  Wie wird das Kommando ausgeführt?

     ⊕  Signalbehandlung

     ⊕  Auftragssteuerung (Job Control)

        -  Auftrag und Auftragsnummer

        -  Wie können Sie den Status von Aufträgen ändern?

        -  Wie bezeichnen Sie einen bestimmten Auftrag?

        -  Ein-/Ausgabe bei Hintergrundaufträgen

        -  Wie meldet die C-Shell Status-Änderungen von Aufträgen?

     ⊕  Eingebaute C-Shell-Kommandos

        -  Die eingebauten Kommandos :, alias, bg, cd, chdir, dirs, echo,
           eval, exec, exit, fg, glob, hashstat, history, jobs, kill,
           limit, login, logout, nice, nohup, notify, onintr, popd, pushd,
           rehash, repeat, set, setenv, shift, source, stop, suspend, time,


Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

           umask, unalias, unhash, unlimit, unset, unsetenv, wait, % und @.

        -  Ablaufanweisungen

     ⊕  Umgebungsvariablen und vordefinierte Shell-Variablen

     ⊕  C-Shell-Prozeduren

        -  Was ist eine C-Shell-Prozedur?

        -  C-Shell-Prozeduren starten

        -  Kommentare

        -  Welches Programm führt die Prozedur aus?

   Starten und Beenden der C-Shell

     Wenn die C-Shell gestartet wird, führt sie normalerweise (siehe Option
     -f) die Kommandos aus, die in der Datei .cshrc in Ihrem HOME-Verzeich-
     nis stehen. Dazu muß diese Datei lesbar sein, und Sie müssen entweder
     der Eigentümer der Datei sein, oder Ihre reale Gruppennummer muß mit
     der Gruppennummer der Datei übereinstimmen.

     Wird die C-Shell mit einem Namen gestartet, der mit einem Bindestrich
     - beginnt, läuft sie als Login-Shell ab (z. B. wenn sie von login auf-
     gerufen wird). In diesem Fall führt die C-Shell zunächst die Kommandos
     in der Datei .cshrc aus und dann zusätzlich die Kommandos in der Datei
     .login in Ihrem HOME-Verzeichnis. Für die .login-Datei benötigen Sie
     dieselben Rechte wie für die .cshrc-Datei. Die .login-Datei enthält in
     der Regel Kommandos, die den Terminaltyp und die Umgebung festlegen.

     Wenn eine Login-C-Shell beendet wird, führt sie die Kommandos aus, die
     in der Datei .logout in Ihrem HOME-Verzeichnis stehen. Hierfür benöti-
     gen Sie wieder dieselben Rechte wie für die .cshrc-Datei.

   Interaktiver Ablauf

     Nach erfolgreichem Start gibt eine interaktive C-Shell das Bereitzei-
     chen rechnername%  (für normale Benutzer) bzw. rechnername#  (für den
     Systemverwalter) aus. Das Bereitzeichen können Sie mit Hilfe der
     Variablen prompt ändern.

     Nach Ausgabe des Bereitzeichens liest die Shell die Kommandos, die
     über das Terminal eingegeben werden. Die Shell bearbeitet jede Einga-
     bezeile wie folgt:

     1.  Die Zeile wird in Worte aufgeteilt (siehe Lexikalische Analyse).

     2.  Diese Wortfolge wird in die History-Liste gesetzt (siehe History-
         Ersetzung).



Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     3.  Die Wortfolge wird geparst (siehe Parsen der Kommando-Eingabe-
         zeile).

     4.  Alias-Namen werden ersetzt (siehe Alias-Namen für Kommandos).

     5.  History-Befehle werden aufgelöst (siehe History-Ersetzung).

     6.  Variablen werden ersetzt (siehe Variablen-Ersetzung).

     7.  Muster für Dateinamen werden ersetzt (siehe Muster durch passende
         Dateinamen ersetzen).

     8.  Die Ein-/Ausgabe wird gegebenenfalls umgelenkt (siehe Umlenkung
         der Ein-/Ausgabe).

     9.  Kommandos in Gegenhochkommata `...` werden durch ihre Ausgabe
         ersetzt (siehe Kommandos durch ihre Ausgabe ersetzen).

     10. Die Shell führt die Kommandos in der Eingabezeile aus (siehe Kom-
         mandoausführung).

   Nicht-interaktiver Ablauf

     Wenn die C-Shell nicht-interaktiv abläuft, gibt sie kein Bereitzeichen
     aus. Eine nicht-interaktive C-Shell führt entweder ein Kommando aus,
     das beim csh-Aufruf als Argument mitgegeben wurde, oder führt die Kom-
     mandos einer Shell-Prozedur aus.

   Vervollständigung von Dateinamen und Benutzerkennungen

     Wenn die Variable filec gesetzt ist, kann eine interaktive C-Shell
     einen nur teilweise eingegebenen Dateinamen oder eine nur teilweise
     eingegebene Benutzerkennung vervollständigen:

     -  Ist ein teilweise eingegebener Dateiname eindeutig und folgt ihm
        ein ESC-Zeichen, dann fügt die Shell die fehlenden Zeichen an und
        vervollständigt ihn so zu einem passenden Dateinamen des aktuellen
        Verzeichnisses.

     -  Folgt einem teilweise eingegebenen Dateinamen ein EOF-Zeichen
        <CTRL-D>, listet die Shell alle passenden Dateinamen des aktuellen
        Verzeichnisses auf. Anschließend gibt sie wieder das Bereitzeichen
        zusammen mit der unvollständigen Kommandozeile aus, damit Sie einen
        der aufgelisteten Dateinamen eingeben können.

     -  Wenn das letzte Wort der Kommandozeile nur teilweise eingegeben
        ist, wenn es mit einer Tilde ~ beginnt und wenn ihm ein ESC-Zeichen
        folgt, dann versucht die Shell dieses Wort zu ~benutzerkennung zu
        vervollständigen, wobei benutzerkennung eine existierende Benutzer-
        kennung ist (siehe Muster durch passende Dateinamen ersetzen).




Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

        Folgt dem teilweise eingegebenen Wort ein EOF-Zeichen <CTRL-D>,
        listet die Shell alle passenden Benutzerkennungen auf. Anschließend
        gibt sie wieder das Bereitzeichen zusammen mit der unvollständigen
        Kommandozeile aus, damit Sie eine der aufgelisteten Kennungen ein-
        geben können.

     Treten dabei Fehler auf oder passen zu einer unvollständigen Eingabe
     mehrere Dateinamen bzw. Benutzerkennungen, so ertönt die Terminal-
     glocke. Dies können Sie verhindern, indem Sie die Variable nobeep set-
     zen.

     Sie können außerdem Dateinamen mit bestimmten Suffixen ausschließen,
     indem Sie diese Suffixe in der Variablen fignore auflisten. Wenn
     jedoch der unvollständige Dateiname nur zu einem Dateinamen mit einem
     solchen Suffix vervollständigt werden kann (es sonst also keine andere
     Möglichkeit gibt), dann wird dieser Dateiname nicht ignoriert. Der
     Inhalt der Variablen fignore hat keinen Einfluß auf die Liste der
     Dateinamen, die bei einem EOF-Zeichen ausgegeben wird.

     Siehe Beispiel 1 und 2 am Ende der C-Shell-Beschreibung.

   Lexikalische Analyse

     Die C-Shell teilt jede Eingabezeile nach den folgenden Regeln in Worte
     auf:

     -  Worttrenner sind normalerweise Leer- und Tabulatorzeichen.

     -  Die Sonderzeichen &, |, ;, <, >, ( und ) bilden jeweils ein eigenes
        Wort; treten diese Zeichen als Paar auf (z. B. || oder >> oder |&),
        bildet ein solches Paar ein Wort. Sind diese Zeichen mit einem vor-
        angestellten Gegenschrägstrich \ entwertet, können sie Teil eines
        anderen Wortes sein (z. B. ist a\|b ein Wort, a|b sind drei Worte).

     -  Ein Neue-Zeile-Zeichen, dem ein Gegenschrägstrich vorangestellt
        ist, hat die gleiche Bedeutung wie ein Leerzeichen.

     -  Eine Zeichenkette, die in Hochkommata '...', Anführungszeichen
        "..." oder Gegenhochkommata `...` eingeschlossen ist, bildet ein
        Teilwort. Sonderzeichen (einschließlich Leer- und Tabulatorzei-
        chen), die in einer solchen Zeichenkette vorkommen, bilden kein
        eigenes Wort. Ein Neue-Zeile-Zeichen, das innerhalb von Hochkommata
        '...', Anführungszeichen "..." oder Gegenhochkommata `...` steht
        und dem ein Gegenschrägstrich vorangestellt ist, wirkt wie ein
        Neue-Zeile-Zeichen (nicht wie ein Leerzeichen).

     -  Wenn die Shell nicht vom Terminal liest, leitet das Nummernzeichen
        # einen Kommentar ein; der Kommentar endet mit der Eingabezeile.
        Die Shell ignoriert alle Zeichen, die zum Kommentar gehören (siehe
        C-Shell-Prozeduren).




Seite 7                      Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

        Ist dem Nummernzeichen ein Gegenschrägstrich \ vorangestellt oder
        steht es innerhalb von Hochkommata '...', Anführungszeichen "..."
        oder Gegenhochkommata `...`, verliert es seine Sonderbedeutung als
        Kommentarzeichen.

     Beispiel:

             Die beiden Kommandos

             who>/tmp/whoson

             who>>/tmp/whoson

             bestehen aus je drei Worten: who, > bzw. >> und /tmp/whoson.
             Das Kommando

             "who am I"

             besteht aus nur einem Wort; die C-Shell interpretiert dieses
             Wort who am I als Namen eines Programms, das ausgeführt werden
             soll.

   Parsen der Kommando-Eingabezeile

     Für die C-Shell ist die Kommando-Eingabezeile folgendermaßen aufge-
     baut:

     -  Ein einfaches Kommando besteht aus einer Folge von Worten. Das
        erste Wort (das nicht Teil einer Ein-/Ausgabe-Umlenkung ist)
        bezeichnet das Kommando, das ausgeführt werden soll. Alle weiteren
        Worte, die keine Sonderbedeutung für die C-Shell haben, werden dem
        auszuführenden Kommando als Argumente übergeben.

     -  Ein einfaches Komando oder eine Folge von einfachen Kommandos, die
        durch | oder |& voneinander getrennt sind, bilden eine Pipeline.
        Dabei bedeutet:

        kommando1|kommando2
             Die Standardausgabe von kommando1 wird in die Standardeingabe
             von kommando2 umgelenkt.

        kommando1|&kommando2
             Die Standardausgabe und die Standardfehlerausgabe von
             kommando1 werden beide in die Standardeingabe von kommando2
             umgelenkt.

     -  Mehrere Pipelines können durch einen Strichpunkt ;, durch && oder
        durch || miteinander verbunden werden. Dabei bedeutet:

        pipeline1;pipeline2
             Die beiden Pipelines werden hintereinander ausgeführt.



Seite 8                      Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

        pipeline1&&pipeline2
             Zuerst wird pipeline1 ausgeführt. pipeline2 wird nur dann aus-
             geführt, wenn pipeline1 erfolgreich ausgeführt wurde.

        pipeline1||pipeline2
             Zuerst wird pipeline1 ausgeführt. pipeline2 wird nur dann aus-
             geführt, wenn pipeline1 nicht erfolgreich ausgeführt wurde.

     -  Eine Pipeline oder eine Folge von Pipelines kann in runde Klammern
        (...) eingeschlossen werden. Dadurch entsteht ein einfaches Kom-
        mando, das wieder Teil einer Pipeline oder Folge von Pipelines sein
        kann.

     -  Ist an eine Folge von Pipelines das Zeichen & angefügt, wird sie
        asynchron, d. h. im Hintergrund, ausgeführt. In diesem Fall wartet
        die Shell nicht, bis die Folge ausgeführt ist, sondern gibt die
        Auftragsnummer, die zugehörigen Prozeßnummern und dann sofort das
        Bereitzeichen aus (siehe Auftragssteuerung).

   History-Ersetzung

     Mit Hilfe der History-Ersetzung können Sie früher eingegebene Komman-
     dozeilen nochmals ausführen lassen oder Worte aus früher eingegebenen
     Kommandozeilen in der aktuellen Kommandozeile verwenden. Damit können
     Sie Schreibfehler leicht korrigieren und komplizierte Kommandos
     schnell wiederholen.

     Die C-Shell speichert die eingegebenen Kommandozeilen in der History-
     Liste. Die Größe dieser Liste wird durch den Wert der Variablen
     history bestimmt. Das zuletzt eingegebene Kommando wird auf jeden Fall
     in der Liste gespeichert.

     Eine früher eingegebene Kommandozeile, die in der History-Liste gespei-
     chert ist, wird Ereignis genannt. Jedes Ereignis erhält eine Ereignis-
     nummer. Die Nummern werden in aufsteigender Reihenfolge vergeben.

     History-Befehle können Sie überall in einer Kommandozeile eingeben;
     Sie können History-Befehle jedoch nicht schachteln.

     Jeder History-Befehl bezieht sich auf ein bestimmtes Ereignis (siehe
     Ereignis-Bezeichner). Um einen History-Befehl auszuführen, durchsucht
     die Shell die History-Liste rückwärts vom letzten bis zum ersten
     Ereignis. Hat sie das gewünschte Ereignis gefunden, wählt sie gegebe-
     nenfalls bestimmte Worte aus (siehe Wort-Bezeichner) und ändert diese
     gegebenenfalls ab (siehe Parameter). Die so entstehende Zeichenkette
     setzt sie anstelle des History-Befehls in die aktuelle Kommandozeile
     ein. Die Kommandozeile, die sich dadurch ergibt, wird dann in die
     History-Liste gesetzt und außerdem auf den Bildschirm ausgegeben. Dann
     erst führt die Shell gegebenenfalls weitere Ersetzungen durch (z. B.
     Variablen-Ersetzungen, Ersetzung von Mustern durch passende Dateinamen
     usw.) und führt das Kommando aus. Siehe Beispiele 3 bis 7 am Ende der
     C-Shell-Beschreibung.


Seite 9                      Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Ein History-Befehl hat das folgende Format:
     ______________________________________________________________________

     ![Ereignis-Bezeichner][:Wort-Bezeichner][:Parameter ...]
     ______________________________________________________________________

     !  startet die History-Ersetzung, es sei denn, dem Ausrufezeichen
        folgt ein Leerzeichen, Tabulatorzeichen, Neue-Zeile-Zeichen,
        Gleichheitszeichen = oder eine öffnende runde Klammer (.

        Mit der Variablen histchars können Sie statt ! ein anderes Zeichen
        für den Beginn eines History-Befehls definieren. Mit einem vorange-
        stellten Gegenschrägstrich heben Sie die Sonderbedeutung dieses
        Zeichens auf.

        In speziellen Fällen können History-Befehle auch mit einem Dach ^
        beginnen, siehe Kurzschreibweise.

     Ereignis-Bezeichner

     Mit einem Ereignis-Bezeichner bezeichnen Sie eine bestimmte Kommando-
     zeile (Ereignis) in der History-Liste. Folgende Ereignis-Bezeichner
     sind zulässig:

     !    bezeichnet das vorhergehende Ereignis.

          Beispiel: Der History-Befehl !! wiederholt die vorhergehende Kom-
          mandozeile.

     n    bezeichnet das Ereignis mit der Nummer n.

     -n   bezeichnet das aktuelle Ereignis minus n.

     str  bezeichnet das letzte Ereignis, das mit str beginnt.

     ?str[?]
          bezeichnet das letzte Ereignis, das str enthält.

          Das Trennzeichen ?, das auf str folgt, dürfen Sie weglassen, wenn
          unmittelbar auf str ein Neue-Zeile-Zeichen folgt.

     Fehlt der Ereignis-Bezeichner, so bezeichnet der History-Befehl

     -  entweder die zuletzt eingegebene Kommandozeile

     -  oder, falls unmittelbar vorher bereits ein History-Befehl eingege-
        ben wurde, die Kommandozeile, auf die sich dieser History-Befehl
        bezog.






Seite 10                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Der Ereignis-Bezeichner darf jedoch nur dann fehlen, wenn nach dem
     Ausrufezeichen, mit dem der History-Befehl beginnt, kein Leer-,
     Tabulator-, Neue-Zeile- oder Gleichheitszeichen und keine öffnende
     runde Klammer folgt.

     Beispiel:
             !:1 !$ !:3:s/d/dat/ sind gültige History-Befehle.

             ! ist kein gültiger History-Befehl. Wollen Sie die zuletzt
             eingegebene Kommandozeile nochmals ausführen, verwenden Sie
             den History-Befehl !!.

     Wort-Bezeichner

     Auf einen Ereignis-Bezeichner kann, getrennt durch einen Doppelpunkt,
     ein Wort-Bezeichner folgen. Der Doppelpunkt darf fehlen, wenn der
     Wort-Bezeichner mit ^, $, *, - oder % beginnt.

     Mit einem Wort-Bezeichner wählen Sie ein oder mehrere Worte in der
     Kommandozeile aus. Folgende Wort-Bezeichner sind zulässig:

     #   die ganze bisher eingegebene Kommandozeile

     0   das erste Wort (d. h. der Kommandoname)

     n   das n-te Argument

     ^   das erste Argument (entspricht 1)

     $   das letzte Argument

     %   das Wort, das beim letzten ?str-Suchlauf gefunden wurde

     n-m n-tes bis m-tes Argument einschließlich

     -m  Abkürzung für 0-m

     n*  Abkürzung für n-$

     n-  wie n*, aber ohne das letzte Argument

     *   alle Argumente oder nichts, wenn das Ereignis nur ein einziges
         Wort enthält

     Parameter

     Auf den Ereignis-Bezeichner (bzw. den Wort-Bezeichner, falls vorhan-
     den) können ein oder mehrere Parameter folgen. Die Parameter sind
     voneinander und vom Ereignis- bzw. Wort-Bezeichner durch einen Doppel-
     punkt zu trennen (Ausnahme: Parameter g).




Seite 11                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Vorsicht:
          Parameter können bei der Ersetzung von Kommandos durch ihre Aus-
          gabe nicht auf die Ausgabe angewendet werden.

          Wenn Sie Parameter im Zusammenhang mit Variablen-Ersetzung ver-
          wenden, gibt es zwei Einschränkungen: Es sind nicht alle Parame-
          ter verfügbar, und pro Ersetzung ist nur ein einziger Parameter
          erlaubt.

     Folgende Parameter sind verfügbar:

     h  (h - head) Löscht die letzte Komponente des Pfadnamens.

     t  (t - tail) Löscht alle führenden Komponenten des Pfadnamens, so daß
        nur die letzte Komponente übrigbleibt.

     r  (r - root) Löscht ein Suffix der Form .xxx im Dateinamen.

     e  Löscht den ganzen Pfadnamen außer das Suffix.

     s/l/r[/]
        (s - substitute) Ersetzt die Zeichenkette l durch r. Ist der Para-
        meter g nicht angegeben, wird die Änderung nur auf die erste zu l
        passende Zeichenkette angewandt. Paßt keine Zeichenkette, wird ein
        Fehler gemeldet.

        Als Trennzeichen können Sie statt des Schrägstrichs / auch jedes
        andere Zeichen verwenden; das Zeichen wird dadurch als Trennzeichen
        definiert, daß es unmittelbar auf s folgt. Wollen Sie das Trennzei-
        chen auch in den Zeichenketten l oder r verwenden, müssen Sie es
        mit einem Gegenschrägstrich \ entwerten.

        Ein kommerzielles Und & in der Ersetzungszeichenkette r ist ein
        Sonderzeichen: Es wird durch die Zeichenkette l ersetzt. Mit einem
        Gegenschrägstrich \ können Sie das Sonderzeichen & entwerten.

        Ist die Zeichenkette l leer, wird für l entweder die Zeichenkette l
        des letzten Kommandos s oder die Zeichenkette str des letzten Kom-
        mandos !?str genommen.

        Das Trennzeichen, das auf r folgt, dürfen Sie weglassen, wenn
        unmittelbar auf r ein Neue-Zeile-Zeichen folgt.

     &  Wiederholt die letzte Ersetzung.

     g  (g - global) Diesen Parameter geben Sie unmittelbar vor einem der
        Parameter h, t, r, e, s, & an (z. B. gr oder gs oder g&). Die Ände-
        rung wird dann auf die erste passende Zeichenkette in jedem Wort
        angewandt. (Vorsicht: Sie wird nicht auf alle passenden Zeichenket-
        ten angewandt!)




Seite 12                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     p  (p - print) Das durch die History-Ersetzung entstehende Kommando
        wird in die History-Liste gesetzt und auf den Bildschirm ausgege-
        ben, aber nicht ausgeführt.

     q  (q - quote) Die ersetzten Worte werden entwertet, so daß weitere
        Ersetzungen verhindert werden.

     x  Wie q, nur gelten Leer-, Tabulator- und Neue-Zeile-Zeichen als
        Worttrenner.

     Klammern {...}

     Mit geschweiften Klammern {...} grenzen Sie einen History-Befehl von
     nachfolgenden Zeichen, die nicht zu dem Befehl gehören, ab:

     !{...}zeichenkette

     Siehe Beispiel 6 am Ende der C-Shell-Beschreibung.

     Kurzschreibweise

     ^l^r[^]

          Dies ist die Kurzschreibweise für den History-Befehl !:s^l^r[^]
          (ersetze in der vorherigen Kommandozeile bzw. in der Kommando-
          zeile, die der letzte History-Befehl bezeichnet hat, die Zeichen-
          kette l durch die Zeichenkette r). Siehe Beispiel 7 am Ende der
          C-Shell-Beschreibung.

          Mit der Variablen histchars können Sie statt ^ ein anderes Zei-
          chen für diese Kurzschreibweise definieren.

   Alias-Namen für Kommandos

     Mit Hilfe von Alias-Namen können Sie oft benutzte Kommandofolgen abge-
     kürzt eingeben. Einen Alias-Namen definieren Sie mit dem eingebauten
     C-Shell-Kommando alias:

     alias alias-name alias-definition

     Die C-Shell trägt den Alias-Namen und die zugehörige Alias-Definition
     in eine Liste ein. Mit dem Kommando alias (ohne Argumente) können Sie
     sich die Liste ausgeben lassen. Mit unalias löschen Sie Einträge aus
     der Liste. (Siehe Beispiel 8 am Ende der C-Shell-Beschreibung.)

     Argumente können Sie in der Alias-Definition folgendermaßen angeben:

     -  Konstante Argumente geben Sie direkt an.

        Beispiel:  alias cpr cc -c prog.c

                   Der Aufruf cpr ergibt dann cc -c prog.c.


Seite 13                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     -  Für Argumente, die erst in der Kommando-Eingabezeile angegeben wer-
        den sollen, geben Sie in der Alias-Definition Platzhalter in Form
        von History-Befehlen an. Dabei müssen Sie jedem History-Befehl
        einen Gegenschrägstrich \ voranstellen, damit die Shell den Befehl
        nicht schon bei der Ausführung des alias-Kommandos, sondern erst
        bei der Auflösung des Alias-Namens ersetzt.

        Beispiel:  alias gpw grep \!^ /etc/passwd

                   Der Aufruf gpw anna ergibt dann grep anna /etc/passwd.

        Sollen solche variablen Argumente nicht innerhalb der Alias-
        Definition, sondern danach eingesetzt werden, brauchen Sie keinen
        History-Befehl anzugeben.

        Beispiel:  alias lld ls -ld

                   Der Aufruf lld dir ergibt dann ls -ld dir.

     Die Shell löst Alias-Namen in Kommandozeilen folgendermaßen auf: Nach-
     dem sie die Kommandozeile in einzelne Kommandos zerlegt hat, prüft sie
     in jedem Kommando das erste Wort. Ist dieses Wort ein gültiger Alias-
     Name, liest die Shell die zugehörige Alias-Definition. Enthält die
     Alias-Definition History-Befehle, ersetzt die Shell diese Befehle,
     wobei sie die ursprüngliche Kommandozeile mit dem Alias-Namen als
     zuletzt eingegebenes Kommando interpretiert. Enthält die Alias-Defini-
     tion keine History-Befehle, fügt die Shell die Argumentliste der
     ursprünglichen Kommandozeile an die Alias-Definition an. Siehe Bei-
     spiel 8 und 9 am Ende der C-Shell-Beschreibung.

     Alias-Einträge können Sie schachteln, d. h. eine Alias-Definition kann
     einen anderen Alias-Namen enthalten. Solche Schachtelungen werden aus-
     gewertet, bevor History-Ersetzungen ausgeführt werden. Dies ist nütz-
     lich bei Pipelines wie z. B.

     alias lm 'ls -l \!* | more'

     (Siehe Beispiel 10 am Ende der C-Shell-Beschreibung.)

     Enthält die Alias-Definition zum Alias-Namen name1 einen anderen
     Alias-Namen name2, so darf in der Definition zu name2 der Alias-Name
     name1 nicht vorkommen, da dies bei der Alias-Ersetzung eine Schleife
     ergeben würde. Die Shell entdeckt solche Schleifen und meldet einen
     Fehler.

     Eine Alias-Definition darf auch den "eigenen" Alias-Namen enthalten,
     aber nur als erstes Wort. Dies ergibt keine Schleife, da die Shell in
     diesem Fall nach der ersten Alias-Ersetzung aufhört und nicht nach
     weiteren Alias-Namen sucht (siehe Beispiel 11 am Ende der C-Shell-
     Beschreibung).




Seite 14                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

   Umlenkung der Ein-/Ausgabe

     Mit den folgenden Ausdrücken können Sie die Standardeingabe, Standard-
     ausgabe und Standardfehlerausgabe umlenken. Für Dateinamen, die auf
     diese Ausdrücke folgen, führt die Shell die Variablen-Ersetzung, die
     Ersetzung von Kommandos durch ihre Ausgabe sowie die Ersetzung von
     Mustern durch passende Dateinamen getrennt vom Rest des Kommandos
     durch. Für die Zeichenkette wort (siehe <<wort) führt sie diese Erset-
     zungen nicht durch.

     Wenn Sie die Standardausgabe und die Standardfehlerausgabe getrennt
     umlenken wollen, müssen Sie wie folgt eine Subshell aufrufen:

     (kommando > ausgabedatei) >& fehlerdatei

     <    Die Standardeingabe wird umgelenkt.

     <<wort
          Die Standardeingabe wird bis zu einer Zeile, die genau aus wort
          besteht, gelesen. Die gelesenen Zeilen werden in einer Temporär-
          datei abgelegt. Ist wort nicht mit Gegenschrägstrich oder Anfüh-
          rungszeichen entwertet, bearbeitet die Shell dann diese Zeilen:
          Sie ersetzt Variablen durch ihren Wert und Kommandos, die in
          Gegenhochkommata eingeschlossen sind, durch ihre Ausgabe.
          Anschließend erhält das Kommando, für das die Standardeingabe
          umgelenkt wurde, die Temporärdatei als Standardeingabe.

     > >! >& >&!
          Die Standardausgabe wird in eine Datei umgelenkt. Existiert die
          Datei noch nicht, wird sie angelegt. Existiert sie bereits, wird
          ihr Inhalt überschrieben; der bisherige Inhalt ist damit verlo-
          ren.

          Ist die Variable noclobber gesetzt, verhindert sie, daß existie-
          rende Dateien gelöscht werden. Die Variable verhindert außerdem
          die Umlenkung auf ein Terminal oder in den "Papierkorb"
          /dev/null, es sei denn, Sie verwenden die Ausdrücke mit Ausrufe-
          zeichen. Mit den &-Ausdrücken wird sowohl die Standardausgabe als
          auch die Standardfehlerausgabe in die Datei umgelenkt.

     >> >>! >>& >>&!
          Diese Ausdrücke wirken wie die obigen mit einfachem >, nur wird
          die Standardausgabe an die Datei angehängt. Existiert die Datei
          bereits, wird ihr Inhalt also nicht überschrieben.

          Ist die Variable noclobber gesetzt, meldet die Shell einen Feh-
          ler, wenn die Datei noch nicht existiert, es sei denn, Sie ver-
          wenden die Ausdrücke mit Ausrufezeichen. Mit den &-Ausdrücken
          wird sowohl die Standardausgabe als auch die Standardfehleraus-
          gabe an die Datei angehängt.




Seite 15                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

   Variablen-Ersetzung

     Variablen der C-Shell bestehen aus einem Namen und einem Wert.

     Der Name einer Variablen ist eine Zeichenkette, die aus Buchstaben,
     Ziffern und Unterstrich _ bestehen kann. Der Name kann bis zu 20 Zei-
     chen enthalten; das erste Zeichen muß entweder ein Buchstabe oder ein
     Unterstrich sein.

     Der Wert einer Variablen ist eine Liste von null, ein oder mehreren
     Worten, die durch Leer- oder Tabulatorzeichen voneinander getrennt
     sind. Wenn Sie bei der Variablendefinition die Wortliste in runde
     Klammern eingeschlossen haben, können Sie mit $var[index] bzw.
     ${var[index]} auf die einzelnen Listenelemente zugreifen (siehe
     Shell-Parameter und Beispiel 12 am Ende der C-Shell-Beschreibung).

     Die C-Shell unterscheidet zwischen Umgebungsvariablen und Shell-Vari-
     ablen: Umgebungsvariablen werden automatisch exportiert, d. h. aufge-
     rufenen Prozessen bekanntgemacht, Shell-Variablen nicht (siehe Umge-
     bungsvariablen und vordefinierte Shell-Variablen). Was im vorliegenden
     Abschnitt Variablen-Ersetzung gesagt wird, gilt für beide Arten von
     Variablen, sofern nicht explizit zwischen beiden unterschieden wird.

     Variablen ausgeben, definieren und löschen

     Mit dem eingebauten C-Shell-Kommando set können Sie sich bereits defi-
     nierte Variablen ausgeben lassen und neue Variablen definieren. Mit
     dem Kommando unset löschen Sie Variablen.

     Variablen, die die C-Shell benutzt

     Einige Variablen sind vordefiniert und werden von der C-Shell verwal-
     tet und benutzt. Zum Beispiel enthält die Variable argv die Argument-
     liste der Shell.

     Bei einigen Variablen, die die Shell benutzt, ist der Wert, den sie
     haben, bedeutungslos; von Bedeutung ist nur, ob sie definiert sind
     oder nicht. Eine solche Variable ist z. B. die Variable verbose: Ist
     ihr irgendein Wert zugewiesen (es kann auch ein leerer Wert sein),
     wird jedes eingegebene Kommando nach der History-Ersetzung auf den
     Bildschirm ausgegeben.

     Die vordefinierten Variablen sind in Umgebungsvariablen und vordefi-
     nierte Shell-Variablen beschrieben.

     Auf den Wert einer Variablen zugreifen

     Den Wert einer Variablen erhalten Sie, indem Sie dem Variablen-Namen
     ein Dollarzeichen $ voranstellen:

     $name



Seite 16                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Der Ausdruck $name ist ein Shell-Parameter. Die Shell ersetzt einen
     Parameter in der Kommandozeile durch den Wert, den die entsprechende
     Variable aktuell hat. Sie können auch bestimmte Worte des Variablen-
     werts auswählen oder sich andere Informationen über die Variable aus-
     geben lassen (siehe Shell-Parameter).

     Folgt auf den Namen eines Shell-Parameters ein Buchstabe, eine Ziffer
     oder ein Unterstrich _, interpretiert die Shell dieses Zeichen als
     Teil des Namens. Mit geschweiften Klammern können Sie den Shell-Para-
     meter von anderen Zeichen des Eingabewortes abgrenzen.

     Beispiel:
             Mit dem Kommando

             echo $datei

             können Sie sich den Wert der Variablen datei (z. B.
             /usr/tabellen/liste) ausgeben lassen. Mit folgendem Kommando
             hängen Sie an den Dateinamen die Endung 00 an:

             mv $datei ${datei}00

             Ohne die geschweiften Klammern würde die Shell nach einer
             Variablen datei00 suchen, die vielleicht gar nicht definiert
             ist.

     Sprechen Sie eine Variable an, die nicht definiert ist, meldet die
     Shell normalerweise einen Fehler.

     Mit numerischen Variablenwerten können Sie wie mit Zahlen rechnen.
     Führen Sie numerische Operationen aus, wird ein leerer Variablenwert
     als 0 interpretiert. Besteht der Wert einer Variablen aus mehreren
     Worten, so wird bei solchen Operationen nur das erste Wort berücksich-
     tigt, die übrigen Worte werden ignoriert.

     Entwertungszeichen und Variablen-Ersetzung

     Das Dollarzeichen $ können Sie entwerten, indem Sie ihm einen Gegen-
     schrägstrich \ voranstellen. Die Variable wird dann nicht ersetzt, es
     sei denn, der zugehörige Shell-Parameter steht innerhalb von Anfüh-
     rungszeichen "...": Innerhalb von Anführungszeichen werden Variablen
     immer ersetzt. Innerhalb von Hochkommata '...' werden Variablen nicht
     ersetzt. Das Dollarzeichen wird auch dann entwertet, wenn ihm ein
     Leer-, Tabulator- oder Neue-Zeile-Zeichen folgt.

     Ist ein Shell-Parameter in Anführungszeichen "..." eingeschlossen,
     dann wird er durch den Wert ersetzt. Enthält der Wert Sonderzeichen,
     so werden diese so behandelt, als seien sie in Anführungszeichen ein-
     geschlossen. Besteht der Wert aus mehreren Worten, erhält man eine
     Zeichenkette, die Leerzeichen enthält. Z. B. entspricht die Angabe
     "$name" der Angabe "Anna Mueller", wenn Anna Mueller der Wert der
     Variablen name ist.


Seite 17                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Anders ist es, wenn bei der History-Ersetzung der History-Parameter q
     angegeben wurde: Besteht der Variablenwert aus mehreren Worten, dann
     wird der Shell-Parameter nicht durch eine einzige Zeichenkette
     ersetzt, sondern durch eine Liste von Worten, die durch Leerzeichen
     voneinander getrennt sind und die jedes für sich entwertet sind, um
     Kommando- und Muster-Ersetzung zu verhindern.

     Zeitpunkt der Variablen-Ersetzung

     Variablen werden normalerweise durch ihren Wert ersetzt, nachdem die
     Eingabezeile analysiert, Alias-Namen aufgelöst und Ein-/Ausgabe-
     Umlenkungen bearbeitet sind. Anders verhält es sich, wenn

     -  Variablen bei Ein-/Ausgabe-Umlenkungen im Dateinamen oder bei der
        Umlenkung <<wort in den Eingabezeilen vorkommen: Hier werden die
        Variablen durch ihren Wert ersetzt, während die Umlenkung stattfin-
        det.

     -  Variablen in Kommandos vorkommen, die in Gegenhochkommata `...`
        eingeschlossen sind (siehe Kommandos durch ihre Ausgabe ersetzen).

     Erst nachdem die Variablen durch ihren Wert ersetzt sind, ersetzt die
     Shell Kommandos in Gegenhochkommata `...` durch ihre Ausgabe und
     Muster durch passende Dateinamen. In folgenden Fällen führt die Shell
     diese Ersetzungen nicht durch:

     -  wenn das Kommando bzw. das Muster innerhalb von Anführungszeichen
        "..." steht

     -  wenn die Variable noglob gesetzt ist (verhindert nur die Ersetzung
        von Mustern durch passende Dateinamen)

     -  wenn bei der History-Ersetzung für den betreffenden Text der
        History-Parameter q angegeben wurde.

     Shell-Parameter

     Ein Shell-Parameter wird durch das Dollarzeichen $ eingeleitet. Die
     Shell ersetzt einen Parameter in der Kommandozeile durch den Wert, den
     die entsprechende Variable aktuell hat.

     Im folgenden sind die Shell-Parameter beschrieben, die die C-Shell
     kennt.

     $var
     ${var}
          Diese Shell-Parameter werden durch den Wert der Variablen var
          ersetzt. Besteht der Wert aus mehreren Worten, ist das Ergebnis
          eine Liste von Worten, die durch je ein Leerzeichen voneinander
          getrennt sind.




Seite 18                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          Ist var eine Umgebungsvariable (siehe Umgebungsvariablen und vor-
          definierte Shell-Variablen), wird ihr Wert zurückgegeben;
          History-Parameter dürfen Sie auf Umgebungsvariablen nicht anwen-
          den.

     $var[index]
     ${var[index]}
          Diese Shell-Parameter wählen bestimmte Worte aus dem Variablen-
          wert aus. Der Variablenwert muß bei der Variablendefinition in
          runde Klammern eingeschlossen worden sein (siehe das eingebaute
          C-Shell-Kommando set).

          index kann entweder selbst eine Zahl, ein Zahlenbereich zahl-zahl
          oder ein Stern * sein oder nach Auswertung eine Zahl, einen Zah-
          lenbereich oder einen Stern ergeben. Die Worte des Variablenwerts
          werden, bei 1 beginnend, durchnumeriert; der Stern bezeichnet
          alle Worte. Gibt index eine Zahl an, die größer als die Anzahl
          der Worte ist, aus denen der Variablenwert besteht, meldet die
          Shell einen Fehler. Zahlenbereiche können Sie abgekürzt angeben:

          -zahl  Ist die Abkürzung für 1-zahl.

          zahl-  Ist die Abkürzung für zahl-anzahl, wobei anzahl die Anzahl
                 der Worte ist, aus denen der Variablenwert besteht.

          Liegt das zweite Argument einer Bereichsangabe im zulässigen
          Intervall 1 bis $#var oder fehlt es, dann ist es kein Fehler,
          wenn der Bereich leer ist.

     $#name
     ${#name}
          Diese Shell-Parameter liefern die Anzahl der Worte, aus denen der
          Variablenwert besteht.

     $0   Der Shell-Parameter $0 liefert den Namen der Datei, aus der die
          Kommandoeingabe gelesen wird. Ist der Name dieser Datei unbe-
          kannt, liefert $0 einen Fehler.

     $n
     ${n} Äquivalent zu $argv[n] (siehe die vordefinierte Shell-Variable
          argv); n ist eine Zahl größer gleich 1.

     $*   Äquivalent zu $argv[*] (siehe die vordefinierte Shell-Variable
          argv).

     $?var
     ${?var}
          Liefert die Zeichenkette 1, falls die Variable var gesetzt ist,
          sonst 0.

     $?0  Liefert 1, falls der Name der aktuellen Eingabedatei bekannt ist,
          sonst 0.


Seite 19                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     $$   Liefert die Prozeßnummer der Vater-Shell.

     $<   Liefert eine Zeile von der Standardeingabe, ohne daß nachfolgende
          Auswertungen durchgeführt werden. Damit können Sie von einer C-
          Shell-Prozedur aus von der Tastatur lesen.

     Auf folgende der oben angeführten Shell-Parameter können Sie bei der
     History-Ersetzung die History-Parameter e, h, q, r, t sowie gh, gt und
     gr anwenden. Bei Shell-Parametern mit geschweiften Klammern {...} müs-
     sen Sie die History-Parameter innerhalb der Klammern schreiben.

     $var bzw. ${var}
     $var[index] bzw. ${var[index]}
     $#name bzw. ${#name}
     $0
     $n bzw. ${n}
     $*

   Kommandos durch ihre Ausgabe ersetzen

     Ein Kommando, das in Gegenhochkommata `...` eingeschlossen ist, wird
     von einer Subshell ausgeführt. Die Standardausgabe des Kommandos wird
     dann in Worte zerlegt; Worttrenner sind Leer-, Tabulator- und Neue-
     Zeile-Zeichen, leere Worte werden ignoriert. Innerhalb von Anführungs-
     zeichen "..." wirkt nur das Neue-Zeile-Zeichen als Worttrenner, Leer-
     und Tabulatorzeichen bleiben erhalten.

     Der entstehende Text wird an die Stelle der Zeichenkette in Gegenhoch-
     kommata gesetzt.

     Das letzte Neue-Zeile-Zeichen wird in jedem Fall ignoriert. Damit ist
     es möglich, daß für das Kommando in Gegenhochkommata nur ein Wortteil
     eingesetzt wird, auch wenn die Standardausgabe des Kommandos eine
     vollständige Zeile geliefert hat.

     csh wendet die Ersetzung von Kommandos in Gegenhochkommata `...` durch
     ihre Ausgabe und die Ersetzung von Mustern durch passende Dateinamen
     getrennt auf die Argumente von eingebauten Kommandos an. Dabei werden
     Teilausdrücke, die nicht ausgewertet wurden, auch nicht verändert; nur
     auf ausgewertete Ausdrücke werden die Ersetzungen angewandt.

     Bei nicht-eingebauten Kommandos führt csh die Ersetzung von Datei-
     namen-Mustern im Kommandonamen getrennt von der Ersetzung von Datei-
     namen-Mustern in der Argumentliste durch. Die Ersetzung findet in
     einer Subshell statt und erst, nachdem Ein-/Ausgabe-Umlenkungen bear-
     beitet worden sind.

   Muster durch passende Dateinamen ersetzen

     Worte,

     -  die eines der Zeichen * ? [ { enthalten oder


Seite 20                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     -  die mit einer Tilde ~ beginnen,

     betrachtet die Shell als Muster. Diese Muster wertet sie folgenderma-
     ßen aus (siehe auch Beispiel 13 am Ende der C-Shell-Beschreibung):

     -  Muster, die * ? [ enthalten, ersetzt die Shell durch eine alphabe-
        tisch sortierte Liste von Dateinamen, die zu dem Muster passen. Die
        Dateinamen gehören zu existierenden Dateien. Die Shell meldet einen
        Fehler, wenn zu einem solchen Muster kein Dateiname paßt.

     -  Das Muster {...} dient als Abkürzung für eine Liste von Zeichenket-
        ten. Die Zeichenketten müssen nicht Namen von existierenden Dateien
        sein. Die Liste wird nicht sortiert.

     -  Die Muster ~ und ~benutzerkennung sind eine Abkürzung für ein
        HOME-Verzeichnis.

     Die Sonderzeichen haben folgende Bedeutung:

     *    Paßt zu null, einem oder mehreren beliebigen Zeichen.

     ?    Paßt zu einem beliebigen Zeichen.

     [s]  Paßt zu einem der Zeichen, die in der Zeichenkette s enthalten
          sind.

     [c1-c2]
          Paßt zu einem der Zeichen, die im Zeichenbereich c1-c2 gemäß der
          ASCII-Sortierreihenfolge enthalten sind.

     {s1,s2,...}
          Paßt zu einer der Zeichenketten (oder einem der Dateinamen-
          Muster) s1, s2 usw. Anders als bei den Mustern *, ?, [s] und
          [c1-c2] wird das Ergebnis der Auswertung von {s1,s2,...} nicht
          sortiert.

     ~    Dies ist eine Abkürzung für Ihr HOME-Verzeichnis, so wie es in
          der Variablen home festgelegt ist.
















Seite 21                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     ~benutzerkennung
          Dies ist eine Abkürzung für das HOME-Verzeichnis des angegebenen
          Benutzers, so wie es in der Kennwortdatei /etc/passwd festgelegt
          ist.

     Stehen die oben angegebenen Sonderzeichen innerhalb von Hochkommata
     '...' oder Anführungszeichen "..." oder ist ihnen ein Gegenschräg-
     strich \ vorangestellt, dann haben die Zeichen keine Sonderbedeutung,
     sondern stehen für sich selbst.

     Ein Pfadname mit einer Komponente, die mit einem Punkt beginnt (z. B.
     /usr/anna/.cshrc), paßt nur dann zu einem Muster, wenn der Punkt im
     Muster explizit als Punkt angegeben ist. Schrägstriche müssen im
     Muster ebenso explizit angegeben sein.

     Eine einzelne öffnende { oder schließende } geschweifte Klammer oder
     ein leeres geschweiftes Klammernpaar {} wird nicht ersetzt, sondern
     bleibt unverändert.

     Weitere Informationen zur Ersetzung von Dateinamen-Mustern finden Sie
     bei Kommandos durch ihre Ausgabe ersetzen.

   Ausdrücke und Operatoren

     Eine Reihe von eingebauten C-Shell-Kommandos verarbeiten Ausdrücke,
     deren Operatoren den Operatoren der Programmiersprache C ähnlich sind
     und denselben Vorrangregeln genügen. Solche Ausdrücke werden vor allem
     bei den Kommandos @, exit, if und while verwendet; oft dienen sie
     dazu, den Ablauf von Kommandos zu steuern (siehe Ablaufsteuerung).

     Die einzelnen Komponenten eines Ausdrucks werden durch Leer- oder
     Tabulatorzeichen getrennt. Für fehlende Werte wird 0 eingesetzt. Das
     Ergebnis eines Ausdrucks ist immer eine Zeichenkette; diese Zeichen-
     kette kann auch aus einer Dezimalzahl bestehen.

     Im folgenden sind die Operatoren beschrieben. Sie sind nach ihrem Vor-
     rang in absteigender Reihenfolge geordnet; Operatoren in derselben
     Zeile haben gleichen Vorrang.

     (...)
          Zusammenfassung zu einer Gruppe

     !    Logische Negation

     * / %
          Multiplikation, Division, Modulo-Operator (Rest bei ganzzahliger
          Division).

          Diese Operatoren sind rechts-assoziativ; dies kann zu unerwarte-
          ten Ergebnissen führen! Im Zweifelsfall sollten Sie die Ausdrücke
          klammern.



Seite 22                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     + -  Addition, Subtraktion.

          Auch diese Operatoren sind rechts-assoziativ.

     << >>
          Bitweise Verschiebung nach links bzw. rechts

     < > <= >=
          Kleiner, größer, kleiner oder gleich, größer oder gleich

     == != =~ !~
          Gleichheit (==), Ungleichheit (!=), Mustervergleich für die
          Ersetzung durch passende Dateinamen (=~ und !~). Diese Operatoren
          vergleichen ihre Argumente als Zeichenketten.

          Die Operatoren =~ und !~ bedeuten: Die Zeichenkette auf der lin-
          ken Seite paßt bzw. paßt nicht zu dem Dateinamen-Muster auf der
          rechten Seite. Diese beiden Operatoren machen in Shell-Prozeduren
          switch-Anweisungen für derartige Mustervergleiche überflüssig.

     &    Bitweises UND (AND)

     ^    Bitweises EXKLUSIV-ODER (XOR)

     |    Bitweises INKLUSIV-ODER (OR)

     &&   Logisches UND (AND)

     ||   Logisches ODER (OR)

     Die Operatoren == != =~ !~ vergleichen ihre Argumente als Zeichenket-
     ten; die übrigen Operatoren arbeiten mit Zahlen.

     Darüber hinaus gibt es die folgenden Abfragen zu Dateien:

     -r datei
          Liefert "wahr" (d. h. 1) zurück, falls Sie Leserecht für datei
          besitzen; andernfalls wird "falsch" (d. h. 0) zurückgeliefert.

     -w datei
          Wahr, wenn Sie Schreibrecht für datei besitzen.

     -x datei
          Wahr, wenn Sie Ausführrecht (bzw. bei Verzeichnissen das Recht
          zum Durchlaufen) für datei besitzen.

     -e datei
          Wahr, wenn datei existiert.

     -o datei
          Wahr, wenn Ihnen die Datei gehört.



Seite 23                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     -z datei
          Wahr, wenn datei die Länge 0 hat (d. h. leer ist).

     -f datei
          Wahr, wenn datei eine einfache Datei ist.

     -d datei
          Wahr, wenn datei ein Verzeichnis ist.

     Existiert datei nicht oder kann auf sie nicht zugegriffen werden, lie-
     fern alle diese Abfragen "falsch" zurück.

     Zusätzlich gibt es eine Abfrage zur erfolgreichen Beendigung eines
     Kommandos:

     { kommando }
          Läuft kommando erfolgreich ab, liefert der Ausdruck "wahr" (d. h.
          1) zurück; andernfalls wird "falsch" (d. h. 0) zurückgeliefert.

          Beachten Sie, daß Kommandos bei erfolgreichem Ablauf normaler-
          weise 0 als Endestatus zurückliefern und bei Auftreten von Pro-
          blemen irgendeinen anderen Wert. Wollen Sie den Status bei Been-
          digung eines Kommandos direkt abprüfen, so verwenden Sie statt
          dieses Ausdrucks lieber die Variable status.

   Ablaufsteuerung

     Die Shell enthält eine Reihe von eingebauten Kommandos, mit denen Sie
     den Ablauf von Kommandos in Shell-Prozeduren und, in eingeschränktem
     Maße, auch vom Terminal aus steuern können. Diese Kommandos veranlas-
     sen die Shell entweder, Schleifen auszuführen (z. B. foreach, while),
     oder unter bestimmten Bedingungen einen Teil der Eingabe zu übersprin-
     gen (Verzweigung, z. B. switch, if). Siehe Eingebaute C-Shell-Komman-
     dos, Ablaufanweisungen.

     Ist die Eingabe für die Shell nicht an beliebiger Stelle abrufbar und
     liest die Shell eine Schleife, wird diese Eingabe gepuffert. Die Shell
     kann bestimmte Positionen im Puffer anspringen und die Eingabe wieder-
     holt lesen, so wie es die Schleife vorsieht. Soweit es die Pufferung
     erlaubt, können auch goto-Kommandos, die rückwärts springen, erfolg-
     reich ausgeführt werden.

   Kommandoausführung

     Ist das Kommando in die C-Shell eingebaut, führt sie es direkt aus.
     Andernfalls sucht die Shell nach einer Datei, die den angegebenen
     Namen hat und Ausführrecht besitzt. Enthält der Kommandoname einen
     Schrägstrich /, interpretiert die Shell den Namen als Pfadnamen und
     sucht an der entsprechenden Stelle. Enthält der Kommandoname keinen
     Schrägstrich, durchsucht die Shell normalerweise ihre Hash-Tabelle, um
     die Datei zu finden. Die Hash-Tabelle ist eine interne Tabelle der
     Shell. Sie enthält die Pfadnamen aller ausführbaren Dateien der in der


Seite 24                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Variablen path aufgelisteten Verzeichnisse. Das aktuelle Verzeichnis
     bildet hierbei eine Ausnahme: Die dort enthaltenen Dateien stehen
     nicht in der Hash-Tabelle, sondern werden gesondert geprüft. Steht die
     Datei weder in der Hash-Tabelle noch im aktuellen Verzeichnis, gibt
     die Shell eine Meldung aus, daß die Datei nicht gefunden wurde.

     Eine interaktive C-Shell legt die Hash-Tabelle normalerweise in fol-
     genden Fällen neu an:

     -  nachdem sie die Datei .cshrc gelesen hat

     -  nachdem die Variable path neu gesetzt worden ist

     -  wenn Sie das eingebaute C-Shell-Kommando rehash aufrufen.

     Das Kommando rehash sollten Sie immer dann aufrufen, wenn sich der
     Inhalt der Verzeichnisse, die in path eingetragen sind, geändert hat
     (z. B. wenn ein neues Kommando hinzugekommen ist).

     Die Hash-Tabelle dient dazu, die Suche nach der auszuführenden Datei
     zu beschleunigen. Mit den csh-Optionen -c und -t oder mit dem einge-
     bauten C-Shell-Kommando unhash können Sie die Verwendung der Hash-
     Tabelle verhindern. In diesem Fall fragt die Shell die Variable path
     ab und sucht in allen dort angegebenen Verzeichnissen nach der auszu-
     führenden Datei.

     Spezialfall:
          Wenn das auszuführende Kommando eine Shell-Prozedur ist, der
          angegebene Name der Prozedur keinen Schrägstrich enthält und das
          Wort shell ein Alias-Name ist, dann wird das Ergebnis dieser spät
          stattfindenden Alias-Ersetzung ohne Änderungen der Kommandozeile
          vorangestellt. Das erste Wort der Alias-Definition sollte ein
          vollständiger Pfadname sein. Das System versucht, dieses erste
          Wort als Kommando auszuführen. Enthält die Alias-Definition wei-
          tere Worte, so werden diese zusammen mit dem Text der Eingabe-
          zeile als Argumente behandelt.

     Besitzt die gefundene Datei Ausführrechte, erzeugt die Shell mit
     fork(2) einen neuen Prozeß und übergibt ihn [über den Systemaufruf
     execve(2)] zusammen mit den Argumenten an den Systemkern. Der System-
     kern versucht dann, den neuen Prozeß mit dem gewünschten Programm zu
     überlagern.

     Ist die Datei eine ausführbare Binärdatei [im Format a.out, siehe
     a.out(4)], dann gelingt die Überlagerung, und der Kern beginnt, den
     neuen Prozeß auszuführen.

     Ist die Datei eine Textdatei (Shell-Prozedur) und beginnt ihre erste
     Zeile mit #!, wird das darauffolgende Wort als Pfadname einer Shell
     (oder eines anderen Kommandos) interpretiert, die die Shell-Prozedur
     ausführen soll. Weitere Worte, die in der ersten Zeile stehen, gelten
     als Optionen für diese Shell. Der Kern ruft die angegebene Shell auf


Seite 25                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     (überlagert sie) und gibt ihr den Namen der Shell-Prozedur als Argu-
     ment mit.

     Ist die Datei eine Shell-Prozedur und beginnt ihre erste Zeile nicht
     mit #!, dann kann der Systemkern die Datei nicht überlagern, d. h. der
     Systemaufruf execve(2) scheitert. In diesem Fall erzeugt csh eine neue
     Shell, und zwar

     -  eine C-Shell csh, falls die erste Zeile der Datei mit einem Num-
        mernzeichen # beginnt

     -  eine Bourne-Shell sh andernfalls;

     diese neu erzeugte Shell führt dann die Datei aus.

   Signalbehandlung

     Normalerweise ignoriert die C-Shell das Signal QUIT. Hintergrundpro-
     zesse sind immun gegen Signale, die von der Tastatur aus gegeben wer-
     den, auch gegen Hangup-Signale (HUP). Andere Signale haben die Werte,
     die die C-Shell aus ihrer Umgebung geerbt hat.

     Mit dem eingebauten C-Shell-Kommando onintr können Sie festlegen, wie
     die Shell Unterbrechungs- und Beendigungssignale innerhalb von Shell-
     Prozeduren behandelt.

     Login-Shells fangen das Signal TERM ab. Ist die Shell keine Login-
     Shell, wird dieses Signal an Sohnprozesse weitergegeben. In keinem
     Fall sind Unterbrechungen möglich, während eine Login-Shell die Datei
     .logout liest.

   Auftragssteuerung (Job Control)

     Die C-Shell ordnet jeder Kommandofolge bzw. Pipeline einen Auftrag zu,
     um Kommandos zu verfolgen, die im Hintergrund ablaufen oder mit einem
     TSTP-Signal (Terminal-Stopp-Signal, üblicherweise <CTRL-Z>) gestoppt
     wurden. Jeder Auftrag erhält eine Auftragsnummer. Wird eine Kommando-
     folge bzw. Pipeline mit Hilfe des Zeichens & im Hintergrund gestartet,
     gibt die Shell eine Zeile aus, die die Auftragsnummer in eckigen Klam-
     mern sowie die Liste der zugehörigen Prozeßnummern enthält, z. B.

     [1] 1234

     Im Beispiel hat der Auftrag die Auftragsnummer 1 erhalten, und es ist
     ihm der Top-Level-Prozeß mit der Prozeßnummer 1234 zugeordnet.

     Mit dem eingebauten C-Shell-Kommando jobs können Sie sich die momentan
     gültige Liste der Aufträge ausgeben lassen. Der Auftrag, der zuletzt
     gestoppt wurde, bzw. (falls kein Auftrag gestoppt wurde) der Auftrag,
     der zuletzt in den Hintergrund geschickt wurde, ist der aktuelle Auf-
     trag. Er ist in der Liste mit einem Pluszeichen + markiert. Der vor-
     hergehende Auftrag ist mit einem Minuszeichen - markiert; er nimmt die


Seite 26                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Stelle des aktuellen Auftrags ein, wenn dieser beendet oder in den
     Vordergrund geholt wird.

     Um einen laufenden Auftrag zu stoppen, müssen Sie ihm ein Stopp-Signal
     schicken (üblicherweise mit <CTRL-Z>). Sobald die Shell gemeldet hat,
     daß der Auftrag gestoppt ist, und das Bereitzeichen ausgegeben hat,
     können Sie den Status dieses Auftrags verändern. Hierfür stehen Ihnen
     die eingebauten C-Shell-Kommandos bg, fg, kill, stop und % zur Verfü-
     gung. Sie können den Auftrag z. B. mit bg in den Hintergrund schicken,
     dann einige andere Kommandos ablaufen lassen und anschließend den Auf-
     trag mit fg wieder in den Vordergrund holen.

     Vorsicht:
          Wenn ein Kommando nach einem Stopp wieder gestartet wird, gibt
          die Shell das Verzeichnis aus, in dem das Kommando gestartet
          wurde, falls dies nicht das aktuelle Verzeichnis ist. Die Ausgabe
          der Shell kann jedoch falsch sein, da der Auftrag die Verzeich-
          nisse geändert haben könnte.

          Eingebaute Shell-Kommandos können nicht gestoppt und wieder
          gestartet werden.

          Kommandofolgen der Form

          kommando1; kommando2; kommando3

          sind problematisch: Stoppen Sie kommando2, führt die Shell kom-
          mando3 niemals aus. Dies ist besonders dann zu beachten, wenn die
          Kommandofolge Ergebnis einer Alias-Ersetzung ist. Sie können das
          Problem vermeiden, indem Sie die Folge in runde Klammern (...)
          einschließen, so daß sie in einer Subshell ausgeführt wird.

     Beim Aufruf der Kommandos bg, fg, kill, stop und % können Sie die Auf-
     träge folgendermaßen angeben:

     % %+ %%
          Der aktuelle Auftrag.

     %-   Der letzte, vor dem aktuellen Auftrag erteilte Auftrag.

     %auftragsnummer
          Der Auftrag mit der angegebenen Auftragsnummer.

          Beispiel:
                  Das Kommando kill -9 %3 bricht den Auftrag Nummer 3 ab.

     %zeichenkette
          Der Auftrag, dessen zugehörige Kommandozeile mit der angegebenen
          Zeichenkette beginnt. Die Kommandozeile muß durch zeichenkette
          eindeutig bestimmt sein.




Seite 27                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          Beispiel:
                  Das Kommando fg %vi holt einen gestoppten vi-Auftrag in
                  den Vordergrund.

     %?zeichenkette
          Der Auftrag, dessen zugehörige Kommandozeile die angegebene Zei-
          chenkette enthält. Die Kommandozeile muß durch zeichenkette ein-
          deutig bestimmt sein.

     Aufträge, die im Hintergrund ablaufen, stoppen, sobald sie versuchen,
     vom Terminal zu lesen. Hintergrundaufträge können normalerweise Aus-
     gabe produzieren; dies können Sie jedoch verhindern, indem Sie das
     Kommando stty tostop eingeben: Die Aufträge stoppen dann, sobald sie
     versuchen, etwas auszugeben.

     Wie meldet die C-Shell Status-Änderungen von Aufträgen?

     Wenn die C-Shell interaktiv abläuft, verfolgt sie den Status jedes
     Auftrags und informiert Sie, sobald ein Auftrag beendet oder blockiert
     wird. Normalerweise gibt sie die entsprechende Meldung erst unmittel-
     bar vor einem Bereitzeichen aus; damit werden Sie bei Ihrer Eingabe
     nicht gestört. Ist die Variable notify gesetzt, gibt die Shell Meldun-
     gen über Status-Änderungen sofort aus, anstatt auf ein anstehendes
     Bereitzeichen zu warten. Dies können Sie auch mit dem eingebauten C-
     Shell-Kommando notify erreichen: Mit notify teilen Sie der Shell mit,
     daß sie Status-Änderungen von bestimmten Aufträgen sofort anzeigen
     soll (siehe Eingebaute C-Shell-Kommandos, notify).

   Eingebaute C-Shell-Kommandos

     Eingebaute C-Shell-Kommandos werden innerhalb der C-Shell ausgeführt.
     Steht ein eingebautes Kommando in einer Pipeline und dort nicht an
     letzter Stelle, wird es in einer Subshell ausgeführt.

     Die C-Shell enthält die folgenden eingebauten Kommandos:

     :    Leeres Kommando. Dieses Kommando wird interpretiert, löst aber
          keine Aktion aus.

     alias [name [def]]
          Weist dem Alias-Namen name die Definition def zu. def ist eine
          Liste von Worten, die Sonderzeichen für die History-Ersetzung
          enthalten dürfen. Diese History-Sonderzeichen müssen Sie mit vor-
          angestelltem Gegenschrägstrich entwerten. Für name dürfen Sie
          weder alias noch unalias angeben.

          def nicht angegeben:

          alias gibt den Alias-Namen name zusammen mit seiner Definition
          aus.




Seite 28                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          name[def] nicht angegeben:

          alias gibt alle Alias-Einträge aus.

          Siehe Alias-Namen für Kommandos.

     bg [auftrag ...]
          (bg - background) bg läßt die angegebenen Aufträge im Hintergrund
          laufen. Die Aufträge können Sie angeben, wie in Auftragssteuerung
          (Job Control) beschrieben.

          auftrag nicht angegeben:

          bg läßt den aktuellen Auftrag im Hintergrund laufen (siehe Auf-
          tragssteuerung).

     cd [dir]
     chdir [dir]
          dir wird zum aktuellen Verzeichnis.

          Ist dir ein relativer Pfadname, der nicht im aktuellen Verzeich-
          nis steht, sucht csh in den Verzeichnissen, die in der Variablen
          cdpath angegeben sind. Ist dir der Name einer Shell-Variablen,
          deren Wert wert mit einem Schrägstrich / beginnt, wird wert zum
          aktuellen Verzeichnis.

          dir nicht angegeben:

          Das HOME-Verzeichnis wird zum aktuellen Verzeichnis.

     dirs [-l]
          Der Verzeichnis-Stack wird ausgegeben. Die Liste ist von links
          nach rechts geordnet, wobei das oberste Verzeichnis des Stack
          (das ist das aktuelle Verzeichnis) ganz links in der Liste steht.

          -l   Die Verzeichnisse werden in voller Länge, d. h. nicht abge-
               kürzt, ausgegeben. Haben Sie ein Verzeichnis mit Tilde ~
               angegeben (siehe Muster durch passende Dateinamen ersetzen),
               wird es in der Liste vollständig ausgeschrieben.

     echo [-n] liste
          Die Worte, aus denen liste besteht, werden, jeweils durch ein
          Leerzeichen getrennt, auf die Standardausgabe der C-Shell
          geschrieben. Ist die Option -n nicht angegeben, wird die Ausgabe
          mit einem Neue-Zeile-Zeichen abgeschlossen.

          -n   Am Ende der Wortliste wird kein Neue-Zeile-Zeichen ausgege-
               ben.






Seite 29                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     eval argument ...
          Die C-Shell führt die in der Argumentliste angegebenen Kommandos
          aus. Dabei werden die Argumente zweimal von der Shell bearbeitet:

          -  das erste Mal, wenn die Shell die eval-Kommandozeile bearbei-
             tet.

          -  das zweite Mal, wenn die Shell die bearbeiteten Argumente als
             Kommando ausführt.

          Siehe das in die Bourne-Shell sh eingebaute Kommando eval.

     exec kommando
          Die aktuelle Shell beendet sich; statt dessen wird das angegebene
          Kommando ausgeführt.

     exit [(ausdruck)]
          Die Shell wird mit dem Wert von ausdruck beendet (siehe Ausdrücke
          und Operatoren).

          (ausdruck) nicht angegeben:

          Die Shell wird mit dem Wert der Variablen status beendet.

     fg [auftrag ...]
          (fg - foreground) fg holt die angegebenen Aufträge in den Vorder-
          grund. Die Aufträge können Sie angeben, wie in Auftragssteuerung
          (Job Control) beschrieben.

          auftrag nicht angegeben:

          fg holt den aktuellen Auftrag in den Vordergrund (siehe Auftrags-
          steuerung).

     glob wortliste
          Muster in wortliste werden durch passende Dateinamen ersetzt.
          Anschließend wird die Worliste ausgegeben. glob arbeitet wie
          echo, nur interpretiert glob Gegenschrägstriche \ nicht als Ent-
          wertung für Sonderzeichen. In der Ausgabe werden die Worte durch
          NULL-Zeichen voneinander getrennt.

     hashstat
          hashstat gibt eine Statistik-Zeile aus, die angibt, wie effektiv
          die interne Hash-Tabelle bei der Suche der Kommandos im Dateibaum
          gewesen ist und wie viele exec-Aufrufe dabei vermieden werden
          konnten. Bei der Kommandosuche wird für jedes in der path-Varia-
          blen angegebene Verzeichnis,

          -  für das die Hash-Funktion einen möglichen Treffer angibt oder

          -  das nicht mit einem Schrägstrich / beginnt,



Seite 30                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          versucht, ein exec auszuführen. (Siehe Kommandoausführung.)

     history [-hr] [n]
          Die History-Liste wird ausgegeben. Ist für n eine Zahl angegeben,
          werden nur die letzten n Ereignisse ausgegeben.

          -h   Die History-Liste wird ohne die führenden Ereignis-Nummern
               ausgegeben. Dies ist nützlich, um Dateien für das Kommando
               source -h zu erzeugen (siehe das eingebaute C-Shell-Kommando
               source).

          -r   Die History-Liste wird in umgekehrter Reihenfolge ausgege-
               ben, d. h. zuerst erscheint das zuletzt eingegebene Ereig-
               nis.

     jobs [-l]
          Die aktiven Aufträge unter Auftragskontrolle werden ausgegeben.

          -l   Zusätzlich werden die Prozeßnummern ausgegeben.

     kill [-signal] [pid ...] [auftrag ...]
     kill [-l]
          Das angegebene Signal bzw. das Signal TERM (Signal zur Beendi-
          gung) wird an die angegebenen Prozesse oder Aufträge gesendet.
          Ist das gesendete Signal TERM oder HUP (Hangup), wird zusätzlich
          das Signal CONT (Continue) an die Prozesse/Aufträge gesendet.

          Sie müssen mindestens einen Prozeß oder Auftrag angeben, es darf
          nicht beides fehlen.

          signal    Signalnummer oder Signalname.

          pid       Prozeßnummer.

          auftrag   Die Aufträge können Sie angeben, wie in Auftragssteue-
                    rung (Job Control) beschrieben.

          -l        Die Namen der Signale, die Sie mit kill senden können,
                    werden aufgelistet.

     limit [-h] [ressource [max]]
          Mit limit legen Sie für den aktuellen Prozeß und alle von ihm
          erzeugten Prozesse einen Grenzwert max für die angegebene Res-
          source fest.

          Fehlt max, wird der aktuelle Grenzwert für ressource ausgegeben.
          Fehlt ressource, werden alle Grenzwerte ausgegeben.

          ressource
               Für ressource können Sie angeben:




Seite 31                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

               cputime       Maximale CPU-Zeit, die jeder Prozeß verbrau-
                             chen darf

               filesize      Maximale Größe, die eine Datei haben darf

               datasize      Maximale Größe des Datenbereichs (einschließ-
                             lich Stack), die für den Prozeß erlaubt ist

               stacksize     Maximale Stackgröße für den Prozeß

               coredumpsize  Maximale Größe für eine Core-Dump-Datei

          max  Für max können Sie eine Zahl, wahlweise gefolgt von einem
               Buchstaben für die Maßeinheit angeben oder, bei cputime,
               eine Zeitangabe in Minuten und Sekunden:
               ________________________________________________________
              | ressource          |  max   |  Bedeutung von max      |
              |____________________|________|_________________________|
              | cputime            |  n     |  n Sekunden             |
              |                    | _______|_________________________|
              |                    |  nm    |  n Minuten              |
              |                    | _______|_________________________|
              |                    |  mm:ss |  mm Minuten und ss      |
              |                    |        |  Sekunden               |
              |                    | _______|_________________________|
              |                    |  nh    |  n Stunden              |
              |____________________|________|_________________________|
              | filesize, datasize,|  n     |  n Kilobyte             |
              |                    | _______|_________________________|
              | stacksize und      |  nk    |  n Kilobyte             |
              |                    | _______|_________________________|
              | coredumpsize       |  nm    |  n Megabyte             |
              |____________________|________|_________________________|

          -h   Es werden harte Grenzwerte anstelle der aktuellen Grenzwerte
               benutzt. Harte Grenzwerte legen für die aktuellen Grenzwerte
               eine Obergrenze fest. Nur der Systemverwalter darf harte
               Grenzwerte erhöhen.

     login [benutzername]
     login [-p]
          Beendet eine Login-Shell und ruft und das Kommando login auf. Die
          Datei .logout wird nicht ausgeführt. Fehlt benutzername, fordert
          login Sie auf, einen Benutzernamen einzugeben.

          -p   Die aktuelle Umgebung (Variablen) bleibt erhalten.

     logout
          Beendet eine Login-Shell.





Seite 32                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     nice [+n] [kommando]
          Der Prioritätswert für das angegebene Kommando bzw. für die Shell
          wird um n erhöht bzw. erniedrigt.

          Je höher der Prioritätswert, desto niedriger ist die Priorität
          des Prozesses und desto langsamer läuft er ab. Der Bereich für
          die Prioritätswerte geht von -20 bis 20. Liegt der angegebene
          Wert außerhalb dieses Bereichs, wird für den Prioritätswert 20
          bzw. -20 genommen.

          +n   Der Prioritätswert wird um n erhöht.

          -n   Der Prioritätswert wird um n erniedrigt. Dieses Argument
               darf nur der Systemverwalter angeben.

          ±n nicht angegeben:
               Der Prioritätswert wird auf 4 gesetzt.

          kommando
               Kommando, für das der Prioritätswert gesetzt werden soll.
               Das Kommando wird mit dem gesetzten Wert in einer Subshell
               ausgeführt.

               Für kommando gelten dieselben Einschränkungen wie für das
               Kommando der Ablaufanweisung if (ausdruck) kommando.

               kommando nicht angegeben:

               nice setzt den Prioritätswert für die aktuelle Shell.

     nohup [kommando]
          Das angegebene Kommando wird ausgeführt, wobei HUP-Signale igno-
          riert werden. kommando läuft immer in einer Subshell ab. Für kom-
          mando gelten dieselben Einschränkungen wie für das Kommando der
          Ablaufanweisung if (ausdruck) kommando. Ist kein Kommando angege-
          ben, werden HUP-Signale für den ganzen Rest der Shell-Prozedur
          ignoriert.

          Wird ein Prozeß mit & im Hintergrund gestartet, läuft er immer
          mit nohup ab.

     notify [auftrag ...]
          Die C-Shell teilt Ihnen Status-Änderungen der angegebenen Auf-
          träge sofort mit, nicht erst unmittelbar vor Ausgabe des Bereit-
          zeichens. Die Aufträge können Sie angeben, wie in Auftragssteue-
          rung (Job Control) beschrieben.








Seite 33                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          auftrag nicht angegeben:

          Die C-Shell teilt Ihnen Status-Änderungen des aktuellen Auftrags
          sofort mit. Der aktuelle Auftrag ist der Auftrag, der zuletzt
          gestoppt wurde, oder (falls kein Auftrag gestoppt wurde) der Auf-
          trag, der zuletzt in den Hintergrund geschickt wurde.

     onintr [-]
     onintr [marke]
          Die Aktionen, mit denen die Shell auf Interrupts reagiert, werden
          gesteuert.

          Kein Argument angegeben:
               onintr setzt die Standard-Aktion ein, mit der die Shell auf
               Interrupts reagiert. Die Standard-Aktion besteht darin, daß
               die Shell Shell-Prozeduren beendet und auf Kommandoeingaben
               vom Terminal wartet.

          -    Die Shell ignoriert alle Interrupts.

          marke
               Sobald die Shell einen Interrupt erhält oder sich ein Sohn-
               prozeß beendet, weil er einen Interrupt erhielt, führt die
               Shell das Kommando goto marke aus.

     popd [+n]
          popd entfernt das oberste (0-te) Element des Verzeichnis-Stacks
          und wechselt mit cd in das Verzeichnis, das nun oben auf dem
          Stack liegt.

          Die Elemente des Verzeichnis-Stacks sind, bei 0 beginnend, von
          der Spitze aus durchnumeriert.

          +n   popd entfernt das n-te Stack-Element.

     pushd [verzeichnis]
     pushd [+n]
          Legt ein Verzeichnis auf dem Verzeichnis-Stack ab.

          Kein Argument angegeben:
               Die obersten zwei Stack-Elemente werden vertauscht, und Sie
               wechseln mit cd in das Verzeichnis, das nun oben auf dem
               Stack liegt.

          verzeichnis
               Das aktuelle Verzeichnis wird auf dem Stack abgelegt, und
               Sie wechseln mit cd in verzeichnis.

          +n   Das n-te Stack-Element wird oben auf dem Stack abgelegt, und
               Sie wechseln mit cd in das betreffende Verzeichnis.




Seite 34                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     rehash
          Die interne Hash-Tabelle für die Suche nach Kommandos im Datei-
          baum wird aus der Variablen path neu erzeugt. Siehe Kommandoaus-
          führung.

     repeat n kommando
          Das angegebene Kommando wird n-mal ausgeführt.

          Für kommando gelten dieselben Einschränkungen wie für das Kom-
          mando der Ablaufanweisung if (ausdruck) kommando.

     set [var[=wert]]
     set var[n]=wort

          Kein Argument angegeben:
               set gibt die Werte aller Shell-Variablen aus. Werte, die aus
               mehreren Worten bestehen, werden als geklammerte Liste aus-
               gegeben.

          var  set var weist der Shell-Variablen var einen leeren Wert
               (Null-Wert) zu.

          var=wert
               set var=wert weist der Shell-Variablen var den Wert wert zu.
               Vor und nach dem Gleichheitszeichen dürfen Leer- oder Tabu-
               latorzeichen stehen.

               wert kann sein:

               wort        Einzelnes Wort (kann auch eine Zeichenkette in
                           Anführungszeichen "..." oder Hochkommata '...'
                           sein)

               (wortliste) Geklammerte Liste von Worten, die durch je ein
                           Leerzeichen voneinander getrennt sind. var
                           erhält damit einen Wert, der aus mehreren Worten
                           besteht.

               Enthält wert Muster für Dateinamen oder Kommandos einge-
               schlossen in Gegenhochkommata `...`, so werden diese durch
               die passenden Dateinamen bzw. die Kommandoausgabe ersetzt,
               bevor der Wert der Variablen zugewiesen wird.

          var[n]=wort
               set var[n]=wort weist einer Shell-Variablen var, deren Wert
               aus mehreren Worten besteht, wort als n-te Wert-Komponente
               zu. Die Variable var und ihre n-te Wert-Komponente müssen
               bereits existieren.






Seite 35                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

               Die eckigen Klammern müssen Sie angeben (d. h. sie bezeich-
               nen hier nicht ein optionales Syntaxelement). Vor und nach
               dem Gleichheitszeichen dürfen Leer- oder Tabulatorzeichen
               stehen.

               Wie bei set var=wert werden vor der Zuweisung Dateinamen-
               Muster und Kommandos in `...` ersetzt.

     setenv [VAR [wort]]

          Kein Argument angegeben:
               setenv gibt die Werte aller Umgebungsvariablen aus.

          VAR  setenv VAR weist der Umgebungsvariablen VAR einen leeren
               Wert (Null-Wert) zu.

               Üblicherweise werden Umgebungsvariablen mit Großbuchstaben
               geschrieben.

          VAR wort
               setenv VAR wort weist der Umgebungsvariablen VAR den Wert
               wort zu. wort ist ein einzelnes Wort (das kann auch eine
               Zeichenkette in Anführungszeichen "..." sein).

               Die am häufigsten benutzten Umgebungsvariablen USER, TERM
               und PATH erhalten ihren Wert automatisch von den C-Shell-
               Variablen user, term und path und umgekehrt; diese Variablen
               brauchen Sie also nicht mit setenv zu setzen. Darüber hinaus
               erhält die Umgebungsvariable PWD automatisch den Wert der
               C-Shell-Variablen cwd, wenn sich dieser ändert.

     shift [var]
          shift verschiebt die Komponenten des Wertes der Variablen var
          bzw. argv nach links; die erste Komponente entfällt.

          Ist die Variable var bzw. argv nicht gesetzt oder hat sie einen
          leeren Wert, wird dies als Fehler interpretiert.

     source [-h] datei
          source führt Shell-Prozeduren in der aktuellen Shell aus. Es wird
          also keine Subshell erzeugt. source liest die Kommandos in datei
          und führt sie aus. Sie dürfen mehrere source-Kommandos schach-
          teln; ist die Schachtelungstiefe jedoch zu groß, könnten nicht
          genug Dateideskriptoren zur Verfügung stehen. Tritt in einer der
          Shell-Prozeduren ein Fehler auf, werden alle geschachtelten
          source-Kommandos beendet.

          -h   Die Kommandos aus datei werden auf die History-Liste
               gesetzt, jedoch nicht ausgeführt.





Seite 36                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     stop auftrag ...
          Stoppt die angegebenen Hintergrund-Aufträge. Die Aufträge können
          Sie angeben, wie in Auftragssteuerung (Job Control) beschrieben.

     suspend
          Stoppt die aktuelle Shell, so als ob ihr mit <CTRL-Z> ein Stopp-
          Signal gesendet worden wäre. Dies wird meistens benutzt, um
          Shells zu stoppen, die mit su gestartet wurden.

     time [kommando]
          time führt das angegebene Kommando aus und gibt aus, wieviel Zeit
          das Kommando verbraucht hat.

          kommando nicht angegeben:

          time gibt aus, wieviel Zeit die aktuelle C-Shell und ihre Sohn-
          prozesse verbraucht haben.

     umask [wert]
          umask gibt die aktuell gültige Schutzbit-Maske aus bzw. ändert
          sie. Die Schutzbit-Maske legt fest, welche Zugriffsrechte die
          Dateien und Verzeichnisse erhalten, die Sie ab jetzt in der aktu-
          ellen Shell oder einer ihrer Subshells neu anlegen. Siehe das in
          die Bourne-Shell sh eingebaute Kommando umask.

          wert 3-stellige Oktalzahl, die die Schutzbit-Maske angibt. Um aus
               der Schutzbit-Maske wert die Zugriffsrechte für neu ange-
               legte Dateien zu errechnen, wird wert über XOR mit der
               Oktalzahl 666, für Verzeichnisse mit 777 verknüpft.

               Übliche Werte für die Schutzbit-Maske sind 002 oder 022.
               Dies ergibt die folgenden Zugriffsrechte:

               002   ergibt für Dateien:   rw-rw-r--
                     für Verzeichnisse:    rwxrwxr-x
               022   ergibt für Dateien:   rw-r--r--
                     für Verzeichnisse:    rwxr-xr-x

     unalias muster
          Löscht alle Alias-Einträge, deren Alias-Name zu muster paßt, aus
          der Alias-Liste. muster ist ein Wort, das Sonderzeichen zur
          Dateinamen-Ersetzung enthalten kann (siehe Muster durch passende
          Dateinamen ersetzen).

     unhash
          Verhindert, daß csh die interne Hash-Tabelle benutzt (siehe Kom-
          mandoausführung).

     unlimit [-h] [ressource]
          Hebt den Grenzwert für die angegebene Ressource auf.




Seite 37                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          ressource
               Siehe limit.

               ressource nicht angegeben:

               Der Grenzwert für alle Ressourcen wird aufgehoben.

          -h   Es werden die harten Grenzwerte aufgehoben. Dies darf nur
               der Systemverwalter.

     unset muster
          Löscht alle Shell-Variablen, die zu muster passen. muster ist ein
          Wort, das Sonderzeichen zur Dateinamen-Ersetzung enthalten kann
          (siehe Muster durch passende Dateinamen ersetzen).

          Das Kommando unset * löscht alle Shell-Variablen; dies hätte aber
          unerwünschte Seiteneffekte.

     unsetenv var
          Löscht die Umgebungsvariable var aus der Umgebung. Für var können
          Sie kein Muster wie bei unset angeben.

     wait Wartet, bis alle Hintergrundaufträge beendet sind, und gibt dann
          erst das Bereitzeichen aus. Ein Interrupt unterbricht das wait.

     %[zk][&]
          %zk holt den Auftrag, der durch %zk bestimmt ist, in den Vorder-
          grund.

          %zk& läßt den Auftrag, der durch %zk bestimmt ist, im Hintergrund
          weiterlaufen.

          zk kann sein: +, %, -, auftragsnummer, zeichenkette,
          ?zeichenkette (siehe Auftragssteuerung (Job Control)).

          zk nicht angegeben:

          Der aktuelle Auftrag wird in den Vordergrund geholt bzw. im Hin-
          tergrund fortgesetzt.

          Das Kommando %[zk] hat dieselbe Wirkung wie das Kommando fg
          %[zk].

          Das Kommando %[zk]& hat dieselbe Wirkung wie das Kommando bg
          %[zk].

     @ [var=ausdruck]
     @ [var[n]=ausdruck]

          Kein Argument angegeben:
               @ gibt die Werte aller Shell-Variablen aus.



Seite 38                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          var=ausdruck
          var[n]=ausdruck
               @ var=ausdruck weist der Shell-Variablen var den Wert zu,
               den ausdruck liefert (siehe Ausdrücke und Operatoren).

               @ var[n]=ausdruck weist einer Shell-Variablen var, deren
               Wert aus mehreren Worten besteht, den Wert von ausdruck als
               n-te Wert-Komponente zu. Die Variable var und ihre n-te
               Wert-Komponente müssen bereits existieren.

               Die eckigen Klammern müssen Sie angeben (d. h. sie bezeich-
               nen hier nicht ein optionales Syntaxelement).

               Enthält ausdruck die Zeichen <, >, & oder |, dann müssen
               diese Zeichen oder der ganze Ausdruck in runde Klammern
               (...) eingeschlossen werden.

               Wie in C können Sie die Operatoren *=, += usw. verwenden.
               Zwischen dem Variablennamen und dem Zuweisungsoperator kön-
               nen Sie ein Leerzeichen einfügen.

               Außerdem können Sie die Postfix-Operatoren ++ und -- verwen-
               den, um den Wert von var um 1 zu erhöhen bzw. zu erniedrigen.

     Ablaufanweisungen

     Ablaufanweisungen sind bei der C-Shell eingebaute Kommandos. Die C-
     Shell kennt die folgenden Ablaufanweisungen:

     break
          foreach- oder while-Schleife abbrechen

     breaksw
          switch-Anweisung abbrechen

     continue
          foreach- oder while-Schleife mit dem nächsten Schleifendurchlauf
          fortsetzen

     foreach ... end
          Liste in einer Schleife abarbeiten

     goto an markierte Stelle springen

     if   Bedingung abfragen und Kommando ausführen

     if ... then ... else if ... then ... else ... endif
          Bedingungen abfragen und zugehörige Kommandos ausführen

     switch ... case ... breaksw ... default ... breaksw ... endsw
          abfragen und verzweigen



Seite 39                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     while ... end
          Schleife mit Abbruchbedingung

     break
          break verwenden Sie innerhalb einer foreach- oder while-Schleife,
          um die Schleife abzubrechen. csh setzt die Ausführung hinter dem
          zugehörigen end fort. Stehen hinter break weitere Kommandos, so
          werden diese ausgeführt. Damit können Sie geschachtelte Schleifen
          nacheinander abbrechen, indem Sie die break-Kommandos hinterein-
          ander in dieselbe Zeile schreiben.

     breaksw
          breaksw verwenden Sie innerhalb einer switch-Anweisung, um die
          Abarbeitung der Anweisung abzubrechen. csh setzt die Ausführung
          hinter dem zugehörigen endsw fort.

     continue
          continue verwenden Sie innerhalb einer foreach- oder while-
          Schleife; csh bricht den aktuellen Schleifendurchlauf ab und
          setzt die Ausführung mit dem nächsten Schleifendurchlauf fort.

     foreach var (wortliste)
     ...
     end  Der Variablen var werden der Reihe nach die Worte in wortliste
          als Wert zugewiesen. Nach jeder Zuweisung werden die Kommandos,
          die zwischen foreach und end stehen, ausgeführt.

          Die Anweisungen foreach var (wortliste) und end müssen jeweils
          allein in einer eigenen Zeile stehen.

          Zwischen der foreach- und der end-Zeile können die Kommandos
          break und continue stehen (siehe oben).

          Liest die Shell die foreach-Anweisung von einem Terminal (d. h.
          nicht aus einer Shell-Prozedur), so gibt sie ein Fragezeichen
          aus, bevor sie die Kommandos in der foreach-Schleife ausführt.
          Auf das Fragezeichen hin können Sie Kommandos eingeben. Erst wenn
          Sie end eingeben, führt die Shell die Kommandos in der foreach-
          Schleife aus. Die Kommandos, die Sie auf das Fragezeichen hin
          eingeben, werden nicht in die History-Liste gesetzt.

     goto marke
          Enthält marke Sonderzeichen zur Dateinamen-Ersetzung oder Zei-
          chenketten in Gegenhochkommata `...`, so werden diese zuerst
          ersetzt (siehe Muster durch passende Dateinamen ersetzen und Kom-
          mandos durch ihre Ausgabe ersetzen). Anschließend geht die Shell
          in ihrer Eingabe soweit wie möglich zurück und sucht nach einer
          Zeile der Form

          marke:




Seite 40                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          (vor marke: dürfen Leer- oder Tabulatorzeichen stehen). Die Shell
          setzt die Ausführung nach dieser Zeile fort. Es ist ein Fehler,
          wenn die Zeile marke: innerhalb einer while- oder foreach-
          Schleife steht.

     if (ausdruck) kommando
          Hat ausdruck den Wert "wahr", wird kommando ausgeführt. kommando
          ist ein einfaches Kommando, d. h. keine Kommandofolge, Pipeline
          oder Kommandofolge in runden Klammern (...). Die Variablenerset-
          zung in kommando findet gleichzeitig mit der Variablenersetzung
          in ausdruck statt.

          Enthält kommando Sonderzeichen zur Ein-/Ausgabe-Umlenkung, so
          findet die Umlenkung auch dann statt, wenn ausdruck falsch ist.

     if (ausdruck1) then
     ...
     else if (ausdruck2) then
     ...
     else
     ...
     endif
          Hat ausdruck1 den Wert "wahr", werden die Kommandos bis zum
          ersten else ausgeführt. Anschließend wird die Abarbeitung nach
          endif fortgesetzt.

          Hat ausdruck1 den Wert "falsch", wird ausdruck2 ausgewertet.

          Hat ausdruck2 den Wert "wahr", werden die Kommandos zwischen else
          if und dem zweiten else ausgeführt. Anschließend wird die Abar-
          beitung nach endif fortgesetzt.

          Hat ausdruck2 den Wert "falsch", werden die Komandos zwischen dem
          zweiten else und endif ausgeführt.

          Es sind beliebig viele else if-Anweisungen erlaubt, aber nur eine
          else-Anweisung. Die endif-Anweisung ist nur einmal erforderlich,
          darf aber nicht fehlen.

          Die Anweisung if (ausdruckX) muß entweder allein in einer eigenen
          Zeile stehen (eventuell gefolgt von einem then) oder nach einem
          else. Die Schlüsselwörter else und endif müssen als erstes Wort
          in der Zeile stehen (d. h. davor dürfen nur Leer- und Tabulator-
          zeichen stehen).










Seite 41                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     switch (zeichenkette)
     case marke:
     ...
     breaksw
     ...
     default:
     ...
     breaksw
     endsw
          Enthält zeichenkette Sonderzeichen zur Dateinamen-Ersetzung oder
          Zeichenketten in Gegenhochkommata `...`, so werden diese zuerst
          ersetzt (siehe Muster durch passende Dateinamen ersetzen und Kom-
          mandos durch ihre Ausgabe ersetzen). Die case-Marken können die
          Sonderzeichen *, ? und [...] zur Dateinamen-Ersetzung enthalten.
          Variablen in den case-Marken werden ersetzt.

          Anschließend wird zeichenkette der Reihe nach mit allen case-
          Marken verglichen. Paßt zeichenkette zu einer case-Marke, führt
          die Shell die Kommandos nach dieser Marke aus. Erreicht die Shell
          eine default-Marke und hat bis dahin noch keine case-Marke
          gepaßt, führt die Shell die Kommandos nach der default-Marke aus.
          Paßt keine Marke und ist keine default-Marke vorhanden, setzt die
          Shell die Abarbeitung nach endsw fort.

          Das Kommando breaksw bricht die switch-Anweisung ab und setzt die
          Abarbeitung nach endsw fort.

          Paßt zeichenkette zu einer Marke und steht zwischen dieser Marke
          und der nächsten Marke kein breaksw, so werden auch die Kommandos
          der nächsten Marke ausgeführt usw. (genau wie in der Programmier-
          sprache C).

          Die Schlüsselwörter switch, case, default und endsw müssen
          jeweils als erstes Wort in der Zeile stehen. Die default-Marke
          sollte nach allen case-Marken stehen.

     while (ausdruck)
     ...
     end  Solange ausdruck den Wert "wahr" hat, werden die Kommandos zwi-
          schen der while-Anweisung und dem zugehörigen end ausgeführt.

          Die Anweisungen while (ausdruck) und end müssen jeweils allein in
          einer eigenen Zeile stehen.

          Zwischen der while- und der end-Zeile können die Kommandos break
          und continue stehen (siehe oben).

          Liest die Shell die while-Anweisung von einem Terminal (d. h.
          nicht aus einer Shell-Prozedur), so gibt sie ein Fragezeichen
          aus, bevor sie die Kommandos in der while-Schleife ausführt. Auf
          das Fragezeichen hin können Sie Kommandos eingeben. Erst wenn Sie
          end eingeben, führt die Shell die Kommandos in der while-Schleife


Seite 42                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          aus. Die Kommandos, die Sie auf das Fragezeichen hin eingeben,
          werden nicht in die History-Liste gesetzt.

   Umgebungsvariablen und vordefinierte Shell-Variablen

     Anders als die Standard-Shell sh unterscheidet die C-Shell zwischen
     Umgebungsvariablen und Shell-Variablen: Umgebungsvariablen werden
     automatisch an aufgerufene Prozesse exportiert, Shell-Variablen nicht.
     Beide Arten von Variablen werden bei der Variablen-Ersetzung gleich
     behandelt.

     Bei der Initialisierung setzt die C-Shell die Shell-Variablen argv,
     cwd, home, path, prompt, shell und status. Außerdem kopiert die C-
     Shell die Umgebungsvariable USER in die Shell-Variable user, TERM in
     term und HOME in home; werden diese Shell-Variablen neu gesetzt,
     kopiert die C-Shell sie in die entsprechenden Umgebungsvariablen
     zurück. Mit PATH und path verfährt die C-Shell genauso; Sie müssen
     path nur einmal in der Datei .cshrc oder .login setzen. Die Umgebungs-
     variable PWD erhält ihren Wert aus der Shell-Variablen cwd; ändert
     sich der Wert von cwd, wird auch PWD neu gesetzt.

     Mit dem Kommando set path eliminieren Sie aus dem Wert von path mehr-
     fach vorhandene Pfadnamen. Dies kann entstehen, wenn in einer Shell-
     Prozedur oder in der Datei .cshrc ein Kommando wie z. B. set
     path=(/usr/local /usr/hosts $path) vorkommt, das sicherstellt, daß die
     genannten Verzeichnisse in die Pfadnamen-Liste aufgenommen werden.

     Die folgenden Shell-Variablen haben eine feste Bedeutung:

     argv Argumentliste. Sie enthält die Liste der Kommandozeilen-Argu-
          mente, die an die aktuelle Shell übergeben werden. Die Variable
          argv legt die Werte der Stellungsparameter $1, $2 usw. fest:
          $argv entspricht $1 usw.

     cdpath
          Enthält eine Liste von Verzeichnissen. Die Kommandos cd, chdir
          und popd durchsuchen diese Verzeichnisse, wenn das Verzeichnis,
          das diese Kommandos als Argument erhalten, kein Unterverzeichnis
          des aktuellen Verzeichnisses ist.

     cwd  Enthält den vollen Pfadnamen des aktuellen Verzeichnisses.

     echo Ist diese Variable gesetzt, schreibt csh jede Kommandoeingabe auf
          die Standardausgabe, und zwar nach allen Ersetzungen, direkt vor
          der Kommandoausführung. Siehe die csh-Optionen -x und -X.

     fignore
          Liste von Dateinamen-Suffixen, die bei der Vervollständigung von
          Dateinamen ignoriert werden. Üblicherweise besteht diese Liste
          aus dem Suffix .o. (Siehe Vervollständigung von Dateinamen und
          Benutzerkennungen.)



Seite 43                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     filec
          Wenn die Variable filec gesetzt ist, kann eine interaktive C-
          Shell einen nur teilweise eingegebenen Dateinamen oder eine nur
          teilweise eingegebene Benutzerkennung vervollständigen. In diesem
          Fall haben die Zeichen ESC und EOF (<CTRL-D>) in einer Eingabe-
          zeile, die vom Terminal eingegeben wird, eine Sonderbedeutung:

          ESC  Beginnt die vor ESC stehende Zeichenkette mit einer Tilde ~,
               ergänzt die Shell diese Zeichenkette zu ~benutzerkennung,
               wobei benutzerkennung eine existierende Benutzerkennung ist.
               Kommen hierfür mehrere Kennungen in Frage, ertönt die Termi-
               nalglocke.

               Beginnt die vor ESC stehende Zeichenkette nicht mit einer
               Tilde ~, ergänzt die Shell diese Zeichenkette zu einem
               Dateinamen des aktuellen Verzeichnisses. Kommen hierfür meh-
               rere Dateinamen in Frage, ertönt die Terminalglocke.

          EOF  Die Shell listet alle Benutzerkennungen bzw. Dateinamen des
               aktuellen Verzeichnisses auf, die mit der vor EOF stehenden
               Zeichenkette beginnen. Anschließend gibt die Shell die
               unvollständige Kommandozeile erneut aus, damit Sie eine der
               aufgelisteten Kennungen bzw. einen der aufgelisteten Datei-
               namen eingeben können.

          (Siehe Vervollständigung von Dateinamen und Benutzerkennungen.)

     hardpaths
          Ist diese Variable gesetzt, werden die Pfadnamen im Verzeichnis-
          Stack so aufgelöst, daß sie keine symbolischen Verweise enthal-
          ten. Diese Variable ist besonders nützlich, da die C-Shell Pro-
          bleme mit symbolischen Verweisen haben kann.

     histchars
          Enthält eine Zeichenkette aus zwei Zeichen. Das erste Zeichen ist
          das Zeichen, mit dem ein History-Befehl beginnt (normalerweise
          das Ausrufezeichen). Das zweite Zeichen ist das Sonderzeichen,
          das für den History-Befehl ^l^r[^] verwendet wird (normalerweise
          das Dach ^, siehe History-Ersetzung, Kurzschreibweise).

     history
          Anzahl der Zeilen, die in der History-Liste gespeichert werden.
          Diese Zahl darf beliebig groß sein; sie wird nur durch den Spei-
          cherplatz begrenzt, den die C-Shell zur Verfügung stellen kann.

          Ist die Variable nicht gesetzt, wird nur das zuletzt eingegebene
          Kommando gespeichert.

     home Enthält das HOME-Verzeichnis.





Seite 44                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          Ist in einer Kommando-Eingabezeile ein HOME-Verzeichnis mit Hilfe
          einer Tilde ~ angegeben, fragt die Shell die Variable home ab, um
          das richtige Verzeichnis zu ermitteln (siehe Muster durch pas-
          sende Dateinamen ersetzen).

     ignoreeof
          Ist diese Variable gesetzt, ignoriert die Shell EOF-Zeichen, die
          vom Terminal eingegeben werden. Damit können Sie verhindern, daß
          die Shell durch irrtümliche Eingabe von <CTRL-D> beendet wird.

     mail Liste der Dateien, die die C-Shell bzgl. des Empfangs von mail-
          Nachrichten überprüft. Ist das erste Wort des Wertes von mail
          eine Zahl n, überprüft die Shell die in der Liste angegebenen
          Dateien alle n Sekunden. Ist keine Zahl angegeben, überprüft die
          Shell die mail-Dateien alle 5 Minuten.

     nobeep
          Ist diese Variable gesetzt, so läutet die Terminalglocke nicht,
          wenn zu einer unvollständigen Eingabe mehrere Datei- bzw. Benut-
          zernamen passen (siehe Vervollständigung von Dateinamen und
          Benutzerkennungen).

     noclobber
          Ist diese Variable gesetzt, ist nur eine eingeschränkte Ausgabe-
          Umlenkung möglich: Mit > kann die Ausgabe nur in neue, noch nicht
          existierende Dateien umgelenkt werden; mit >> kann die Ausgabe
          nur in bereits existierende Dateien umgelenkt werden. Siehe
          Umlenkung der Ein-/Ausgabe.

     noglob
          Verhindert die Ersetzung von Mustern durch passende Dateinamen.
          Dies ist in Shell-Prozeduren nützlich, wenn die gewünschten
          Dateinamen bereits zu Verfügung stehen und keine weiteren Erset-
          zungen stattfinden sollen.

     nonomatch
          Paßt zu einem Dateinamen-Muster kein Dateiname, interpretiert die
          Shell dies nicht als Fehler, sondern gibt das eingegebene Muster
          aus. Muster mit falscher Syntax bewirken weiterhin einen Fehler.

     notify
          Ist diese Variable gesetzt, teilt Ihnen die Shell Status-Änderun-
          gen von Aufträgen sofort mit, nicht erst unmittelbar vor Ausgabe
          des Bereitzeichens (siehe Auftragssteuerung).

     path Liste der Verzeichnisse, die bei der Ausführung eines Kommandos
          nach der zugehörigen Datei durchsucht werden (siehe Kommandoaus-
          führung). Ist der Wert von path die leere Zeichenkette, wird nur
          das aktuelle Verzeichnis durchsucht. Üblicherweise hat path den
          Wert: (. /usr/ucb /usr/bin).




Seite 45                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          Ist path nicht gesetzt, führt die Shell nur Kommandos mit absolu-
          tem Pfadnamen aus.

          path wird mit dem Wert der Umgebungsvariablen PATH initialisiert;
          ändert path seinen Wert, so kopiert die Shell diesen Wert in die
          Umgebungsvariable PATH zurück.

          Eine interaktive C-Shell setzt die in path enthaltenen Verzeich-
          nisse normalerweise in folgenden Fällen in die Hash-Tabelle:

          -  nachdem sie die Datei .cshrc gelesen hat

          -  nachdem die Variable path neu gesetzt worden ist

          -  wenn Sie das eingebaute C-Shell-Kommando rehash aufrufen.

          Das Kommando rehash sollten Sie immer dann aufrufen, wenn sich
          der Inhalt der Verzeichnisse, die in path eingetragen sind, geän-
          dert hat (z. B. wenn ein neues Kommando hinzugekommen ist). Siehe
          Kommandoausführung.

     prompt
          Bereitzeichenkette, mit der eine interaktive C-Shell zur Eingabe
          auffordert.

          Ein Ausrufezeichen ! im Wert von prompt wird bei der Ausgabe der
          Bereitzeichenkette durch die aktuelle Ereignisnummer ersetzt
          (siehe History-Ersetzung). Beachten Sie, daß Sie beim entspre-
          chenden set-Aufruf das Ausrufezeichen mit einem vorangestellten
          Gegenschrägstrich \ entwerten müssen, damit die Shell keine
          History-Ersetzung durchführt (siehe BEISPIELE, History-Erset-
          zung).

          Als Standard-Bereitzeichenkette gibt eine interaktive Shell
          rechnername%  (für normale Benutzer) bzw. rechnername#  (für den
          Systemverwalter) aus.

          Nicht-interaktive C-Shells setzen die Variable prompt nicht. Wol-
          len Sie Alias-Namen und andere Kommandos, die nur interaktiv
          sinnvoll sind, in die Datei .cshrc schreiben, können Sie vorher
          die folgende if-Anweisung einfügen, um die Start-Zeit für nicht-
          interaktive C-Shells zu verkürzen:

          if ($?prompt == 0) exit

          (Ist die Variable prompt nicht gesetzt, d. h. ist die Shell
          nicht-interaktiv, wird exit ausgeführt.)

     savehist
          Anzahl der Zeilen der History-Liste, die in der Datei ~/.history
          gespeichert werden, wenn Sie sich ausloggen.



Seite 46                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

          Große Werte von savehist verlängern die Start-Zeit der C-Shell.

     shell
          Datei, die das C-Shell-Programm enthält.

          Diese Variable wird benutzt, wenn mit fork(2) eine Shell erzeugt
          werden soll, um eine Datei zu interpretieren, die Ausführrecht
          (x-Bits) besitzt, aber die das System nicht ausführen kann. Siehe
          Kommandoausführung.

     status
          Endestatus des zuletzt ausgeführten Kommandos. Wurde das Kommando
          nicht ordnungsgemäß beendet, wird zum Wert von status 0200
          addiert. Eingebaute Kommandos liefern den Endestatus 1 bei Mißer-
          folg und 0 sonst.

     time Ist diese Variable gesetzt, gibt die Shell nach Beendigung jedes
          Kommandos eine Übersicht über die Ressourcen aus, die das Kom-
          mando verbraucht hat.

          Der Wert von time kann leer sein oder aus einer oder zwei Kompo-
          nenten bestehen.

          -  Ist der Wert leer, hat die Übersicht die Form

             %U %S %E %P %X %D %I %O %F %W (siehe unten).

          -  Für die erste Wert-Komponente können Sie eine Zahl n angeben;
             die Shell gibt dann die Übersicht nur für solche Kommandos
             aus, die mindestens n Sekunden CPU-Zeit verbraucht haben.

          -  Die zweite Wert-Komponente ist eine Zeichenkette, die das Aus-
             gabeformat der Übersicht festlegt [siehe die Formatzeichen-
             kette bei printf(3S)]. Die Zeichenkette kann sowohl normale
             Zeichen als auch Feldbezeichner enthalten. Normale Zeichen
             werden unverändert ausgegeben. Feldbezeichner sind von der
             Form %buchstabe. Sie werden bei der Ausgabe durch ihren Wert
             ersetzt. Folgende Feldbezeichner können Sie angeben:

             %D   Getrennt benutzter Datenbereich (unshared data space) in
                  Kilobyte, der durchschnittlich belegt wurde

             %E   Zeit, die während der Ausführung vergangen ist (real
                  time)

             %F   Seitenfehler

             %I   Anzahl der Blockleseoperationen von der Platte

             %K   Getrennt benutzter Stackbereich (unshared stack space) in
                  Kilobyte, der durchschnittlich belegt wurde



Seite 47                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

             %M   Gesamtgröße des physischen Speichers (real memory), der
                  während der Ausführung des Prozesses belegt wurde

             %O   Anzahl der Blockschreibeoperationen von der Platte

             %P   Gesamte verbrauchte CPU-Zeit (%U plus %S) in Prozent der
                  %E-Zeit

             %S   CPU-Zeit in Sekunden, die der Systemkern für den Benut-
                  zerprozeß verbraucht hat (Zeit, die im Systemmodus ver-
                  bracht wurde)

             %U   CPU-Zeit in Sekunden, die der Benutzerprozeß selbst ver-
                  braucht hat (Zeit, die im Benutzermodus verbracht wurde)

             %W   Anzahl der Auslager-Operationen (swaps)

             %X   Gemeinsam genutzter Speicher (shared memory) in Kilobyte,
                  der durchschnittlich belegt wurde

     verbose
          Ist diese Variable gesetzt, gibt die Shell jedes eingegebene Kom-
          mando aus, nachdem die History-Ersetzung stattgefunden hat. Siehe
          die csh-Optionen -v und -V.

   C-Shell-Prozeduren

     Wie die Bourne-Shell sh bietet auch die C-Shell csh die wesentlichen
     Elemente einer Programmiersprache. Ein solches Programm heißt C-
     Shell-Prozedur.

     Eine C-Shell-Prozedur besteht aus einer oder mehreren Kommandozeilen.
     Insbesondere stehen Ihnen eine Reihe von eingebauten Kommandos zur
     Verfügung, mit denen Sie den Ablauf von Kommandos in der Shell-
     Prozedur steuern können. Diese Kommandos veranlassen die Shell entwe-
     der, Schleifen auszuführen, oder unter bestimmten Bedingungen einen
     Teil der Eingabe zu überspringen (siehe Eingebaute C-Shell-Kommandos,
     Ablaufanweisungen).

     Üblicherweise schreiben Sie die Shell-Prozedur in eine Datei. Die
     Datei muß Lese- und Ausführrecht besitzen. Shell-Prozeduren müssen
     nicht übersetzt werden. Sie starten eine C-Shell-Prozedur normaler-
     weise mit dem Kommando csh datei. Daraufhin erzeugt die Shell eine
     Subshell, die jede Zeile in datei liest, interpretiert und ausführt.
     Sind alle Kommandozeilen ausgeführt, beendet sich die Subshell, und
     die übergeordnete Shell meldet sich zurück.

     C-Shell-Prozeduren können Sie auch mit dem eingebauten C-Shell-
     Kommando source starten; im letzteren Fall wird die Prozedur in der
     aktuellen Shell ausgeführt, es wird also keine Subshell erzeugt.




Seite 48                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Das Nummernzeichen # leitet einen Kommentar ein; der Kommentar endet
     mit der Eingabezeile. Bei der Abarbeitung der Prozedur ignoriert die
     Shell alle Zeichen, die zum Kommentar gehören.

     Beginnt die erste Zeile einer Shell-Prozedur mit #!, wird das darauf-
     folgende Wort als Pfadname einer Shell (oder eines anderen Kommandos)
     interpretiert, die die Shell-Prozedur ausführen soll. Weitere Worte,
     die in der ersten Zeile stehen, gelten als Optionen für diese Shell.
     Der Kern ruft die angegebene Shell auf (überlagert sie) und gibt ihr
     den Namen der Shell-Prozedur als Argument mit.

     Beginnt die erste Zeile der Prozedur nicht mit #!, erzeugt csh eine
     neue Shell, und zwar

     -  eine C-Shell csh, falls die erste Zeile der Prozedur mit einem Num-
        mernzeichen # beginnt

     -  eine Bourne-Shell sh andernfalls;

     diese neu erzeugte Shell führt dann die Prozedur aus.

GRENZWERTE
     Für die C-Shell gelten die folgenden Beschränkungen:

     -  Worte können höchstens 1024 Zeichen lang sein.

     -  Argumentlisten dürfen höchstens 1 048 576 Zeichen lang sein.

     -  Kommandos, bei denen Muster durch passende Dateinamen ersetzt wer-
        den sollen, dürfen höchstens 1706 Argumente haben.

     -  Werden Kommandos in Gegenhochkommata `...` durch ihre Ausgabe
        ersetzt, darf die entstehende Argumentliste höchstens 1 048 576
        Zeichen lang sein (siehe oben).

     -  Die Shell führt pro Zeile höchstens 20 Alias-Ersetzungen durch, um
        etwaige Schleifen entdecken zu können.

FEHLERMELDUNGEN
     You have stopped jobs.

     Sie wollten die C-Shell beenden, hatten jedoch gestoppte Aufträge
     unter Auftragskontrolle. Ein erneuter Versuch, die Shell zu beenden,
     wird erfolgreich sein, die gestoppten Aufträge werden beendet.

DATEIEN
     ~/.cshrc
          Datei, die die C-Shell beim Start ausführt.

     ~/.login
          Datei, die eine Login-C-Shell beim Start nach der Datei .cshrc
          ausführt.


Seite 49                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     ~/.logout
          Datei, die eine Login-C-Shell beim Logout ausführt.

     ~/.history
          Datei, in der beim Logout die History-Liste gespeichert wird, so
          daß die Liste beim nächsten Login wieder zur Verfügung steht.

     /usr/bin/sh
          Standard-Shell. sh ist eine Bourne-Shell. Shell-Prozeduren, die
          nicht mit einem Nummernzeichen # beginnen, werden von sh ausge-
          führt.

     /tmp/sh*
          Temporärdatei für << (siehe Umlenkung der Ein-/Ausgabe).

     /etc/passwd
          Kennwortdatei. Sie enthält u. a. die HOME-Verzeichnisse, die die
          C-Shell bei der Auswertung des Musters ~benutzerkennung benötigt
          (siehe Muster durch passende Dateinamen ersetzen).

BEISPIELE
     Der Kürze halber wird in den Beispielen, wo nichts anderes erwähnt
     ist, das Bereitzeichen %  (statt des Standard-Bereitzeichens
     rechnername% ) verwendet.

   Vervollständigung von Dateinamen und Benutzerkennungen

     Für Beispiel 1 und 2 wird vorausgesetzt, daß die Variable filec
     gesetzt ist.

     Beispiel 1

     Dateinamen

     Das aktuelle Verzeichnis enthalte die Dateien chaosnet, class, cmd,
     liste.alt und liste.neu.

     Wenn Sie eingeben:

     % vi ch <ESCAPE>

     dann vervollständigt die Shell diese Eingabezeile zu

     vi chaosnet

     Geben Sie dagegen ein:

     % vi l <ESCAPE>

     dann läutet die Shell die Terminalglocke, da mehrere Dateinamen passen
     (liste.alt und liste.neu).



Seite 50                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Wenn Sie statt des Zeichens <ESCAPE> das EOF-Zeichen eingeben, listet
     die Shell alle passenden Dateinamen auf:

     % vi l <CTRL-D>
     liste.alt liste.neu
     % vi l

     Beispiel 2

     Benutzerkennungen

     Die Eingabezeile

     % cd ~ro <ESCAPE>

     wird vervollständigt zu

     cd ~root

     falls ro eine eindeutige Abkürzung ist. Damit wechseln Sie in das
     HOME-Verzeichnis von root.

   History-Ersetzung

     Für die Beispiele dieses Abschnitts wird vorausgesetzt, daß das
     Bereitzeichen für die C-Shell folgendermaßen definiert ist:

     set prompt="\!%"

     Die C-Shell gibt dann als Bereitzeichen die aktuelle Ereignisnummer,
     gefolgt von Prozent- und Leerzeichen aus (siehe die Shell-Variable
     prompt). Außerdem muß die Variable history auf einen genügend großen
     Wert (z. B. 10) gesetzt sein.

     Beispiel 3

     Ereignis-Bezeichner

     Mit der nachstehenden Kommandofolge erzeugen Sie zuerst mit dem Editor
     vi die C-Quelldatei prog.c und übersetzen sie anschließend mit dem C-
     Compiler cc. Da Sie im Programm einen Schreibfehler gemacht haben, mel-
     det cc einen Syntaxfehler. Sie editieren daraufhin die Datei erneut,
     korrigieren den Fehler und übersetzen das Programm wieder mit cc.

     1% vi prog.c
       ...
     2% cc -O prog.c -o form
       ...
     3% vi prog.c
       ...
     4% cc -O prog.c -o form
     5%


Seite 51                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Mit Hilfe der History-Ersetzung können Sie sich die zweimalige Eingabe
     desselben Kommandos ersparen:

     1% vi prog.c
       ...
     2% cc -O prog.c -o form
       ...
     3% !v       oder       3% !vi
     vi prog.c
       ...
     4% !c       oder       4% !cc        oder       4% !?form
     cc -O prog.c -o form
     5%

     Im Ereignis 3 wurde der History-Befehl !v bzw. !vi eingegeben. Dabei
     ist v bzw. vi der Ereignis-Bezeichner; er bezeichnet das zuletzt ein-
     gegebene Kommando, das mit v (vi) beginnt - das ist das Kommando vi
     prog.c. Die C-Shell schreibt die bezeichnete Kommandozeile auf den
     Bildschirm und führt sie anschließend aus.

     Entsprechend wird durch den History-Befehl !c bzw. !cc (Ereignis 4)
     das Kommando cc -O prog.c -o prog ausgeführt. Dasselbe leistet hier
     der History-Befehl !?form: Er bezeichnet das zuletzt eingegebene Kom-
     mando, das (an beliebiger Stelle) die Zeichenkette form enthält.

     Statt mit Zeichenketten können Sie die Kommandos auch mit Ereignisnum-
     mern ansprechen. Wissen Sie nicht, welche Nummer dem gewünschten Kom-
     mando in der History-Liste zugeordnet ist, können Sie sich die Liste
     mit dem eingebauten C-Shell-Kommando history ausgeben lassen. Die
     Ereignisnummern können Sie entweder absolut oder relativ zum aktuellen
     Ereignis angeben:

     1% vi prog.c
       ...
     2% cc -O prog.c -o form
       ...
     3% history
        1 vi prog.c
        2 cc -O prog.c -o form
        3 history
     4% !1       oder       4% !-3
     vi prog.c
       ...
     5% !2       oder       5% !-3
     cc -O prog.c -o form
     6%








Seite 52                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Beispiel 4

     Wort-Bezeichner
     _____________________________________________________________________
    | Zuletzt eingegebenes  |  Eingabezeile mit|  Eingabezeile nach der  |
    | Kommando              |  History-Befehlen|  History-Ersetzung      |
    |_______________________|__________________|_________________________|
    | grep ^anna /etc/passwd|  grep !*         |  grep ^anna /etc/passwd |
    |                       | _________________|_________________________|
    |                       |  grep !:1 datei  |  grep ^anna datei       |
    |                       |  grep !^ datei   |                         |
    |                       | _________________|_________________________|
    |                       |  grep ^berta !:2 |  grep ^berta /etc/passwd|
    |                       |  grep ^berta !$  |                         |
    |_______________________|__________________|_________________________|

     Beispiel 5

     Parameter
     _______________________________________________________________________
    | Zuletzt eingegebenes |  Eingabezeile mit     |  Eingabezeile nach der|
    | Kommando             |  History-Befehlen     |  History-Ersetzung    |
    |______________________|_______________________|_______________________|
    | ls -l /home/anna/plan|  ls -ld !$:h          |  ls -ld /home/anna    |
    |                      |  ls -ld !$:t          |  ls -ld plan          |
    |______________________|_______________________|_______________________|
    | vi prog.c            |  cc !$ -o !$:r        |  cc prog.c -o prog    |
    |                      |  cc !$ -o !$:s/.c/    |                       |
    |______________________|_______________________|_______________________|
    | cc prog.c -o prog    |  !:gs/prog/liste      |  cc liste.c -o liste  |
    |                      |  !:s/prog/liste       |  cc liste.c -o prog   |
    |______________________|_______________________|_______________________|
    | cat d1 d2 d3         |  cat !:1:s/d/dat/!:3:&|  cat dat1 dat3        |
    |______________________|_______________________|_______________________|

     Bei komplizierten History-Befehlen sollten Sie zuerst mit dem Parame-
     ter p prüfen, ob die History-Ersetzung die gewünschte Kommandozeile
     liefert, und erst dann das Kommando ausführen. Das würde im obigen
     Beispiel so aussehen:

     1% cat d1 d2 d3
       ...
     2% cat !:1:s/d/dat/ !:3:&:p
     cat dat1 dat3
     3% !!
     cat dat1 dat3
       ...
     4%






Seite 53                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     Beispiel 6

     Klammern
     ___________________________________________________________________
    | Zuletzt eingegebenes|  Eingabezeile mit   | Eingabezeile nach der|
    | Kommando            |  History-Befehlen   | History-Ersetzung    |
    |_____________________|_____________________|______________________|
    | ls -ld ~paul        |  !ls                | das letzte Kommando, |
    |                     |                     | das mit la beginnt   |
    |                     | ____________________|______________________|
    |                     |  !{l}a              | ls -ld ~paula        |
    |                     |  !!a                |                      |
    |                     |  !{!}a              |                      |
    |_____________________|_____________________|______________________|

     Beispiel 7

     Kurzschreibweise
     ______________________________________________________________________
    | Zuletzt eingegebenes   |  Eingabezeile mit|  Eingabezeile nach der  |
    | Kommando               |  History-Befehlen|  History-Ersetzung      |
    |________________________|__________________|_________________________|
    | grep ^berta /etc/passwd|  ^tr^rt          |  grep ^berta /etc/passwd|
    |                        |  !:s^tr^rt       |                         |
    |                        |  !:s/tr/rt       |                         |
    |________________________|__________________|_________________________|

   Alias-Namen

     Beispiel 8

     Einfaches Beispiel

     % alias lld ls -ld
     % alias
       ...
     lld     (ls -ld)
       ...

     Wenn Sie eingeben:

     % lld /usr

     dann liest die Shell die zum Alias-Namen lld gehörige Alias-Definition
     ls -ld und fügt das Argument /usr an. Damit ergibt sich das Kommando

     ls -ld /usr

     Mit dem Kommando

     % unalias lld



Seite 54                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     löschen Sie den Alias-Eintrag lld ls -ld aus der Alias-Liste. Mit

     % unalias *

     löschen Sie die gesamte Alias-Liste.

     Beispiel 9

     History-Befehle in Alias-Definitionen

     % alias gpw grep \!^ /etc/passwd

     Wegen des Gegenschrägstrichs wertet die Shell den History-Befehl bei
     der Ausführung des alias-Kommandos noch nicht aus:

     % alias
     gpw    (grep !^ /etc/passwd)

     Wenn Sie nun eingeben:

     % gpw anna

     dann liest die Shell die zum Alias-Namen gpw gehörige Alias-Definition
     grep !^ /etc/passwd und ersetzt den History-Befehl !^. Bei dieser
     History-Ersetzung interpretiert die Shell das Kommando gpw anna als
     letztes Ereignis, d. h. so, als ob Sie nacheinander die Kommandos

     gpw anna
     grep !^ /etc/passwd

     eingegeben hätten; der History-Befehl !^ bezeichnet also das Argument
     anna, und das entstehende Kommando lautet:

     grep anna /etc/passwd

     Hierzu noch zwei komplexere Beispiele:

     % alias vcc 'vi \!^; cc \!^ -o \!^:r'
     % alias
     vcc      vi !^; cc !^ -o !^:r

     Der Aufruf

     % vcc prog.c

     ergibt die Kommandofolge

     vi prog.c; cc prog.c -o prog

     Beim alias-Aufruf müssen Sie die Alias-Definition in Hochkommata '...'
     einschließen, da die Shell sonst den Strichpunkt als Abschluß des Kom-
     mandos alias interpretiert statt als Bestandteil der Alias-Definition.


Seite 55                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     % alias lm 'ls -l \!* | more'

     Der Aufruf

     % lm dir1 dir2

     ergibt die Pipeline

     ls -l dir1 dir2 | more

     Beispiel 10

     Geschachtelte Alias-Definition

     % alias clm 'cd \!^; lm'
     % alias lm 'ls -l | more'

     Der Aufruf

     % clm dir

     ergibt die Kommandofolge

     cd dir; ls -l | more

     Beispiel 11

     Alias-Definition, die den zugehörigen Alias-Namen enthält

     % alias ls ls -l

     Der Aufruf

     % ls dir

     ergibt das Kommando

     ls -l dir

   Variablen-Ersetzung

     Beispiel 12

     Das folgende Beispiel zeigt, daß C-Shell-Variablen als Felder (arrays)
     wie in C betrachtet werden können. Sie können sie mit einer Wortliste
     initialisieren, die einzelnen Elemente mit Index ansprechen und ihnen
     Werte zuweisen.

     % set farbe=(rot gelb gruen)
     % echo $farbe
     rot gelb gruen
     % echo $#farbe


Seite 56                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     3
     % echo $farbe[3] $farbe[1] $farbe[2-3]
     gruen rot gelb gruen
     % set farbe[2]=blau
     % echo $farbe
     rot blau gruen

     Zunächst wird der Shell-Variablen farbe die Wortliste rot gelb gruen
     als Wert zugewiesen. Das zweite Kommando gibt den Wert von farbe aus.
     echo $#farbe liefert die Anzahl der Worte, aus denen der Wert von
     farbe besteht. Die drei letzten Kommandos zeigen, wie Sie einzelne
     Wert-Komponenten ansprechen und verändern können.

   Muster durch passende Dateinamen ersetzen

     Beispiel 13

     Das aktuelle Verzeichnis enthalte die Dateien liste, plan, plan1,
     plan2, plan3, planung. Das Unterverzeichnis prog enthalte die Dateien
     ls.c, newls.c, oldls.c und pgm.c.
     ______________________________________________________________
    | Muster                | wird ersetzt durch                  |
    |_______________________|_____________________________________|
    | plan*                 | plan plan1 plan2 plan3 planung      |
    |_______________________|_____________________________________|
    | plan?                 | plan1 plan2 plan3                   |
    |_______________________|_____________________________________|
    | plan[12]              | plan1 plan2                         |
    |_______________________|_____________________________________|
    | plan[1-3]             | plan1 plan2 plan3                   |
    |_______________________|_____________________________________|
    | prog/*ls*             | prog/ls.c prog/newls.c prog/oldls.c |
    |_______________________|_____________________________________|
    | prog/{oldls,ls,main}.c| prog/oldls.c prog/ls.c prog/main.c  |
    |_______________________|_____________________________________|
    | ./{plan?,liste}       | ./plan1 ./plan2 ./plan3 ./liste     |
    |_______________________|_____________________________________|

     Beachten Sie in obiger Tabelle die Reihenfolge: Bei der Auswertung der
     geschweiften Klammern {...} werden die Zeichenketten nicht sortiert;
     bei der Auswertung der anderen Sonderzeichen werden die passenden
     Dateinamen alphabetisch sortiert.

     Die vorletzte Zeile der Tabelle macht zudem deutlich, daß die Shell
     die geschweiften Klammern direkt auswertet, ohne die entstehenden Zei-
     chenketten mit den Namen der existierenden Dateien zu vergleichen; so
     enthält die Liste, durch die das Muster ersetzt wird, auch den Pfadna-
     men prog/main.c, obwohl eine solche Datei gar nicht existiert.

     Wenn Ihr HOME-Verzeichnis /home/anna ist und das HOME-Verzeichnis des
     Benutzers Kurt /home/kurt, dann werden die Muster ~ bzw. ~kurt folgen-
     dermaßen ausgewertet:


Seite 57                     Reliant UNIX 5.44               Gedruckt 11/98

csh(1)                                                               csh(1)

     _________________________________________________________________
    | Muster             | wird ersetzt durch                        |
    |____________________|___________________________________________|
    | ~/version5/prog    | /home/anna/version5/prog                  |
    |____________________|___________________________________________|
    | ~kurt/prog         | /home/kurt/prog                           |
    |____________________|___________________________________________|
    | ~kurt/prog/*.c     | /home/kurt/prog/cls.c /home/kurt/prog/ls.c|
    |____________________|___________________________________________|

SIEHE AUCH
     login(1), sh(1), access(2), exec(2), fork(2), pipe(2), a.out(4),
     terminfo(4), ascii(5), environ(5).









































Seite 58                     Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026