In Pfadnamenskomponenten unter Unix dürfen nur zwei Zeichen nicht verwendet werden: das Nullzeichen, das Zeichenfolgen in C (der Sprache des Kernels) abschließt, und der Schrägstrich, der als Pfadtrennzeichen reserviert ist. Außerdem können Pfadkomponenten keine leeren Zeichenfolgen sein.
In einem Pfadnamen gibt es also nur zwei Arten von Token: einen Schrägstrich und eine Komponente.
Angenommen, ohne neue Token hinzuzufügen , möchten wir zwei Arten von Pfaden unterstützen, relative und absolute. Außerdem möchten wir in der Lage sein, auf das Stammverzeichnis zu verweisen, das keinen Namen hat (es hat kein übergeordnetes Verzeichnis, das ihm einen Namen geben würde).
Wie können wir relative Pfade und absolute Pfade darstellen und auf das Stammverzeichnis verweisen, indem wir nur den Schrägstrich verwenden?
Die naheliegendste Möglichkeit, eine Sprache zu erweitern (mit Ausnahme der Einführung eines neuen Tokens), besteht darin, eine neue Syntax zu erstellen: Geben Sie Kombinationen von Tokens mit ungültiger Syntax eine neue Bedeutung.
Pfade, die mit einem Schrägstrich beginnen, sind nicht sinnvoll. Verwenden Sie daher einen führenden Schrägstrich als Markierung, die angibt, dass dieser Pfad absolut und nicht relativ ist.
Ein Pfad, der nur einen Schrägstrich enthält, ist ebenfalls ungültig. Weisen Sie ihm also die Bedeutung "das Stammverzeichnis" zu.
Diese beiden Bedeutungen hängen zusammen, weil ein absoluter Pfad im Stammverzeichnis sucht. Mit anderen Worten, ein führender Schrägstrich hat die Bedeutung:
- Navigieren Sie zum Stammverzeichnis und verwenden Sie den Schrägstrich.
- Wenn der Pfad mehr Material enthält, verarbeiten Sie es als relativen Pfad. Andernfalls sind Sie fertig.
Dann könnten wir genauso gut einen abschließenden Schrägstrich einfügen, was bedeuten kann, dass dieser Pfad besagt, dass die letzte Pfadkomponente der Name eines Verzeichnisses ist und keine reguläre Datei oder ein anderes Objekt. Dieser abschließende Schrägstrich bezeichnet dieses Verzeichnis ähnlich wie der führende Schrägstrich bezeichnet das Stammverzeichnis. "
Bei all dieser obigen Syntax haben wir immer noch eine Syntax mit einer nicht zugewiesenen Bedeutung: doppelte Schrägstriche, dreifache Schrägstriche und so weiter.
Warum nicht einfach ein anderes Token einführen und es anders machen? Dies liegt wahrscheinlich daran, dass die Designer im Allgemeinen minimalistische Ansätze gewählt haben. (Warum zeigt der ed
Editor nur ein an, ?
wenn Sie etwas falsch machen?) Der Schrägstrich ist einfach einzugeben und erfordert keine Verschiebung. Eine Pfadsprache mit nur zwei Tokentypen (Komponente und Schrägstrich) ist leicht zu merken und zu verwenden.
Ein weiterer wichtiger Gesichtspunkt ist, dass einfache Manipulationen von Pfaden nur mit Zeichenfolgendarstellungen möglich sind. Zum Beispiel können wir die absoluten Pfade zu einem neuen übergeordneten Verzeichnis ganz einfach "re-rooten":
OLD_PATH=/old/path
NEW_HOME=/new/home
NEW_PATH="$NEW_HOME$OLD_PATH" /new/home/old/path
Dies würde nicht funktionieren, wenn wir absolute Pfade auf eine andere Art und Weise angeben würden, wie zum Beispiel ein führendes Dollarzeichen oder was auch immer:
OLD_PATH=^old/path # ^ means absolute path
NEW_HOME=^new/home
# now we need more string kung-fu than just catenation
NEW_PATH="$NEW_HOME/${OLD_PATH#^}"
Diese Art der Codierung wird in einigen Fällen noch benötigt, wenn mit Pfaden im Unix-Stil gearbeitet wird, es gibt jedoch weniger davon.
cd /home
dascd /home/
Anhängen/
am Ende eines leeren Namens den Zugriff auf dieses Verzeichnis ermöglicht.