Druckversion

Eingabe von Kommandos

Der Aufbau eines Kommandos Weiter

Der grundlegende Aufbau (nach weit verbreiteter Syntax) eines Kommandos sollte wie folgt aussehen:

Kommandoname [-Optionen] [Argumente...]

Optionen werden hierbei mittels »-« eingeleitet und bestehen zumeist aus nur einem Buchstaben. Mehrere Optionen können gruppiert werden:

user@sonne> ls -la

Dem Kommando können beliebig viele Argumente übergeben werden. Meist können Optionen und Argumente in ihrer Reihenfolge vertauscht werden.

user@sonne> ps -ef

Das führende Minus zur Einleitung von Optionen ist gemäß dem Unix98-Standard. Einige Kommandos (wie ps, tar,...) verwenden darüber hinaus auch Optionen nach der BSD-Syntax, nach der kein führendes Minus vorgeschrieben ist:

user@sonne> ps ax

Ebenfalls Verwendung finden oft die GNU-Regeln für lange Optionen, die durch zwei führende Minus-Zeichen eingeleitet werden.

user@sonne> ps --sort tty

 

Interpretation der Kommandozeile Zurück Anfang Weiter

Bevor ein Kommando zur Ausführung gebracht wird, interpretiert die Bash die ihr übergebene Kommandozeile. Die Shell parst dazu die Eingabe und sucht nach Zeichen(folgen) mit Sonderbedeutungen. Anschließend versucht die Bash, diese Zeichenketten zu substituieren. Die Reihenfolge der Betrachtung der Argumente spielt für das Verständnis der Arbeitsweise der Bash eine große Rolle.

Im Abschnitt Shells, Bash findet der interessierte Leser eine detaillierte Diskussion zum Parsen der Kommandozeile. Die hiesigen Beispiele beschränken sich auf das Wesentliche, was allerdings den Alltag der meisten Linux-Anwendern bereits abdecken sollte.

Metazeichen Zurück Anfang Weiter

Unter Metazeichen fasst man diejenigen Sonderzeichen einer Shell zusammen, die als Platzhalter für Zeichenmuster stehen.

In der Bash stehen folgende Sonderzeichen für:

?

Genau ein beliebiges Zeichen

*

Beliebig viele (auch 0) beliebige Zeichen

[def]

Eines der Zeichen

[^czx]

Keines der angegebenen Zeichen

[!czx]

Wie oben

[a-f]

Alle Zeichen aus dem Bereich

~

Steht für das Heimatverzeichnis

\

Hebt die Sonderbedeutung des nachfolgenden Zeichens auf

"..."

Hebt die Sonderbedeutung des Leerzeichens und Tabulators der eingeschlossenen Zeichenfolge auf (die Zeichenfolge wird als ein Wort betrachtet)

'...'

Hebt alle Sonderbedeutungen der eingeschlossenen Zeichenfolge auf

Ein Metazeichen wird niemals vom jeweiligen Kommando interpretiert, sondern immer von der Shell. Aus diesem Grund funktioniert ein Kommando wie

user@sonne> cp *.x *.y

unter einer Unix -Shell nicht.

Beispiele Zurück Anfang

Die Arbeitsweise der Bash lässt sich anhand von Beispielen verdeutlichen:

user@sonne> ls /boot/*.map
/boot/System.map

Der Stern »*« steht für beliebig viele beliebige Zeichen. D.h. in obiger Eingabe substituiert die Bash die Eingabe durch alle Dateinamen, die im Verzeichnis /boot liegen und auf ».map« enden.

user@sonne> ls -d /?[abc]*
/sbin     /var

Die Bash ersetzt die Eingabe durch alle Dateinamen aus dem Wurzelverzeichnis, deren erstes Zeichen beliebig ist (?), deren zweiter Buchstabe entweder ein »a«, ein »b« oder ein »c« ist, gefolgt von beliebig vielen (auch 0) beliebigen Zeichen "*". Die Option »-d« des Kommandos »ls« bewirkt, dass bei Verzeichnissen nur deren Namen, nicht deren Inhalt aufgelistet wird.

user@sonne> ls /?[abc]*
/sbin:
SuSEconfig    fsck.minix    ldconfig    rmmod
YaST          genksyms      lilo        route ...

/var:
X11R6    cron    lock    named    spool    texfonts
adm      games   log     openwin  squid    tmp
...

...ohne die Option "-d" kann die Ausgabe schnell verwirren.

user@sonne> echo "Willkommen $USER"
Willkommen user
user@sonne> echo 'Willkommen $USER'
Willkommen $USER

USER ist eine vordefinierte Shellvariable, die das Benutzerkennzeichen des angemeldeten Benutzers enthält. Wird das Argument von echo mit doppelten Anführungsstrichen »gequotet«, so wird zwar das enthaltene Leerzeichen ignoriert, nicht aber das $-Zeichen, das hier den Inhalt der Variable USER abruft.
Beim Einschließen in einfache Anführungsstriche wird die Sonderbedeutung jedes Zeichens aufgehoben, also auch die enthaltene Variablensubstitution.

Korrekturen, Hinweise?
Startseite Nächste Seite Nächstes Kapitel Vorherige Seite Kapitelanfang