Arbeiten auf der Befehlszeile

Wichtung: 5

Beschreibung: Die Kandidaten sollen in der Lage sein, interaktiv mit der Shell und den Shell-Befehlen in der Befehlszeile zu arbeiten. Dieses Thema setzt die bash-Shell voraus.

Wichtigste Wissensgebiete:
Nutzen einzelner Shell-Befehle und kurzer Befehlsfolgen um grundsätzliche Arbeiten in der Befehlszeile durchzuführen.
Gebrauch und Anpassen der Umgebungsvariablen einer Shell, inklusive Definition, Referenzierung und Export von Umgebungsvariablen.
Gebrauch und Editieren der Befehls-History.
Aufrufen von Befehlen innerhalb und außerhalb des Standardpfades.
Rekursives Anwenden von Befehlen innerhalb eines Verzeichnisbaums.

Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
.
bash
echo
env
exec
export
pwd
set
unset
~/.bash_history
~/.profile

Umgebungsvariablen

Umgebungsvariablen werden dazu genutzt, um bestimmte Einstellungen und Pfade zentral allen Usern auf dem System zur Verfügung zu stellen. Es würde wenig Sinn machen, dass jeder User manuell eintragen müsste, dass sich viele Programme im Verzeichnis /usr/bin befinden. Daher legt man viele Standard-Einstellungen in einer Umgebungsvariable fest, damit dieser zuerst für jedermann bekannt sind. So werden beispielsweise die Proxy-Einstellungen oder das Verzeichnis zum GCC-Compiler in Umgebungsvariablen eingetragen.

Path-Variable

Eine der wichtigsten Umgebungsvariablen ist die PATH-Variable. Wenn man in der Bash ein einfaches Programm wie cat aufruft, so braucht man in der Regel nicht den kompletten Pfad (/usr/bin/cat) eintippen. Dies ist möglich, da in der PATH-Variable der Eintrag /usr/bin: vorhanden ist und somit das System in diesem Verzeichnis nach dem Programm cat sucht.

Möchte man also, dass beispielsweise die eigenen Skripte ohne Pfadangabe gestartet werden können, so muss man die PATH-Variable mit /home/peter/meine_skripte erweitern.

/etc/profile = Systemweite Umgebungsvariablen
~/.profile = benutzerspezifische Umgebungsvariablen

Wenn sich ein Programm oder Skript in einem Verzeichnis befindet, welches nicht in der PATH-Variable eingetragen ist, so muss man in das Verzeichnis wechseln und das Programm mit einem vorangestellten ./, beispielsweise ./mein-skript.sh, starten. Der Punkt repräsentiert das aktuelle Verzeichnis.

Umgebungsvariablen bearbeiten

echo $PATH = Zeigt die Umgebungsvariable $PATH an
PATH=/home/bin = Der Variable PATH den Wert /home/bin zuweisen
PATH=$PATH:/home/bin = Die Variable PATH mit dem Eintrag /home/bin erweitern
export VARIABLE = Die Variable steht nicht nur in der aktuellen Shell, sondern auch in den von Ihr aufgerufenen Programmen zur Verfügung.
export VARIABLE=abc = Dasselbe wie zuvor, nur mit Wertzuweisung.

Wichtig: Variablen, die mit export bekannt gemacht wurden, verschwinden nach einem Neustart wieder!

set = Zeigt ALLE definierten Variablen an.
unset PATH = Entfernt die Werte aus dem Umgebungsspeicher. Variable wird geleert.
senv = Zeigt ALLE Umgebungsvariablen an.
pwd = Zeigt aktuelles Arbeitsverzeichnis an (print working directory)br>

Beispiel

# TEXT=`Hallo Welt` # export $TEXT # bash # TEXT=Hauseingang # exit

Welcher Text wird angegeben, wenn man jetzt echo $TEXT aufruft? Richt ist Hallo Welt, da die zweite Wertzuweisung nicht mit export global zur Verfügung gestellt wurde!

Befehle in einer Befehlszeile

Anweisung A ; Anweisung B = Anweisung B wird nach Anweisung A ausgeführt.
Anweisung A & Anweisung B = Anweisung A und Anweisung B werden gleichzeitig ausgeführt.
Anweisung A && Anweisung B = Anweisung B wird nur dann ausgeführt, wenn Anweisung A fehlerfrei abgeschlossen wurde (Rückgabewert 0)
Anweisung A || Anweisung B = Anweisung B wird nur dann ausgeführt, wenn Anweisung A nicht fehlerfrei abgeschlossen wurde (Rückgabewert ungleich 0)

Kommandosubstitution

Es ist möglich, zwei Kommandos miteinander zu verbinden. Beispiel echo und pwd:

# echo Wir befinden uns im Verzeichnis $(pwd)

Bash-History

In der Datei ~/.bash_history bzw. ~./history werden die letzten Befehle gespeichert, die man in der Bash eingegeben hat. Mit dem Befehl kann man sich alle eingegebenen Befehle anzeigen lassen.

!200 = Führt den Befehl Nr. 200 aus
!-5 = Führt den fünftletzten Befehl aus