|
Möglicherweise würden Sie dieses Kapitel gerne überspringen und lieber gleich
zur Mausbenutzung übergehen. Das Absetzen eines Kommandos hat in der heutigen
Fensterwelt etwas archaisches an sich und wirkt komplizierter als die
Verwendung von Popup-Menüs, Registerkarten und Dialogboxen. Tatsächlich können
Sie auch unter Linux heute praktisch alle wichtigen Benutzeraufgaben
erledigen, ohne je ein Kommando absetzen zu müssen. Es sei jedoch hinzugefügt,
daß mit dem höheren Komfort ein verminderter Fahrspaß verbunden ist.
Unix-Systeme sind wie Baukästen. Es stehen Ihnen eine Unzahl kleiner Programme
zur Verfügung, die Sie für die verschiedensten Aufgaben miteinander
kombinieren können. Natürlich können Sie, wenn Sie wollen, immer nur die
größten Klötze verwenden und die kleinen im Kasten liegen lassen. Manchmal
können jedoch die feineren Handgriffe darüber entscheiden, ob Sie Ihre Aufgabe
mit einigen wenigen oder mit einer langen Reihe von Arbeitsschritten
bewältigen müssen. Und Sie können sich darauf verlassen, daß Linux Sie bei der
Verwendung feinerer Handgriffe in jeder Hinsicht so gut wie möglich
unterstützt.
Üblicherweise werden Kommandos in einer Shell abgesetzt. Die Shell nimmt Ihren
Kommandoaufruf entgegen, bearbeitet ihn in einer Weise, die wir noch erläutern
werden, und leitet schließlich die Ausführung des gerufenen Programmes ein.
Kommandos sind nichts anderes als Programme. Sie sind nur meist in einer Shell
anzutreffen und werden daher begrifflich meist voneinander
unterschieden.
|
Wenn Sie sich über ein tty anmelden, startet sofort eine Shell und ermöglicht
die Eingabe von Kommandos. Sie können auch unter X Window eine Shell öffnen
und darin Kommandos aufrufen. Dazu benutzen Sie sogenannte Terminalemulationen
wie xterm oder kvt. Diese emulieren eine
Terminalsituation inklusive der
Standarddatenströme von der Tastatur und zum Monitor - allerdings ohne dafür
jeweils ein tty zu benutzen. Es handelt sich einfach um Programme, die in
ihrem Fenster eine Shell beherbergen.
Die Eingabe eines Kommandos erfolgt über den Kommandonamen. Dieser wird mit
Enter bestätigt und damit der Shell zur Bearbeitung übergeben. Im einfachsten
Fall hat die Shell nichts weiter zu tun als das jeweilige Programm aufzurufen
und diesem die Kontrolle zu übergeben. Das Programm tut seinen Dienst, wird
irgendwann beendet und liefert seinen Rückgabewert zurück an die Shell. Diese
ist somit informiert, daß das gestartete Programm beendet ist, und gibt wieder
ihren Prompt aus, um auf das nächste Kommando zu warten. Dies ist die
einfachste Form einer Kommandoeingabe. Wir wollen uns aber noch einige weitere
anschauen.
|
In vielen Fällen muß einem Kommando weitere Information übergeben werden,
damit es seine Arbeit tun kann. Es gibt grundsätzlich zwei Arten von
Zusatzinformationen, die man Kommandos mitteilen kann: Optionen und Argumente.
Dabei werden die Optionen immer vor den Argumenten angegeben, so daß die
grundlegende Syntax aller Linux-Kommandos folgendermaßen notiert werden kann:
user@linux / $
kommandoname [-Optionen] [Argumente]
|
Die eckigen Klammern zeigen an, daß Optionen und Argumente optional, also
nicht notwendig sind. Ihre Angabe hängt von den Absichten des Aufrufers ab.
Durch Optionen können Sie das Verhalten eines Kommandos beeinflussen. Optionen
werden gewöhnlich durch einzelne Buchstaben bezeichnet und beginnen mit einem
vorangestellten Minus -. Das Kommando ls
beispielsweise gibt gewöhnlich den
Inhalt eines Verzeichnisses aus: Es listet einfach die Namen der enthaltenen
Unterverzeichnisse und Dateien auf. Will man jedoch nicht einfach nur die
Namen wissen, sondern auch Zusatzinformationen über Dateigröße,
Erstellungsdatum und vieles andere, so muß man dies dem ls
mitteilen. Die übliche Eingabe in einem solchen Fall würde lauten:
-l (l für »long«) ist eine Option und veranlaßt eine
ausführlichere Ausgabe. Das Verhalten des Kommandos hat sich durch die
Verwendung der Option verändert. Optionen können miteinander
kombiniert werden, indem man weitere Zeichen einfach hinzufügt. Das
Minuszeichen muß also nur ein einziges Mal verwendet werden, um damit
anzuzeigen, daß nun eine Reihe von Optionen folgt. In unserem Kapitel
über die Shell werden wir noch genauer auf die Verwendung von Optionen
eingehen.
|
Argumente dienen nicht zur Steuerung eines Kommandos, sondern liefern diesem
Information, die es zu bearbeiten hat. Viele Kommandos zur Manipulation von
Dateien benötigen zum Beispiel die Namen der Dateien, die sie manipulieren
sollen. Hier wird also nicht das Verhalten des Programmes geändert, sondern
die Information variiert, die dem Programm für seine Arbeit zur Verfügung
steht. Im Gegensatz zu Optionen kann es häufig eine praktisch unendliche Zahl
verschiedener Argumente geben. Optionen hingegen sind immer nur in
beschränkter Zahl verfügbar - immer gerade so viele, wie der Programmierer in
sein Programm implementiert hat.
|
Manche Optionen erwarten ihrerseits Argumente. Schauen wir uns beispielsweise
folgenden Aufruf eines C-Compilers an:
user@linux / $
gcc -Wall prog.c
|
gcc ist der Name des Kommandos. Die einzige Option in
dieser Zeile ist -W. Sie kann mit Argumenten
versorgt werden, hier ist das angegebene Argument all.
Ein Leerzeichen ist nicht notwendig, aber möglich. Das letzte Argument
prog.c gehört nicht mehr zur Option -W,
sondern bezeichnet den Dateinamen des Quelltextes, der kompiliert werden soll.
|
In der Linux-Welt hat sich eine weitere Art von Optionen verbreitet, die sich
durch eine besondere Schreibweise auszeichnet, die langen oder GNU-Optionen.
Sie beginnen mit einem doppelten Minuszeichen --, gefolgt
von der eigentlichen Option, die meist ein ausgeschriebenes Wort ist. Lange Optionen
sind somit »sprechender« als kurze. Allerdings wird die Verwendung mehrerer
Optionen auch unübersichtlicher. Ein Beispiel für eine weit verbreitete lange
Option ist --version. Viele GNU-Kommandos geben bei einem
Aufruf mit dieser Option ihre Versionsnummer aus.
|
|
Sie wissen jetzt, daß Sie Kommandos über eine Shell aufrufen und ihnen
Optionen und Argumente übergeben können. Zum Abschluß möchten wir Ihr
Bewußtsein dafür schärfen, daß damit jedoch lediglich die Rahmenbedingungen
für eine Kommandoeingabe dargestellt sind, wie sie die Kommandos selbst
bieten. Die Gemeinschaft der Programmierer hat sich gewissermaßen darauf
geeinigt, daß Kommandos so und nicht anders zu arbeiten haben. Die
grundlegende Syntax eines Kommandos ist von der Shell unabhängig.
Dennoch ist die Form einer Kommandozeile in hohem Maße von der Arbeitsweise
der Shell bestimmt. Bevor die Shell nämlich ein Kommando an den Linux-Kernel
zur Ausführung weiterreicht, nimmt sie unter Umständen eine Reihe von
Veränderungen an der Eingabe vor. Diesen Vorgang nennt man Parsing, und da er
von so hoher Bedeutung für die korrekte Eingabe von Kommandos ist, werden wir
uns schon im nächsten Abschnitt ausführlich damit beschäftigen.
|
|
|