0%

Dateien, Ordner und Pfade · Übung

Absolute und relative Pfade auflösen

data/observations.csv reicht nicht, um etwas zu finden. Der Pfad sagt dir, wohin du gehen sollst, sobald du weißt, wo du beginnst. Er sagt aber nichts über diesen Startpunkt.

Jeder Pfad wird von einem Startpunkt aus aufgelöst. Ein absoluter Pfad nennt seinen eigenen Startpunkt. Ein relativer Pfad nimmt den Ort, an dem du dich gerade befindest.

Im Dateimanager ist das der Ordner, dessen Inhalt du gerade ansiehst. Sobald du Anweisungen tippst statt klickst, bekommt dieser Ordner einen Fachnamen: das Arbeitsverzeichnis. Derselbe relative Pfad führt von zwei verschiedenen Startordnern zu zwei verschiedenen Dateien.

Zwei Wege zu einer Datei

Angenommen, das Arbeitsverzeichnis ist:

/home/sam/Documents/field-notes

Beide Pfade erreichen dieselbe Datei:

Absolute: /home/sam/Documents/field-notes/data/observations.csv
Relative: data/observations.csv

Der erste / macht den ersten Pfad absolut. Er bedeutet an jedem Ort des Computers dasselbe. Der zweite beginnt mit data, also startet die Auflösung dort, wo du dich gerade befindest.

Wechsle das Arbeitsverzeichnis zu /home/sam/Documents/field-notes/drafts. Derselbe relative Pfad sucht jetzt ein Verzeichnis data in drafts. Dort gibt es keines. Der Pfad hat sich nicht geändert, seine Bedeutung schon.

Um von dort das eigentliche data zu erreichen, gehe zuerst nach oben:

../data/observations.csv

Zwei Punkte, .., bedeuten das Elternverzeichnis. Ein Punkt, ., bedeutet das aktuelle Verzeichnis. Deshalb landen ./data/observations.csv und data/observations.csv am selben Ort.

Das folgende Diagramm verfolgt beide Startpunkte zur selben absoluten Datei: zuerst von field-notes, dann von drafts.

Ein Projektbaum trennt die Dateisystemwurzel von Sams persönlichem Verzeichnis. Von field-notes aus lautet der relative Pfad data/observations.csv, von drafts aus ../data/observations.csv. Der absolute Pfad ist von beiden Orten aus derselbe.

Das Ziel ist nicht umgezogen. Nur die Wegbeschreibung hat sich geändert, weil dein Startpunkt sich geändert hat.

Dieselbe Überlegung unter Windows

Arbeitsverzeichnis:

C:\Users\Sam\Documents\field-notes

Beide erreichen die Datei:

Absolute: C:\Users\Sam\Documents\field-notes\data\observations.csv
Relative: data\observations.csv

Der Laufwerksbuchstabe zusammen mit dem Backslash nach dem Doppelpunkt macht den ersten Pfad absolut. In C:data\observations.csv fehlt dieser Backslash. Es ist kein vollständiger Pfad von der Laufwerkswurzel aus. Schreibe C:\..., wenn du absolut meinst. Dann entsteht die Mehrdeutigkeit gar nicht.

Von C:\Users\Sam\Documents\field-notes\drafts aus:

..\data\observations.csv

Dein Arbeitsverzeichnis ist /home/sam/Documents/field-notes/drafts. Welcher relative Pfad erreicht /home/sam/Documents/field-notes/data/observations.csv?

Einen Pfad auf Papier auflösen

Tu das, bevor du einen Befehl etwas ändern lässt, und wiederhole es, bis es automatisch geht:

  1. Schreibe das Arbeitsverzeichnis auf.

  2. Entscheide, ob der Pfad an einer Wurzel neu beginnt oder an deinem aktuellen Ort startet.

  3. Gehe die Segmente von links nach rechts durch. Bleibe bei . stehen, gehe bei .. nach oben und bei einem Namen hinab.

  4. Schreibe auf, wo du gelandet bist, und vergleiche es mit dem beabsichtigten Ziel.

Versuch es: Arbeitsverzeichnis C:\Users\Sam\Documents\field-notes\data\raw, Pfad ..\..\drafts\outline.txt:

Start:  C:\Users\Sam\Documents\field-notes\data\raw
..      C:\Users\Sam\Documents\field-notes\data
..      C:\Users\Sam\Documents\field-notes
drafts  C:\Users\Sam\Documents\field-notes\drafts
target: C:\Users\Sam\Documents\field-notes\drafts\outline.txt

Das braucht vier Zeilen und kein Raten. Es funktioniert auf jeder Plattform auf dieselbe Weise.

Arbeitsverzeichnis /home/sam/field-notes/data/raw, Pfad ../../drafts/outline.txt. Bringe die Auflösungsschritte in die richtige Reihenfolge:

Ziehe die Optionen in die richtige Reihenfolge oder verwende die Pfeiltasten.

  • .. führt zu /home/sam/field-notes

  • drafts führt hinab zu /home/sam/field-notes/drafts

  • Beginne bei /home/sam/field-notes/data/raw

  • .. führt zu /home/sam/field-notes/data

  • outline.txt benennt die Datei unter /home/sam/field-notes/drafts/outline.txt

Wenn sich dieselbe relative Schreibweise heute anders verhält, kann ein geändertes Arbeitsverzeichnis die Ursache sein. Vergleiche den heutigen Startpunkt und den Zielbaum, bevor du etwas verschiebst. Ein vom falschen Ort aus aufgelöster Pfad kann ein anderes Ziel erreichen oder gar nichts benennen. Beides liefert Hinweise darauf, wo der Weg erstmals nicht mehr passte.

Du hast all das ohne Shell gemacht. In der letzten Lektion dieses Kapitels wenden wir es auf ein Projekt an, das du auch in sechs Monaten noch wiederfindest.