0%

Opdrachten, configuratie en fouten · oefening

Bekijk globovereenkomsten voordat je handelt

Een bestandsnaampatroon scheelt typewerk, maar kan ook meer bestanden selecteren dan je bedoelde. De veilige gewoonte is eenvoudig: voorspel de overeenkomsten, bekijk ze met een opdracht die een overzicht toont en gebruik pas daarna hetzelfde patroon met een opdracht die iets verandert.

Een patroon beschrijft namen

In Bash en zsh werkt de shell een globpatroon uit tot overeenkomende paden voordat het programma draait. PowerShell-opdrachten accepteren ook paden met jokertekens, al hangt het exacte gedrag af van de PowerShell-opdracht die het pad verwerkt. Neem niet aan dat elk randgeval tussen shells hetzelfde werkt.

Dit zijn de nuttige gevallen voor beginners:

PatroonBetekenis in Bash en zshVeilig advies voor alle platformen
*Nul of meer tekensVerwacht een brede selectie en bekijk die vooraf.
?Precies één tekenBekijk de selectie vooraf: het gedrag van jokertekens in PowerShell kan afhangen van de opdracht en de provider.
[abc]Eén van de genoemde tekensBehandel patronen met vierkante haken als shellspecifiek totdat een voorvertoning ze bevestigt.

Het patroon data/*.txt selecteert tekstbestanden direct in data. Het betekent niet “doorzoek elke onderliggende map” en bekijkt de bestandsinhoud niet. Het patroon data/Ju??.txt heeft twee posities van elk één teken na Ju. Het past dus op zowel data/June.txt als data/July.txt in de werkruimte van dit hoofdstuk.

Oefen in de tijdelijke werkruimte

Begin met een geresette werkruimte van hoofdstuk 7. Je werkmap is /workspace en deze relevante paden bestaan al:

/workspace
├── data
│   ├── January.txt
│   ├── June.txt
│   ├── July.txt
│   └── summary.csv
└── destination
    └── README.txt

Voorspel eerst het resultaat van data/Ju??.txt. Gebruik daarna de getoonde werkwijze voor jouw terminal om hetzelfde patroon vooraf te bekijken, te kopiëren en te controleren.

ls data/Ju??.txt
cp data/Ju??.txt destination/
ls destination

Bash werkt het patroon uit voordat cp draait. De voorvertoning en de kopie gebruiken dezelfde tekens, zodat je de bedoelde selectie met het resultaat kunt vergelijken.

Succes heeft drie waarneembare onderdelen:

  1. destination bevat README.txt, June.txt en July.txt.

  2. data bevat nog steeds de oorspronkelijke bestanden June.txt en July.txt.

  3. Noch January.txt noch summary.csv is gekopieerd.

Wijkt het resultaat af, reset dan de werkruimte van het hoofdstuk en bekijk de selectie opnieuw. Herstel een te brede selectie niet door meerdere bestanden te verwijderen. Een reset is de bekende herstelroute voor deze tijdelijke oefening.

Je wilt elk .txt-bestand dat direct in data staat naar destination kopiëren. Welke eerste stap past de veilige gewoonte uit deze les het beste toe?

Je gebruikte een patroon eerst als vraag en daarna als handeling. Diezelfde volgorde doet ertoe wanneer een opdracht naar een programmabestand verwijst: stel eerst de werkmap en het doel vast en voer het daarna uit.