0%

De opdrachtregel · oefening

Maken, kopiëren, verplaatsen en verwijderen

Je moet vanuit een shell bestanden opnieuw ordenen. Misschien ben je hier rechtstreeks vanuit een andere cursus terechtgekomen. Vier bewerkingen dekken bijna alles: maken, kopiëren, verplaatsen en verwijderen. Elke bewerking verandert de structuur, dus controleer telkens achteraf of die heeft gedaan wat je bedoelde.

De terminal naast deze les bevat een tijdelijk gehost oefenproject in /workspace, los van je eigen computer. Voer de voorbeelden en de beoordeelde oefening daar uit. Voordat je iets verandert, moet je je locatie kunnen controleren, navigeren, de inhoud van een map opvragen en een bestand lezen waarvan het pad tussen aanhalingstekens staat. Heb je dat nog niet gedaan, volg dan deze lessen op volgorde en kom hier terug:

Kopiëren

Een kopie laat het origineel ongemoeid en maakt ergens anders een tweede item. Begin in /workspace:

mkdir destination/scratch
cp README.md destination/scratch/readme-demo.md
cat destination/scratch/readme-demo.md

cp krijgt eerst de bron en daarna de bestemming. Niets in de regel herinnert je eraan welke welke is. Die volgorde moet je dus zelf onthouden; ze omdraaien is de fout waartoe deze opdracht uitnodigt.

De kopie achteraf lezen kost één opdracht en laat je een verkeerd getypte bestemming ontdekken. Anders blijft die fout veel langer onzichtbaar.

Verplaatsen is ook hernoemen

Verplaatsen verandert het pad van een item. Dat omvat twee taken die mensen vaak als afzonderlijk zien: geef het bestand een andere map en het wordt verplaatst; geef het binnen dezelfde map een andere naam en het wordt hernoemd. Voor beide gebruik je één opdracht, omdat ze voor het bestandssysteem dezelfde wijziging zijn.

touch destination/scratch/draft.txt
mv destination/scratch/draft.txt destination/scratch/final.txt
ls -1 destination/scratch

Het overzicht toont final.txt en geen draft.txt. Dat is het zichtbare verschil met kopiëren: in dit voorbeeld binnen hetzelfde bestandssysteem bestaat nu het bestemmingspad en niet meer het bronpad.

Let op één ding: shells hanteren niet allemaal dezelfde regel als de bestemming al bestaat. PowerShells Move-Item geeft normaal een fout wanneer de doelbestandsnaam al bestaat, terwijl gangbare Unix-implementaties van mv een bestaand bestand kunnen vervangen. De veilige regel werkt overal: bekijk de bestemming voordat je verplaatst en kies een nieuwe doelnaam als er al iets belangrijks staat.

Een pad met spaties moet nog steeds tussen aanhalingstekens staan, precies zoals bij het lezen van bestanden:

cp "notes with spaces.txt" destination/scratch/notes-demo.txt

Zonder de aanhalingstekens splitst de shell de naam bij de spaties en gaat de opdracht op zoek naar een bestand met de naam notes.

Verwijderen

Behandel verwijderen op de opdrachtregel als een bewerking die je niet ongedaan kunt maken. Die slaat de Prullenbak vaak over. Of je om bevestiging wordt gevraagd hangt af van de opdracht en de instellingen. Je hebt zojuist final.txt gemaakt en hebt het niet nodig. Daarom is dit exacte tijdelijke pad geschikt om veilig mee te oefenen:

rm destination/scratch/final.txt

rmdir verwijdert een map, maar alleen een lege. Zit er nog iets in, dan weigert de opdracht dat en meldt het. Dat maakt het een nuttige manier om te ontdekken of een map die je leeg acht dat ook werkelijk is.

Ctrl+C kan een opdracht onderbreken die nog draait. Het maakt een verwijdering of andere wijziging die al klaar is niet ongedaan.

De gewoonte om vast te houden is geen angst, maar precisie: benoem exact wat je bedoelt. Elke verwijdering hier noemt één tijdelijk doel volledig, zodat het hele pad zichtbaar is voordat je op Enter drukt.

Oefening: bouw een gecontroleerde oefenmap

Deze oefening wordt beoordeeld op basis van de werkruimte en begint in /workspace. Gebruik eerst Reset als een eerdere poging destination/file-operations heeft achtergelaten.

Werk vier stappen af en bekijk na elke stap het resultaat:

  1. Oriënteer je en bescherm de bronnen. Controleer of je in /workspace staat en of zowel README.md als notes with spaces.txt aanwezig is.

  2. Bereid voor en kopieer. Maak destination/file-operations. Kopieer README.md ernaartoe als README-copy.md, lees de kopie en kopieer daarna notes with spaces.txt ernaartoe als notes-copy.txt.

  3. Verplaats de kopie. Hernoem notes-copy.txt naar renamed-notes.txt. Het meegeleverde origineel blijft in de hoofdmap van de werkruimte, omdat latere lessen het nog lezen.

  4. Verwijder alleen tijdelijk oefenmateriaal. Maak binnen destination/file-operations een lege map met de naam empty en controleer die in een overzicht. Verwijder die daarna via de hierboven beschreven werkwijze voor jouw shell. Maak en bekijk in dezelfde map een leeg bestand met de naam delete-me.txt en verwijder vervolgens exact dat bestand. Controleer tot slot of de twee vereiste bestanden er nog zijn en de twee tijdelijke paden verdwenen zijn.

Blijf binnen /workspace, benoem één doel tegelijk in plaats van meerdere tegelijk te selecteren en verwijder niets behalve destination/file-operations/empty en destination/file-operations/delete-me.txt uit stap 4. Laat README.md en het meegeleverde notitiebestand ongewijzigd.

Meldt het verwijderen van een map dat er nog inhoud is, of vraagt de opdracht of onderliggende items verwijderd moeten worden, stop dan in plaats van te bevestigen. Bekijk het exacte pad. Gebruik Reset als je deze tijdelijke werkruimte niet met zekerheid kunt herstellen. Druk op Check my work wanneer de eindtoestand aan de vier stappen voldoet.

Je verplaatst draft.txt naar final.txt binnen dezelfde map. Wat bevat de map daarna?

In stap 2 en 3 kopieer je het notitiebestand en hernoem je de kopie, in plaats van het origineel te hernoemen. Waarom?

Je kunt maken, kopiëren, verplaatsen, hernoemen en verwijderen. Je weet ook welke bewerkingen het origineel laten staan. Hierna volgt een waarde die in de sessie leeft in plaats van in een bestand.