| LetzteInstallation - XFree86 | Linux - Die Shell | NächstDateien-Baum |
Der Befehlsinterpreter ist die Schnittstelle zwischen Benutzer und Betriebssystem, daher sein englischer Name «shell», was bedeutet «Schale».
Die Shell ist also damit beauftragt der Vermittler zwischen Betriebssystem und Benutzer zu sein, dank der Kommandozeilen, die von dem Benutzer eingegeben werden. Seine Rolle besteht darin die Kommandozeilen zu lesen, deren Sinn zu interpretieren, das Kommando auszuführen, und das Ergebnis zu den Ausgängen zurückzuführen.
Shell ist also eine Ausführungsdatei, deren Aufgabe es ist die Befehle zu interpretieren, sie an das System weiter zu leiten und das Ergebnis zurückzuleiten. Es gibt mehrere Shells, die gängisten sind sh (genannt «Bourne shell»), bash («Bourne again shell»), csh («C Shell»), Tcsh («Tenex C shell»), ksh («Korn shell») und zsh («Zero shell»). Ihre Namen entsprechen meist dem Namen der Ausführung.
Jeder Benutzer besitz eine Shell als Standardvorgabe, die beim Öffnen einer Eingabaufforderung ausgeführt wird. Die Standardshellvorgabe wird in der Konfigurationsdatei, /etc/passwd in dem letzten Feld der Benutzerzeile, angegeben. Es ist möglich die Shell in einer Sitzung zu wechsel indem man einfach die Ausführungdatei ausführt, z.B. :
/bin/bash
Die Shell initialisiert sich indem sie ihre globale Konfiguration liest (in einer Datei des Verzeichnisses /etc/), und dann die Benutzerkonfiguration liest (in einer versteckten Datei, deren Name mit einem Punkt beginnt, und die sich in dem Benutzerbasisverzeichnis befindet, d.h. /home/Benutzername/.Konfigurationsdatei), dann zeigt sie eine Eingabeaufforderung an (auf Englisch prompt) wie folgt :
machine:/repertoire/courant$Als Standardvorgabe besteht in den meisten Shells der Prompt aus dem Namen der Maschine, gefolgt von einem Doppelpunkt (:), dem Arbeitsverzeichnis, und einem Zeichen, das den verbundenen Benutzertypen angibt :
Ein Kommandozeile ist eine Zeichenkette, bestehend aus einem Kommando, welches einer Systemausführdatei entspricht oder einem Shell-Kommando, sowie die Options-Argumente (Parameter) :
ls -al /home/jf/In dem folgenden Kommando ist ls der Name des Kommandos, -al und /home/jean-francois/sind die Argumente. Die Argumente die mit - beginnen, werden Optionen genannt. Für jedes Kommando gibt es meist eine gewisse Anzahl Optionen, die detailliert werden können, indem man die folgenden Befehle eingibt :
commande --help commande -? man commande
Bei der Ausführung eines Kommandos wird ein Prozess geschaffen. Dieser wird dann drei Datenflüsse öffnen :
Wenn ein Programm ausgeführt wird, werden die Daten in Standardeinstellung also ab der Tastatur gelesen und das Programm schickt seine Ausgabe und seine Fehler zum Bildschirm, es ist aber auch möglich die Daten ab jedem beliebigen Eingabeperipheriegerät zu lesen, sogar ab einer Datei und den Ausgabe auf ein Peripherieanzeigegerät zu schicken, eine Datei usw.
Linux, wie jedes Unix-System, besitz Mechanismen mit denen die Standard-Eingänge/ Ausgänge zu Dateien umgelenkt werden können.
So ermöglicht die Benutzung des Zeichens «>» die Standardausgabe eines Kommandos welche sich links befindet, zu einer Datei umzulenken die sich rechts befindet :
ls -al /home/jf/ > toto.txt echo "Toto" > /etc/monfichierdeconfigurationDas folgende Kommando entspricht einer Dateikopie :
cat toto > toto2Die Umleitung «>» hat zum Ziel eine neue Datei zu schaffen. Würde es also eine Datei mit gleichem Namen geben, so würde diese gelöscht. Der folgende Befehl erstellt einfach eine leere Datei :
> DateiDie Verwendung eines doppelten Zeichens «>>» ermöglicht es die Standardausgabe zur Datei zu verketten, d.h.dass die Ausgabe an die Datei angehängt wird, ohne diese zu löschen.
In analoger Weise, gibt das Zeichen «<» eine Umleitung der Standardeingabe an. Das folgende Kommando schickt den Inhalt der Datei toto.txt als Eingabe des Kommandos cat, dessen einziges Ziel es ist, den Inhalt auf der Standardausgabe anzuzeigen (ein unnützes, aber lehrreiches Beispiel) :
cat < toto.txt
Die Verwendung der Umleitung «<<» ermöglicht zu guter Letzt an die Standardeingabe zu lesen, bis man der Kette die sich rechts befindet, begegnet. So wird folgendes Beispiel die Standardeingabe lesen, bis das Wort STOP angetroffen wird, dann wird das Ergebnis angezeigt :
cat << STOP
Die Kanäle (auf Englisch «pipes", wörtlich Schlauch) sind Kommunikationsmechanismen die allen UNIX-Systemen eigen sind. Ein Kanal, symbolisiert durch einen vertikalen Strich (Zeichen «|»), ermöglicht es, eine Standardausgabe eines Kommandos einer Standardeingabe eines anderen Kommandos zuzuordnen, so wie ein Kanal auch eine Standardeingabe eines Befehls mit der Standardausgabe eines anderen in Verbindung setzen kann.
In folgendem Beispiel wird die Standardausgabe des Kommandos ls -al zu dem Programme sort geschickt, welches beauftragt ist, das Ergebnis nach alphabetischer Reihenfolge zu ordnen :
ls -al | sort
So ist es möglich eine gewisse Anzahl von Befehlen durch sich folgende Pipes zu verketten. In folgendem Beispiel zeigt das Kommando alle Dateien des Arbeitsverzeichnisses an, wählt die Zeilen die das Wort "zip" enthalten (mit dem Befehl grep) und zählt die Gesamtanzahl der Zeilen :
ls -l | grep zip | wc -l