LPIC101/103.1 Auf der Kommandozeile arbeiten
Wichtigste Wissensgebiete
- Einzelne Shell-Kommandos und einzeilige Kommandofolgen verwenden, um einfache Aufgaben auf der Kommandozeile zu lösen.
- Die Shell-Umgebung verwenden und anpassen, etwa um Umgebungsvariablen zu definieren, zu verwenden und zu exportieren.
- Die command-history verwenden und ändern.
- Kommandos innerhalb und außerhalb des definierten Suchpfads aufrufen.
Wichtiger Dateien, Verzeichnisse und Anwendungen
bash
type
echo
which
env
man
export
uname
pwd
history
set
bash_history
unset
Quoting
Allgemeines
Damit Sie im Textmodus mit dem Computer kommunizieren können, benötigen Sie eine Shell.
Der Begriff Shell bedeutet in der englischen Sprache Schale, was genau den Punkt trifft, weil man über
diese Schale mit dem Kern(el) Informationen austauschen kann.
Unter Linux wird standardmäßig die Bash als Shell verwendet. Hierbei handelt es sich um eine Weiterentwicklung der ursprünglichen Unix-Shell sh. Die Shell sh ist immer noch Bestandteil von Linux, wird aber zumindest als Login-Shell nicht mehr so oft verwendet.
Aufbau eines Shell-Kommandos
Ein Kommando besteht aus bis zu drei verschiedenen Komponenten. Die erste Komponente ist das Kommando selbst, also eine ausführbare Datei, ein Skript oder ein Shell-interner Befehl. Ein Kommando kann auch für sich allein stehen und ohne Optionen oder Argumente funktionieren:
archangel:~ # mount
Wenn das Kommando mount
ohne Optionen oder Argumente ausgeführt wird, zeigt es aktuell eingehängte Dateisysteme an. Es gibt aber auch Konstellationen, in denen ein Kommando mit einer oder mehreren Optionen ausgeführt wird:
archangel:~ # mount -a
In diesem Beispiel wurde mount
mit der Option -a
ausgeführt. Das Programm mount
würde mit dieser Option alle in der Datei /etc/fstab aufgeführten Dateisysteme einhängen.
Es ist aber auch möglich, mount
ausschließlich mit Argumenten zu versehen:
archangel:~ # mount /dev/sda1 /boot
Argumente unterscheiden sich von Optionen. Eine Option sagt einem Programm, wie es sich verhalten soll. Argumente teilen einem Programm mit, was es verarbeiten soll. Es ist möglich, einem Programm sowohl mehrere Optionen als auch mehrere Argumente zu übergeben. Bei vielen Programmen ist die Reihenfolge sogar variabel:
mount -o username=antje,password=xy //fs1/data /mnt/ -t smbfs
Das Beispiel zeigt eine Mischung mit einer Option vorn, einer Option hinten und den Argumenten in der Mitte. Der mount
-Befehl baut in diesem Fall eine Netzwerkverbindung zu einem Windows-Computer auf.
Übergabe der Optionen
Bei der Übergabe von Optionen gibt es mehrere gängige Methoden. Einige Kommandos verlangen, dass den Optionen ein Bindestrich vorangestellt wird, andere arbeiten auch ohne einleitenden Bindestrich. Außerdem sehen viele Programme vor, dass ganze Wörter als Optionen verwendet werden. Diesen werden in der Regel zwei Bindestriche vorangestellt. Das folgende Beispiel kennen Sie sinngemäß schon aus dem vorangegangenen Kapitel:
archangel:~ # rpm --install -vh /i586/fortune-1.0-860.i586.rpm Preparing.. ########################################### [100 %]
Ein weiterer prominenter Vertreter der flexiblen Programme ist tar
. Sie können tar
mit normalen Optionen oder Optionswörtern verwenden. Außerdem kann tar
auch Optionen ohne vorangestellte Bindestriche übernehmen. Die folgenden vier Kommandos führen bei tar
zum selben Ergebnis:
# tar -x -z -v -f xmbmon205.tar.gz # tar -xzvf xmbmon205.tar.gz # tar xvzf xmbmon205.tar.gz # tar --extract --gzip --verbose --file=xmbmon205.tar.gz
Umgebungsvariablen und Shellvariablen
- Umgebungsvariablen gelten für alle Shells, die ein Benutzer verwendet. Die Inhalte dieser Variablen werden an Subshells vererbt. Das bedeutet, dass beim Aufruf einer Subshell ein automatischer Export der Variablen in diese Subshell stattfindet. Bei Umgebungsvariablen werden normalerweise Großbuchstaben verwendet.
- Shellvariablen müssen in jeder Subshell, die durch den Benutzer oder ein Skript gestartet wird, neu deklariert werden. Es findet standardmäßig keine Vererbung statt. Für Shellvariablen verwendet man üblicherweise Kleinbuchstaben.
Beliebte Variablen für Prüfungen
$HISTSIZE
definiert die Anzahl der Kommandos, die in der Befehls-History aufbewahrt werden. Diese Variable wird normalerweise in der Datei /etc/profile festgelegt.
$PS1
bestimmt das Aussehen der Eingabeaufforderung (Prompt). Beispiel:
root@archangel:~# echo $PS1 \u@\h:\w$
Die Zeichen \u stehen für Username. Das @ wird normal ausgegeben. Die Zeichen \h werden mit dem Host-Namen ersetzt. Es folgt ein Doppelpunkt. Anschließend zeigt \w für Working Directory das aktuelle Verzeichnis an. Die Tilde ~ repräsentiert hierbei das Heimatverzeichnis des Benutzers. Es folgt ein >. Der Prompt kann durch Änderung der Variablen PS1 den eigenen Wünschen angepasst werden. Es empfiehlt sich dann eine Konfiguration in der Datei /etc/bashrc. $? enthält das Errorlevel des zuletzt ausgeführten Kommandos. In der Regel bedeutet der Wert 0 in dieser Variablen, dass das letzte Programm erfolgreich ausgeführt wurde. Die Fehlerwerte variieren von Programm zu Programm. Beliebte Werte sind 1 und 127. Beispiel:
archangel:~ # Kommando, das es nicht gibt bash: Kommando: command not found archangel:~ # echo $? 127
Das »Kommando, das es nicht gibt« hat ein Errorlevel von 127 zur Folge. $1 , $2 usw. enthalten die Optionen und Argumente, die an ein Programm übergeben werden. Sie werden im Normalfall vom gestarteten Programm oder Skript selbst ausgewertet. Mehr über dieses Thema erfahren Sie im zweiten Teil dieses Buches.