De opdrachtregel · oefening
Afsluitende oefening: de opdrachtregel
Er komt een verzoek binnen: hier is een bronmap, hier moeten de bestanden na beoordeling naartoe en hier is één referentiebestand dat ongewijzigd moet blijven.
Hier worden losse opdrachten een werkwijze: oriënteren, inspecteren, één exact doel veranderen, controleren. Je kent alle opdrachten die je nodig hebt al. Hier wordt niets nieuws geïntroduceerd.
Beginsituatie
Deze oefening wordt beoordeeld op basis van de werkruimte. Gebruik eerst Reset als een eerdere poging checkpoint/reviewed heeft achtergelaten. Het onderdeel checkpoint van de mappenstructuur begint zo:
/workspace/checkpoint
├── inbox
│ ├── brief.txt
│ └── draft.txt
└── reference
└── keep.txt
met deze inhoud:
inbox/brief.txt: Check the source before you copy it.
inbox/draft.txt: Rename this draft when you move it.
reference/keep.txt: This reference file must not change.
Open de terminal en controleer of je in /workspace staat. Ga daar eerst naartoe als dat niet zo is.
Je opdracht
1. Oriënteer je en bekijk wat er staat
Vraag de inhoud van checkpoint op en bekijk de twee meegeleverde mappen. Ga naar die map, controleer of je in /workspace/checkpoint bent aangekomen en controleer daarna of inbox/brief.txt een bestand is. Lees de inhoud.
Voer nu bewust deze opdracht uit en lees de foutmelding zorgvuldig:
Get-Content -LiteralPath ./inbox/missing.txt
cat ./inbox/missing.txt
cat ./inbox/missing.txt
Die fout hoort bij de oefening. Let op wat de melding je vertelt: de shell heeft de opdracht gevonden en uitgevoerd, maar de opdracht kon het opgegeven pad niet vinden. De opdracht opzoeken lukte; het doel bestond niet. Twee verschillende lagen, en de melding maakt dat onderscheid als je die leest.
2. Maak de beoordeelde uitvoer
Herstel je door de inhoud van inbox op te vragen en de brief.txt te gebruiken die er werkelijk staat. Maak reviewed, kopieer inbox/brief.txt naar reviewed/brief.txt en behoud de bron. Kopieer inbox/draft.txt naar de map voor beoordeelde bestanden en hernoem die kopie daarna naar final.txt. Laat beide bestanden in de inbox staan.
3. Verwijder één tijdelijk doel
Maak een lege reviewed/remove-me.tmp, bekijk die in een overzicht, bekijk vooraf wat verwijderen zou doen als je shell dat ondersteunt en verwijder daarna exact dat bestand.
4. Leg de voltooiing vast en controleer die
Schrijf het ene woord complete naar reviewed/status.txt. Dit is een eenvoudig voltooiingsbewijs; de vorige les toonde het erven van omgevingsvariabelen al aan met het meegeleverde kindprogramma. Vraag de inhoud van de map voor beoordeelde bestanden op en lees de drie resultaatbestanden voordat je je werk indient.
Beperkingen en vereiste eindtoestand
Werk alleen onder /workspace/checkpoint. Benoem één doel tegelijk in plaats van meerdere tegelijk te selecteren en gebruik geen opties die een bewerking verbreden of afdwingen. Verander of verwijder reference/keep.txt, inbox/brief.txt en inbox/draft.txt niet.
De mislukte leespoging in stap 1 is een oefening in diagnose. Maak geen missing.txt om de melding te laten verdwijnen. Een fout laten verdwijnen is niet hetzelfde als die begrijpen. Het hoofdstuk over probleemoplossing bouwt op dat verschil voort.
Je uiteindelijke structuur moet aan al deze voorwaarden voldoen:
inbox/brief.txteninbox/draft.txtbestaan allebei nog met hun oorspronkelijke regels.reviewed/brief.txtis gelijk aaninbox/brief.txt.reviewed/final.txtbevat de oorspronkelijke inhoud vaninbox/draft.txt; het tussenliggendereviewed/draft.txtbestaat niet meer.reviewed/status.txtbevat exact het voltooiingsbewijscomplete.inbox/missing.txtbestaat nog steeds niet. De bewuste fout was bewijs, geen opdracht om het bestand te maken.reviewed/remove-me.tmpbestaat niet.reference/keep.txtbevat nog steedsThis reference file must not change.
Controleer het zelf voordat je je werk indient: vraag de inhoud van reviewed op en lees daarna elk van de vier hierboven genoemde bestanden. Het overzicht moet brief.txt, final.txt en status.txt tonen en geen tijdelijk bestand. De inhoud moet zijn:
Check the source before you copy it.
Rename this draft when you move it.
complete
This reference file must not change.
Laat die toestand zo en druk op Check my work.
Bij het lezen van ./inbox/missing.txt verschijnt een melding dat het pad niet gevonden kan worden. Wat is de beste eerste reactie?
De beoordeling leest je uiteindelijke structuur, niet je opdrachtgeschiedenis. Dat is bewust. Wie deze map van je overneemt geeft niet om de toetsaanslagen waarmee die is gemaakt. Die wil dat de beoordeelde bestanden er zijn, de originelen behouden bleven en het referentiebestand ongewijzigd is.
Je bent klaar met de opdrachtregel en hebt een werkwijze die op je eigen computer hetzelfde werkt als hier. Hierna leer je wat je doet wanneer een opdracht zich anders gedraagt dan verwacht: met welke shell je werkelijk werkt, hoe een opdrachtnaam überhaupt gevonden wordt en hoe je herkent welke laag misging.