Bash/Kommandosyntax

Aus Foxwiki

Aufbau eines Kommandos

UNIX-Kommandos haben folgenden Aufbau:

Befehlsname Optionen Dateiname(n)

Die Bestandteile eines Kommandos müssen durch Whitespaces voneinander getrennt werden, damit sie von der Shell erkannt werden. Die Eingabe wird durch Drücken der RETURN-Taste abgeschlossen.

Kommandobeschreibung

mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o option[,option]...]  device|dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
  • In den Manual-Pages werden Kommandos in Kurzform beschrieben.
  • Unter einander werden die verschiedenen Anwendungsformen des Befehls mit den möglichen Optionen und Parameter aufgelistet.
  • Optionale Werte sind in eckige Klammern gesetzt ([-t vfstype]), alle anderen sind also obligatorisch (device dir).
  • Die (meist einbuchstabigen) Optionen werden als Kette aufgelistet (-fnrsvw).
    • Das bedeutet, als daß eine beliebige Kombination dieser Optionen möglich ist (ob sie sinnvoll ist, wird hier nicht berücksichtigt).
  • Die Reihenfolge von Parameter sind obligatorisch, alternative Möglichkeiten werden durch ein Pipesymbol getrennt aufgesitet (device|dir).

Befehlsname

  • Befehlsnamen bestehen aus einer Zeichenkette die den Einsatzzweck beschreiben.
  • Sie dürfen keine Whitespaces enthalten und bestehen meist aus Kleinbuchstaben.

Optionen

Optionen steuern die Arbeitsweise des Befehls.

Mehrerer Optionen können hinter einem einzigen Bindestrich gesammelt oder einzeln mit einem Bindestrich aufgelistet werden.

ls·-lrt
ls -l -r -t

Bei Optionen, die einen Parameter erfordern kann dieser der Option direkt folgen oder durch Leerzeichen getrennt werden:

tail -n100
tail -n 100

Werden solche Optionen mit anderen kombiniert, müssen sie als letzte auftreten oder mit einem eigenen Bindestrich eingeführt werden.

tail -fn100
tail -f -n100

Dateiname(n)

Kommandos bei den als Parameter [FILE] angegeben wurde kann eine Liste von Dateien mitgegeben werden, auf die das Kommando angewandt werden soll.

ls datei1 datei2

Einige Befehle erwarten die Eingabe über die Standardeingabe wenn keine Datei angegeben wurde.

cat

Oft kann die Dateiliste auch Dateimuster enthalten die auf mehrere Dateien zutreffen.

ls datei*

Bei einigen Befehlen ist die Anzahl der Dateien festgelegt,

diff datei1 datei2

oder die Reihenfolge der übergebenen Dateien wichtig:

mount /dev/sda1 /mnt

Informationen mitgeben

Es gibt zwei Möglichkeiten, einem UNIX-Kommando beim Aufruf Informationen mitzugeben:* Auf der Kommandozeile

  • Über die Standardeingabe

Für die letztere Möglichkeit gibt es das Kommando cat Datei (concatenate): * Lesen der angegebenen Datei und Kopieren auf die Standardausgabe.

  • Mit cat Datei | Kommando bekommt man den Dateiinhalt in die Standardeingabe des Kommandos.

Auch für die Ausgabe gibt es zwei Möglichkeiten: * Die Standardausgabe eines Programms kann durch die Backquotes (` `) oder durch $( ) als Parameter an ein Kommando übergeben werden.

  • Umgekehrt erlaubt das Kommando echo die Ausgabe der Kommandoparameter auf der Standardausgabe oder per Umleitung in eine Datei oder Pipe.

Wichtig werden diese Erkenntnisse erst bei Erstellen von Shell-Skripts, wo von allen geschilderten Möglichkeiten Gebrauch gemacht wird.

VORSICHT - UNIX-Benutzer sind "mündig"!

Wird ein Kommando ausgeführt, fragt der Befehl nicht, ob Sie das wirklich wollen, sondern löscht die Platte sofort. Beim Testen von Shell-Programmen hilft das Kommando

$ echo [Argumente] 

Dieses Kommando gibt die Argumente auf dem Bildschirm aus. So kann die Kommandobearbeitung der Shell verfolgt und studiert werden. Die Kenntnis des dann folgenden Ablaufs erlaubt es, zu verstehen, warum etwas vielleicht nicht so klappt, wie man es sich vorgestellt hat. Daher sollen diese Schritte hier beschrieben werden.