LPIC101/103.1 Auf der Kommandozeile arbeiten: Unterschied zwischen den Versionen
Zeile 44: | Zeile 44: | ||
mount -o username=antje,password=xy //fs1/data /mnt/ -t smbfs | 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 <code>mount</code>-Befehl baut in diesem Fall eine Netzwerkverbindung zu einem Windows-Computer auf | *Das Beispiel zeigt eine Mischung mit einer Option vorn, einer Option hinten und den Argumenten in der Mitte. Der <code>mount</code>-Befehl baut in diesem Fall eine Netzwerkverbindung zu einem Windows-Computer auf | ||
==Umgebungsvariablen und Shellvariablen== | ==Umgebungsvariablen und Shellvariablen== | ||
*Die Unterschiede zwischen diesen beiden Variablentypen liegen einerseits drin. | *Die Unterschiede zwischen diesen beiden Variablentypen liegen einerseits drin. |
Version vom 27. November 2019, 09:50 Uhr
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
Allgemeines
- Damit man im Textmodus mit dem Computer kommunizieren kann, benötigt man eine Shell. Man kann über diese Shell mit dem Kern(el) Informationen austauschen
- 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 Programmmount
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
Umgebungsvariablen und Shellvariablen
- Die Unterschiede zwischen diesen beiden Variablentypen liegen einerseits drin.
- Durch welche Konfigurationsdateien sie deklariert werden
- Und demzufolge wann und durch welches Programm sie ausgewertet werden
- Und andererseits in ihrem Wirkungsbereich:
- 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
- Umgebungsvariablen:
PATH-Variable
- Wenn man ein Programm ausführen will, das sich nicht in einem in Ihrer PATH-Variablen enthaltenen Verzeichnis befindet, muss man den kompletten Pfad zu diesem Programm auf der Kommandozeile mit angeben
- Wenn man ein Programm ohne Angabe eines Pfades startet, prüft die Shell zunächst, ob es sich um ein internes Kommando der Shell handelt. Dazu zählen:
echo, bg, fg,jobs, kill, pwd, set, unset
und viele mehr
- Falls kein passendes Kommando gefunden wird, sucht die Shell das Programm inallen Verzeichnissen, die in der PATH-Variablen enthalten sind
- Sollten mehrere Programme mit dem gleichen Namen vorhanden sein, wird das zuerst gefundene ausgeführt. Man kann in einem solchen Fall das Kommando
which
verwenden, um festzustellen, welches Programm die Shell automatisch ausführt:
archangel:~ # which less /usr/bin/less
- Es ist zu beachten, dass ein Programm auch dann nicht ohne Pfadangabe ausgeführt wird, wenn man sich aktuell in dessen Verzeichnis befindet. Dieses Verhalten gibt esunter DOS, aber nicht bei Linux
- Man kann ein Programm, das sich im aktuellen Verzeichnis befindet, aber auch starten, indem Sie ./ dem Programm voranstellen. Die Zeichen ./ repräsentieren das aktuelle Verzeichnis. Sie können z. B. Konfigurationsskripte von Tar-Balls im aktuellen Verzeichnis ausführen, indem Sie folgende Syntax verwenden:
archangel:/usr/src/xmbmon205 # ./configure
- Wenn man einen Prompt verwendet, der ihn nicht anzeigt, in welchem Verzeichnis man sich gerade befindet, verwendet man das Kommando
pwd
(Path of Working Directory) ohne Optionen. Der Pfad wird Ihnen dann angezeigt:
archangel:/usr/src/xmbmon205 # pwd /usr/src/xmbmon205
- Man kann sich den Inhalt Ihrer PATH-Variablen, genau wie den anderer Variablen, anzeigen lassen:
archangel:/ # echo $PATH /sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/usr/X11R6/ bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/jvm/jre/bin
Beliebte Variablen für Prüfungen
Manche Variablen werden in der Prüfung immer wieder abgefragt. Dazu gehören besonders die folgenden:
$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
Kontrollfragen
Frage 1
Antwort
Frage 2
Antwort
Frage 3
Antwort
Frage 4
Antwort
Frage 5
Antwort