

	\documentclass[a4paper,11pt]{article}
	\usepackage{ngerman}
	\usepackage[latin1]{inputenc}
	\setlength\parskip{\medskipamount}
	\setlength\parindent{0pt}
	\begin{document}

	
 % Kommandosyntax
 % Copyright Matthias Kleine
 % Lizenz: GFDL
 % 
 % $Name: $
 % $Revision: 1.1.2.6 $
 % $Source: /cvsroot/selflinux/tutorial/userbasics/konzepte_basic/basiskonzepte,v $
 % SelfLinux-0.7.2
 %
 % Diese Datei ist Teil von SelfLinux http://www.selflinux.de
 %
 %%% $Id: allgemeine_kommandosyntax,v 1.1.2.6 2002/11/10 19:28:15 std Exp $

	\title{allgemeine Kommandosyntax}


	
	    \author{Matthias Kleine}
	    %\url{mailto:kleine_matthias@gmx.de}
    

	\maketitle

	
	
	%\ref{../index.tex}
	
		%\ref{konzepte_basic1.tex}
		Basiskonzepte für Benutzer
	\ref{Kommandosyntax}

    \par{Layout}
    Johnny Graber
	    %\url{mailto:selflinux@jgraber.ch}
    
    	\par{Lizenz}
	GFDL
 
	\tableofcontents{}

        
	\section{Allgemeine Kommandosyntax} \label{d19e48}
        
  

  \subsection{Vorbemerkung} \label{d19e53}
        
   

   
  \par
  
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.
   

   
  \par
  
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.
   
   
  \par
  
Ü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.
   
  
  \subsection{Die Eingabe eines Kommandos} \label{d19e68}
        
   

   
  \par
  
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 {\bf xterm} oder {\bf 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.
   

   
  \par
  
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.
   
  
  \subsection{Verschiedene Formen von Kommandos} \label{d19e86}
        
   

   
  \par
  
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:
   

   
    \begin{tt} \begin{scriptsize} user@linux / \$ 
kommandoname [-Optionen] [Argumente]
     \end{scriptsize} \end{tt} \linebreak 
   

   
  \par
  
Die eckigen Klammern zeigen an, daß Optionen und Argumente optional, also
nicht notwendig sind. Ihre Angabe hängt von den Absichten des Aufrufers ab.
   
   \subsubsection{Optionen} \label{d19e103}
        
    

    
  \par
  
Durch Optionen können Sie das Verhalten eines Kommandos beeinflussen. Optionen
werden gewöhnlich durch einzelne Buchstaben bezeichnet und beginnen mit einem
vorangestellten Minus {\bf -}. Das Kommando {\bf 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 {\bf ls} 
mitteilen. Die übliche Eingabe in einem solchen Fall würde lauten:
    

    
     \begin{tt} \begin{scriptsize} user@linux / \$ 
ls -l
      \end{scriptsize} \end{tt} \linebreak 
    
    
  \par
  
{\bf -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.
    
   

   \subsubsection{Argumente} \label{d19e133}
        
    

    
  \par
  
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.
    
   
   \subsubsection{Optionen, die Argumente erwarten} \label{d19e142}
        
    

    
  \par
  
Manche Optionen erwarten ihrerseits Argumente. Schauen wir uns beispielsweise
folgenden Aufruf eines C-Compilers an:
    

    
     \begin{tt} \begin{scriptsize} user@linux / \$ 
gcc -Wall prog.c
      \end{scriptsize} \end{tt} \linebreak 
    

    
  \par
  
{\bf gcc} ist der Name des Kommandos. Die einzige Option in 
dieser Zeile ist {\bf -W}. Sie kann mit Argumenten
versorgt werden, hier ist das angegebene Argument {\bf all}. 
Ein Leerzeichen ist nicht notwendig, aber möglich. Das letzte Argument
{\bf prog.c} gehört nicht mehr zur Option {\bf -W}, 
sondern bezeichnet den Dateinamen des Quelltextes, der kompiliert werden soll.
    
   

   \subsubsection{Lange Optionen} \label{d19e175}
        
    

    
  \par
  
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 {\bf --}, 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 {\bf --version}. Viele GNU-Kommandos geben bei einem 
Aufruf mit dieser Option ihre Versionsnummer aus.
    
   
  

  \subsection{Die Rolle der Shell} \label{d19e191}
        
   

   
  \par
  
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. \linebreak 
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.
   
  
 
	\ref{inhalt.tex}


	\end{document}
	
