Lexikalische Analyse der C-Shell Kommandozeile
CIP Index Up Down Left Right

Lexikalische Analyse der C-Shell Kommandozeile

Das Grundprinzip einer Shell ist ganz einfach: Zuerst gibt sie einen Prompt (Eingabeaufforderung) auf das Terminal aus. Dann kann der Benutzer eine Zeile Zeichen über die Tastatur eingeben, die er mit der RETURN-Taste abschließt. Für die Kommandoeingabe bietet die tcsh eine Menge an Benutzungshilfen, damit man nicht so viel tippen muß.

Die Shell zerlegt sich die Zeile in "Worte", die durch Leerzeichen oder Tabulatoren (Tab-Taste) getrennt sind. Das erste dieser Worte wird als Kommandoname interpretiert, d.h. die Shell sucht an bestimmten Stellen im Dateibaum nach einer ausführbaren Datei (d.h. Programm) mit diesem Namen. Die Liste der Verzeichnisse in denen gesucht werden soll, ist in der Variablen PATH abgelegt.

Alle restlichen Wörter der Eingabezeile werden in ein Array gepackt und dem Kommando als Parameter übergeben. Diese werden vom aufgerufenen Programm als Optionen oder Argumente interpretiert. Optionen sind meist einzelne Zeichen, denen ein Minuszeichen (-) vorangestellt ist. Mit ihnen kann man das Verhalten des Programms verändern. Argumente sind oft Namen von Dateien, die von dem Kommando bearbeitet werden sollen.

Es gibt nun eine Reihe von Bearbeitungsschritten, die zwischen dem Aufbrechen der Zeile in Wörter und dem eigentlichen Ausführen eines Kommandos ausgeführt werden (in der unten genannten Reihenfolge; vereinfacht). Der Sinn dieser Schritte ist, dem Benutzer eine Anpassung an seine Bedürfnisse und Tipperleichterungen sowie einige zusätzliche Möglichkeiten zu bieten. Man kann das auch im Abschnitt Lexical Structure im csh-Manual nachlesen.

  1. Quotations
  2. Zerlegung von Pipelines
  3. History Ersetzung
  4. Aliase
  5. Ein-/Ausgabeumlenkung
  6. Variablenersetzung: Shell-interne- und Environment-Variable
  7. Filenamenersetzung (* und ?)

Diese Mechanismen funktionieren nicht nur, wenn man die Zeilen direkt per Hand und Tastatur eintippt, sondern auch, wenn man die Befehle aus einer Datei liest, z.B. mit dem Befehl source oder in Shell-Scripten. Näheres dazu im Kapitel Shell-Scripten.