4.4    Besseres Arbeiten mit Verzeichnissen

Im Folgenden werden wir auf das Arbeiten mit Verzeichnissen eingehen. Erinnern Sie sich also noch einmal an die Konzepte des VFS (Virtual File System) und daran, was Sie in diesem Zusammenhang vielleicht beachten müssen.

4.4.1    Pfade

Zuerst müssen wir natürlich diesen Begriff klären: Ein Pfad gibt einen Weg durch den hierarchischen Verzeichnisbaum hin zu einem bestimmten Ziel an.

Eine vollständige Verzeichnisangabe wie /home/user beschreibt also auch einen Pfad, der angibt, wie man zu ebendiesem Verzeichnis gelangt.

Pfadnamen

Auch den Unterschied zwischen absoluten und relativen Pfaden kennen Sie bereits aus vorherigen Kapiteln. An dieser Stelle möchten wir allerdings einige zusätzliche Hinweise zu diesen Pfadarten geben.

Es gibt folgende Möglichkeiten zur Verzeichnisangabe:

Eine Kombination des Pfadnamens mithilfe dieser Abkürzungen ist natürlich auch problemlos möglich. Der folgende cd-Aufruf wechselt in das Heimatverzeichnis des Benutzers (~), dort in das Unterverzeichnis Verzeichnis/, verlässt durch ../ dieses Verzeichnis wieder (somit landet man wieder im Heimatverzeichnis) und anschließend in das Unterverzeichnis buch/.

$ pwd
/usr/local
$ cd  /Verzeichnis/../buch/
$ pwd
/home/swendzel/buch

Listing 4.11     Beispiel für einen Verzeichniswechsel

4.4.2    Und das Ganze mit Pfaden ...

Natürlich können Sie diese ganzen »speziellen« Angaben für Verzeichnisse jeweils mit weiteren, komplettierenden Pfaden kombinieren. So wirkt ein .. immer relativ, ein $HOME hingegen absolut.

Schauen wir uns zum besseren Verständnis ein kleines Beispiel an:

// Wir befinden uns in …
$ pwd
/usr/local

// ins Arbeitsverzeichnis wechseln (kein Effekt):
$ cd . ; pwd
/usr/local

// nächsthöheres Verzeichnis:
$ cd .. ; pwd
/usr

// absolute Pfadangabe:
$ cd /usr/local/bin; pwd
/usr/local/bin

// … und eine simple relative Pfadangabe
$ pwd
/usr/local
$ cd share/slrn ; pwd
/usr/local/share/slrn

//… komplizierter:
$ pwd
/usr/local/bin
$ cd ../../lib/modules; pwd
/usr/lib/modules

//… und völlig sinnlos:
$ cd /usr/lib/../local/bin; pwd
/usr/local/bin

Listing 4.12     Verzeichniswechsel auf Unix-Art