0%

Bestanden, mappen en paden

Een pad lezen

Een boom is gemakkelijk te lezen als iemand die voor je tekent. Software krijgt geen tekening, maar een regel tekst. Die regel moet de hele route bevatten.

Die opgeschreven route is een pad.

Dit is de route naar observations.csv op een Windows-computer:

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

Lees het van links naar rechts en het vormt een routebeschrijving:

  1. Begin bij de root van station C:\.

  2. Ga naar Users.

  3. Daarna naar Sam, dan Documents, dan field-notes.

  4. Vervolgens naar data.

  5. Stop bij het bestand observations.csv.

Elke benoemde stap is een padsegment. Windows scheidt die gewoonlijk met een backslash.

Hetzelfde project op Linux:

/home/sam/Documents/field-notes/data/observations.csv

De / vooraan is de root van het bestandssysteem. De overige slashes scheiden de segmenten home, sam, Documents, field-notes, data en observations.csv.

En op macOS:

/Users/sam/Documents/field-notes/data/observations.csv

De drie schrijfwijzen verschillen, maar de redenering erachter niet: zoek het startpunt en volg vervolgens steeds één segment totdat je het doel bereikt.

Scheidingstekens horen niet bij de namen

Een scheidingsteken geeft een grens aan. Het hoort bij geen van de twee buren. De Windows-map in dat pad heet data, niet \data en ook niet data\.

Segmenten kunnen spaties, koppeltekens en punten bevatten. In dit pad is project notes.txt één bestandsnaam met toevallig een spatie in het midden:

C:\Users\Sam\Documents\field-notes\project notes.txt

Onthoud dat voorbeeld. Bij een shell kan die spatie voor echte problemen zorgen en lossen aanhalingstekens het op. De aanhalingstekens helpen de shell de regel goed op te splitsen. Ze maken nooit deel uit van de bestandsnaam.

Welk item is één padsegment in /home/sam/Documents/field-notes/data/observations.csv?

Onderzoek een pad voordat je iets verandert

“Dat pad bestaat niet” is een van de meest voorkomende meldingen die je zult zien. De eerste reactie erop is meestal verkeerd. Mensen voegen slashes toe of verplaatsen bestanden en maken van één probleem er drie.

Vergelijk het pad segment voor segment met de boom en let op deze vijf dingen:

  • Verkeerd startpunt. C:\ en / zijn verschillende werelden. Een Windows-pad dat je in een macOS-applicatie plakt, duidt daar helemaal niets aan.

  • Ontbrekend of herhaald segment. field-notes\data\data\observations.csv gaat twee keer data in. Dat zie je niet door de hele reeks vluchtig te bekijken, maar door de route te volgen.

  • Afwijkende naam. observation.csv en observations.csv zijn verschillende bestanden. Sommige gangbare bestandssystemen negeren standaard het verschil tussen hoofdletters en kleine letters. Andere onderscheiden Report.txt van report.txt. Neem de exacte spelling en hoofdletters over die je ziet, zodat hetzelfde pad op beide soorten systemen werkt.

  • Verborgen extensie. Een bestand dat als observations.csv wordt getoond, kan werkelijk observations.csv.txt heten.

  • Verkeerd scheidingsteken. Windows toont \, Unix gebruikt /. Sommige Windows-hulpmiddelen accepteren beide. Dat is gemak, geen reden om paden willekeurig te herschrijven.

Zoek het eerste segment dat niet met de boom overeenkomt. Alles daarna is onbereikbaar. Dat segment is dus het enige dat je nu moet corrigeren.

De boom bestaat uit field-notes/ met daarin data/ met daarin raw/. Een applicatie meldt dat ze field-notes/data/raw/notes/monday.txt niet kan openen. Welk segment moet je eerst onderzoeken?

Je kunt nu op alle drie de platforms wisselen tussen een boom en een opgeschreven route. Eén vraag staat nog open en blijkt bijzonder belangrijk: begint een pad bij een root, of begint het waar je op dat moment staat?