UnixTools01 04
Path Names
Die Namen, über die der Computer eine Datei (oder auch ein Verzeichnis) findet, nennen wir Path Names, denn sie zeigen den Pfad an, wie man (womöglich über mehrere Verzeichbnisse hinweg) zu der gesuchte Datei (oder dem gewünschten Verzeichnis) findet.
Wir unterscheiden absolute Path NAmes' und relative Path Names'.
Ein absoluter Path Name beginnt mit einem /. Das bedeutet, die Suche nach der gewünschten Datei (oder dem gewünschten Verzeichnis) beginnt am systemweiten Startpunkt des Dateisystems (den man übrigens auch Root nennt). Egal, was gerade unser Working Directory ist, ein absoluter Path Name bedeutet also immer dasselbe. Ein relativer Path Name beginnt nicht mit enem /. Bei ihm beginnt die Suche nicht an der Wurzel des Dateisystems, sondern im aktuellen Working Directory. Je nachdem, in welches Working Directory wir uns mithilfe von cd gerade begeben haben, bedeutet ein relativer Path Name also immer etwas anderes. Wir können uns laso vorstellen, vor einen relative Path einfach den (absoluten Path) des aktuellen Working Directories davor zu schreiben und erhalten dadurch den absoluten Path, also den Path, der ausgehend von der Dateisystemwurzel zu der gewünschen Datei führt.
cd ..
.. ist ein relativer Path Name. Ausgehend vom aktuellen Working Directory gehen wir ein Verzeichnis zurück
cd ../a
../a ist ein relativer Path Name. Ausgehend vom aktuellen WOrking Directory gehen wir einen Schritt zurück, und von dort (wieder vorwärts) aus zu a
cd ./a
./a ist ebenfalls ein relativer Path. Ausgehend vom aktuellen Working Directory gehen wir zu . (also zu genau dem Verzeichnis, in dem wir gerade sind) und von dort zu a. Man könnte sagen, ./a und a bedeuten dasselbe. Das ist auch richtig so. Doch wozu brauchen wir diese Schreibweise, warum erwähnen wir sie überhaupt? Stellen wir uns vor statt einer Datei a hätten wir eine Datei mit dem Namen -l. Das ist vielliecht etwas ungewöhnlich, aber möglich. Würden wir jetzt das Kommando
ls -a
aufrufen, würde ls denken, dass wir mit -l eine Option angeben wollen (-l = long format), es würde es nicht als Name einer Datei ansehen. Geben wir den Namen der Datei nun also als ./-l an, so bedutet dieser Name immer noch dasselbe aber er fängt nicht mehr mit - an, und das Kommando ls ist nicjht mehr verwirrt.
ls ./-l
Jetzt funktioniert alles, wie gewollt.
<TAB>
Q&E:
- Ist ~/bin ein absoluter Path oder ein relativer Path?
(Antwort: Es ist ein absoluter Path, denn ~ steht für den absoluten Path des Home Directories, an nur hinten die Komponente bin angehängt wird)