Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Shell-Programmierung von Jürgen Wolf
Einführung, Praxis, Referenz
Buch: Shell-Programmierung

Shell-Programmierung
782 S., mit CD, 44,90 Euro
Rheinwerk Computing
ISBN 3-89842-683-1
gp Kapitel 1 Einführung
  gp 1.1 Voraussetzungen an den Leser
    gp 1.1.1 Zielgruppe
    gp 1.1.2 Notation
  gp 1.2 Was ist eine Shell?
  gp 1.3 Hauptanwendungsgebiet
    gp 1.3.1 Was ist ein Shellscript?
    gp 1.3.2 Vergleich mit anderen Sprachen
  gp 1.4 Kommando, Programm oder Shellscript?
    gp 1.4.1 Shell-eigene Kommandos (Builtin-Kommando)
    gp 1.4.2 Aliase in der Shell
    gp 1.4.3 Funktionen in der Shell
    gp 1.4.4 Shellscripts (Shell-Prozeduren)
    gp 1.4.5 Programme (binär)
  gp 1.5 Die Shell-Vielfalt
    gp 1.5.1 ksh (Korn-Shell)
    gp 1.5.2 Bash (Bourne-Again-Shell)
    gp 1.5.3 zsh (Z-Shell)
    gp 1.5.4 ash (A-Shell)
    gp 1.5.5 rbash, rzsh (Restricted Shell)
    gp 1.5.6 tcsh (TC-Shell)
    gp 1.5.7 Welche Shell-Variante wird in diesem Buch verwendet?
    gp 1.5.8 rsh und ssh
  gp 1.6 Betriebssysteme
  gp 1.7 Crashkurs: einfacher Umgang mit der Kommandozeile
    gp 1.7.1 Grundlegende Befehle
    gp 1.7.2 Der Umgang mit Dateien
    gp 1.7.3 Der Umgang mit Verzeichnissen
    gp 1.7.4 Datei- und Verzeichnisnamen
    gp 1.7.5 Gerätenamen
    gp 1.7.6 Dateiattribute
  gp 1.8 Shellscripts schreiben und ausführen
    gp 1.8.1 Der Editor
    gp 1.8.2 Der Name des Shellscripts
    gp 1.8.3 Ausführen
    gp 1.8.4 Hintergrundprozess starten
    gp 1.8.5 Ausführende Shell festlegen
    gp 1.8.6 Kommentare
    gp 1.8.7 Stil
    gp 1.8.8 Ein Shellscript beenden
    gp 1.8.9 Testen und Debuggen von Shellscripts
    gp 1.8.10 Shellscript, das ein Shellscript erstellt und ausführt
  gp 1.9 Vom Shellscript zum Prozess
    gp 1.9.1 Ist das Shellscript ein Prozess?
    gp 1.9.2 Echte Login-Shell?
  gp 1.10 Datenstrom
    gp 1.10.1 Ausgabe umleiten
    gp 1.10.2 Standardfehlerausgabe umleiten
    gp 1.10.3 Eingabe umleiten
    gp 1.10.4 Pipes
    gp 1.10.5 Ein T-Stück mit tee
    gp 1.10.6 Ersatzmuster (Wildcards)
    gp 1.10.7 Brace Extension (Bash und Korn-Shell only)
    gp 1.10.8 Muster-Alternativen (Bash und Korn-Shell only)
    gp 1.10.9 Tilde-Expansion (Bash und Korn-Shell only)
  gp 1.11 Empfehlung


Rheinwerk Computing

1.2 Was ist eine Shelltoptop

Für den einen ist eine Shell nichts anderes als ein besseres »command.com« aus der MS DOS-Welt. Ein anderer wiederum bezeichnet die Shell lediglich als Kommandozeile, und für einige ist die Shell die Benutzeroberfläche schlechthin. Diese Meinungen resultieren daraus, dass der eine die Shell lediglich dazu verwendet, Installations- bzw. Konfigurationsscripts auszuführen, andere verwenden auch häufiger mal die Kommandozeile zum Arbeiten und die letzte Gruppe setzt die Shell ein, wie andere Anwender die grafischen Oberflächen benutzen.

Für den heutigen User besteht eine Benutzeroberfläche aus einem oder mehreren Fenstern, die man mit der Maus oder Tastatur steuern kann. Wie kann man (oder der Autor) also behaupten, die Shell sei eine Benutzeroberfläche? Genauer betrachtet, ist eine Benutzeroberfläche nichts anderes als eine Schnittstelle, welche zwischen der Hardware des Systems (womit der normale Benutzer nicht gern direkt zu tun haben will und dies auch nicht sollte) und dem Betriebssystem kommuniziert. Dies ist natürlich relativ einfach ausgedrückt, denn in Wirklichkeit findet eine solche Kommunikation meistens über mehrere abstrakte Schichten statt. Der Benutzer gibt eine Anweisung ein, diese wird interpretiert und in einen Betriebssystemaufruf (auch System-Call oder Sys-Call genannt) umgewandelt. Jetzt wird auf die Rückmeldung des Systems gewartet und ein entsprechender Befehl umgesetzt – oder im Fall eines Fehlers eine Fehlermeldung ausgegeben.


Hinweis   Noch genauer gesagt durchläuft eine Eingabe der Kommandozeile einen Interpreter und ist somit praktisch nichts anderes als ein Shellscript, das von der Tastatureingabe aus, ohne zwischenzuspeichern, in einem Script ausgeführt wird.


Man spricht dabei auch von einem Systemzugang. Einen solchen Systemzugang (Benutzeroberfläche) können Sie als normaler Benutzer erlangen über die ...

gp  Kommandozeile (Shell). Hierbei geben Sie in einem Fenster (bspw. xterm) oder häufig auch einem Vollbildschirm (eben einem echtem tty) über die Tastatur entsprechende Kommandos ein und setzen so die Betriebssystemaufrufe in Gang.
gp  grafische Oberfläche (Windowmanager wie X11, KDE, GNOME etc.). Auch hierbei geben Sie mit der Maus oder der Tastatur Anweisungen (Kommandos) ein, welche an der Betriebssystemebene ebenfalls nicht vorbeikommen.

Hinweis   Häufig wird die Kommandozeile als Shell bezeichnet. Diese Shell ist aber nicht gleichzusetzen mit dem »Interpreter« Shell. Der Interpreter ist die Schnittstelle, durch die überhaupt erst die Kommunikation zwischen der Ein-/Ausgabe und dem System möglich wird.


Auch wenn es auf den ersten Blick den Anschein hat, dass man über die grafische Oberfläche den etwas schnelleren und bequemeren Weg gewählt hat, so ist dies häufig nicht so. Je höher die Erfahrung des Anwenders ist, desto eher wird dieser mit der Kommandozeile schneller ans Ziel kommen als der GUI-gewöhnte Anwender.

Hurra, die ganze Arbeit war umsonst, KDE und GNOME benötigen wir nicht mehr und fliegen jetzt von der Platte! Nein, keine Sorge, ich will Sie keinesfalls von der grafischen Oberfläche abbringen, ganz im Gegenteil. Gerade ein Mix aus grafischer Oberfläche und Kommandozeile macht effektiveres Arbeiten erst möglich. Wie sonst wäre es z. B. zu realisieren, mehrere Shells gleichzeitig zur Überwachung zu betrachten bzw. einfach mehrere Shells gleichzeitig zu verwenden?

Lange Rede, kurzer Sinn: Eine Shell ist eine Methode, das System über die Kommandozeile zu bedienen.

Historisch interessierte User werden sich wohl fragen, wieso die Bezeichnung »Shell«, was soviel wie Muschel oder auch Schale bedeutet, verwendet wurde. Der Name wurde unter Linux/UNIX (eigentlich war zuerst UNIX da, aber auf diese Geschichte wird hier nicht eingegangen ...) verwendet, weil sich eine Shell wie eine Schale um den Betriebssystemkern legt. Vereinfacht ausgedrückt ist die Shell ein vom Betriebssystemkern unabhängiges Programm bei der Ausführung. Also ein simpler einfacher Prozess. Ein Blick auf das Kommando ps (ein Kommando, mit dem Sie Informationen zu laufenden Prozessen ermitteln können) bestätigt Ihnen das:

you@host > ps
  PID TTY          TIME CMD
 5890 pts/40   00:00:00 bash
 5897 pts/40   00:00:00 ps

Hier läuft als Shell bspw. die Bash – aber mehr zu den verschiedenen Shells und der Ausgabe von ps erfahren Sie etwas später.


Hinweis   Gerade bei UNIX-Systemen wird hier wohl in den seltensten Fällen die Bash per Standard als Interpreter aktiv sein. Gewöhnlich wird meistens die Korn-Shell (ksh) als Standard-Interpreter aktiviert. Aber dies spielt im Moment noch keine Rolle.


Natürlich kann man die Shell nicht einfach als normalen Prozess bezeichnen, dazu ist sie ein viel zu mächtiges und flexibles Programm. Selbst der Begriff »Kommandozeile« ist ein wenig zu schwach. Eher schon würde sich der Begriff »Kommandosprache« eignen. Und wenn die Shell schon nur ein Programm ist, sollte erwähnt werden, dass sie auch jederzeit gegen eine andere Shell austauschbar ist. Es gibt also nicht nur die eine Shell, sondern mehrere – aber auch hierzu in Kürze mehr.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
 << zurück
  
  Zum Katalog
Zum Katalog: Shell-Programmierung
Shell-Programmierung
bestellen
 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-Server






 Linux-Server


Zum Katalog: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Katalog: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Katalog: Linux Handbuch






 Linux Handbuch


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de