De opdrachtregel · oefening
Bekijk wat er staat voordat je iets verandert
Navigeren brengt je naar een pad. Het vertelt je niet wat daar staat: een pad kan verwijzen naar een bestand, een map of helemaal niets.
Voordat je iets kopieert, verplaatst of verwijdert, wil je twee dingen weten: is dit een bestand of een map, en wat staat erin? Deze les beantwoordt beide vragen en maakt de cirkel rond door een eigen bestand te schrijven. Daarmee kan elke volgende oefening bewijs achterlaten.
Onderscheid een bestand van een map
Get-ChildItem
De kolom Mode geeft het antwoord: een item dat met d begint is een map. Get-Item geeft het ene item op één pad terug, wat een gerichtere vraag is:
Get-Item -LiteralPath ./data/README.txt
-LiteralPath betekent “gebruik dit pad precies zoals het is geschreven”. Dat is de juiste keuze wanneer je de exacte naam kent, vooral als een bestandsnaam tekens bevat die PowerShell anders als een patroon zou lezen om meerdere bestanden te vinden. Een later hoofdstuk behandelt die patronen bewust. Hier bedoel je steeds één exact pad.
ls -1F
Daar werken twee opties samen. -1 is het cijfer één en vraagt om één item per regel in plaats van kolommen. -F voegt een markering toe aan bepaalde soorten items. Een / achteraan betekent dat het een map is:
README.md
checkpoint/
data/
destination/
environment-check.py
notes with spaces.txt
report.py
De namen zijn niet veranderd. -F voegt alleen de markeringen toe. Je kunt ook in een map kijken zonder ernaartoe te gaan. Dat is meestal wat je wilt als je alleen iets controleert:
ls -1 data
ls -1F
Daar werken twee opties samen. -1 is het cijfer één en vraagt om één item per regel in plaats van kolommen. -F voegt een markering toe aan bepaalde soorten items. Een / achteraan betekent dat het een map is:
README.md
checkpoint/
data/
destination/
environment-check.py
notes with spaces.txt
report.py
De namen zijn niet veranderd. -F voegt alleen de markeringen toe. Je kunt ook in een map kijken zonder ernaartoe te gaan. Dat is meestal wat je wilt als je alleen iets controleert:
ls -1 data
Lees een kort bestand
Get-Content -LiteralPath ./data/README.txt
Aanhalingstekens houden een pad met spaties bij elkaar, precies zoals in het vorige hoofdstuk:
Get-Content -LiteralPath './notes with spaces.txt'
cat data/README.txt
Een pad met spaties heeft aanhalingstekens nodig. Anders geeft de shell cat drie afzonderlijke argumenten in plaats van één bestandsnaam:
cat "notes with spaces.txt"
cat data/README.txt
Een pad met spaties heeft aanhalingstekens nodig. Anders geeft de shell cat drie afzonderlijke argumenten in plaats van één bestandsnaam:
cat "notes with spaces.txt"
In beide gevallen is lezen een manier van kijken, geen manier van bewerken. Het bestand blijft precies zoals het was. Uitgebreide rechtenkolommen en pipelines zijn later nuttig, maar je hebt ze niet nodig voor de twee vragen van vandaag: waarnaar verwijst dit pad en wat staat er in dat bestand?
Schrijf een bestand vanuit de shell
Vastleggen wat je hebt gevonden is de andere helft van inspecteren. Vanaf hier vraagt elke beoordeelde oefening om bewijs. Zo laat je dat achter.
Set-Content -LiteralPath ./reading.txt -Value 'north: 12'
Add-Content -LiteralPath ./reading.txt -Value 'south: 9'
Get-Content -LiteralPath ./reading.txt
Set-Content schrijft het bestand vanaf het begin en vervangt alles wat er al in stond, zonder waarschuwing en zonder ongedaan maken. Add-Content voegt toe aan wat er staat. Gebruik één keer Set-Content om een bestand te beginnen en Add-Content voor elke volgende regel.
echo "north: 12" > reading.txt
echo "south: 9" >> reading.txt
cat reading.txt
echo toont wat je opgeeft en > stuurt die tekst naar een bestand in plaats van naar het scherm. Geen van beide opdrachten toonde iets, omdat de tekst naar het bestand ging in plaats van naar jou.
Gebruik > bewust. Het maakt het bestand als dat ontbreekt en vervangt de volledige inhoud als het al bestaat, zonder waarschuwing en zonder ongedaan maken. Gebruik >> om een regel toe te voegen aan wat er al staat. Gebruik één keer > om een bestand te beginnen en >> voor elke volgende regel.
echo "north: 12" > reading.txt
echo "south: 9" >> reading.txt
cat reading.txt
echo toont wat je opgeeft en > stuurt die tekst naar een bestand in plaats van naar het scherm. Geen van beide opdrachten toonde iets, omdat de tekst naar het bestand ging in plaats van naar jou.
Gebruik > bewust. Het maakt het bestand als dat ontbreekt en vervangt de volledige inhoud als het al bestaat, zonder waarschuwing en zonder ongedaan maken. Gebruik >> om een regel toe te voegen aan wat er al staat. Gebruik één keer > om een bestand te beginnen en >> voor elke volgende regel.
Oefening: bekijk wat er staat en leg je bevindingen vast
Deze oefening wordt beoordeeld op basis van de werkruimte en begint in /workspace. Gebruik eerst Reset als een eerdere poging destination/inspection.txt heeft achtergelaten.
Controleer of je in
/workspacestaat.Vraag de inhoud van de werkruimte op en herken welke items mappen zijn.
Vraag de inhoud van
dataop en controleer of de meegeleverde structuurREADME.txtenmeasurements.txtbevat.Lees
data/README.txten noteer de waarde namarker-name:.Lees
notes with spaces.txt, met het pad tussen aanhalingstekens.Schrijf je bevindingen in een nieuw bestand op
destination/inspection.txt. Het moet twee regels bevatten: eerst de markeringswaarde uit stap 4 en daarna het aantal items dat je in stap 3 telde.Lees
destination/inspection.txtterug en controleer beide regels voordat je je werk indient.
Bewerk, verplaats of verwijder geen enkel meegeleverd bestand. De beoordeling vereist destination/inspection.txt en controleert of de meegeleverde bewijsbestanden ongewijzigd zijn. Gebruik eerst Reset, zodat andere restanten je eigen inspectie niet verwarren.
Staan de twee regels in de verkeerde volgorde, probeer het bestand dan niet bij te werken. Schrijf het opnieuw vanaf het begin en vervang de hele inhoud. Dit is het ene moment waarop overschrijven de eenvoudige oplossing is in plaats van de gevaarlijke.
Waarom moet het pad tussen aanhalingstekens staan om notes with spaces.txt te lezen?
Een bestand log.txt bevat al één regel. Je schrijft er een nieuwe regel in met de opdracht die een bestand vanaf het begin schrijft. Wat staat er daarna in?
Je kunt een bestand van een map onderscheiden en een bestand lezen en schrijven. Die laatste vaardigheid maakt de rest van het hoofdstuk mogelijk: vanaf hier kan elke oefening bewijs achterlaten dat iets vertelt, in plaats van bewijs dat alleen bestaat.