0%

Die Befehlszeile · Übung

Kontrollpunkt: Befehlszeile

Eine Anfrage kommt an: Hier ist ein Quellordner, hierhin gehört Geprüftes, und hier ist eine Referenzdatei, die unverändert bleiben muss.

Hier werden aus einzelnen Befehlen ein Verfahren: orientieren, untersuchen, ein genaues Ziel ändern, prüfen. Du kennst bereits jeden benötigten Befehl. Hier kommt nichts Neues hinzu.

Ausgangszustand

Bewertet wird der Arbeitsbereich. Verwende zuerst Reset, falls ein früherer Versuch checkpoint/reviewed hinterlassen hat. Der Teilbaum des Kontrollpunkts beginnt so:

/workspace/checkpoint
├── inbox
│   ├── brief.txt
│   └── draft.txt
└── reference
    └── keep.txt

Mit diesen Inhalten:

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.

Öffne das Terminal und bestätige deinen Ort /workspace. Falls du woanders bist, wechsle vor dem Beginn dorthin.

Deine Aufgabe

1. Orientieren und untersuchen

Liste checkpoint auf und sieh dir seine beiden bereitgestellten Verzeichnisse an. Wechsle hinein, bestätige deine Ankunft bei /workspace/checkpoint und prüfe dann, ob inbox/brief.txt eine Datei ist. Lies ihren Inhalt.

Führe jetzt absichtlich Folgendes aus und lies den Fehler sorgfältig:

cat ./inbox/missing.txt

Dieser Fehler gehört zur Übung. Beachte, was er verrät: Die Shell hat den Befehl gefunden und ausgeführt. Der Befehl konnte den übergebenen Pfad nicht finden. Die Befehlssuche war erfolgreich, das Ziel existierte nicht. Zwei verschiedene Schichten, die die Meldung beim genauen Lesen unterscheidet.

2. Die geprüfte Ausgabe aufbauen

Finde zurück, indem du inbox auflistest und die tatsächlich vorhandene Datei brief.txt verwendest. Erstelle reviewed, kopiere inbox/brief.txt nach reviewed/brief.txt und erhalte die Quelle. Kopiere inbox/draft.txt in den Prüfungsordner und benenne diese Kopie dann in final.txt um. Lass beide Dateien in inbox an ihrem Ort.

3. Ein entbehrliches Ziel entfernen

Erstelle eine leere Datei reviewed/remove-me.tmp, bestätige sie in einer Auflistung, sieh dir eine Löschvorschau an, falls deine Shell das unterstützt, und lösche dann genau diese Datei.

4. Den Abschluss festhalten und prüfen

Schreibe das einzelne Wort complete nach reviewed/status.txt. Das ist ein einfacher Abschlussnachweis. Die vorige Lektion hat die Umgebungsvererbung bereits mit ihrem bereitgestellten Kindprogramm gezeigt. Liste den Prüfungsordner auf und lies vor der Abgabe die drei Ergebnisdateien.

Grenzen und erforderlicher Endzustand

Arbeite nur unterhalb von /workspace/checkpoint. Benenne jeweils ein Ziel, statt mehrere gleichzeitig auszuwählen. Verwende keine Optionen, die eine Operation erweitern oder erzwingen. Ändere oder lösche weder reference/keep.txt noch inbox/brief.txt oder inbox/draft.txt.

Das fehlgeschlagene Lesen in Schritt 1 ist eine Diagnoseübung. Erstelle nicht missing.txt, um die Meldung verschwinden zu lassen. Einen Fehler verschwinden zu lassen ist nicht dasselbe, wie ihn zu verstehen. Das Kapitel zur Fehlersuche baut auf diesem Unterschied auf.

Dein endgültiger Baum muss all das erfüllen:

  • inbox/brief.txt und inbox/draft.txt existieren beide noch mit ihren ursprünglichen Zeilen.

  • reviewed/brief.txt stimmt mit inbox/brief.txt überein.

  • reviewed/final.txt enthält den ursprünglichen Inhalt von inbox/draft.txt. Die Zwischenkopie reviewed/draft.txt existiert nicht mehr.

  • reviewed/status.txt enthält exakt den Abschlussnachweis complete.

  • inbox/missing.txt existiert weiterhin nicht. Der absichtliche Fehler war ein Hinweis, keine Aufforderung zum Erstellen.

  • reviewed/remove-me.tmp existiert nicht.

  • In reference/keep.txt steht weiterhin This reference file must not change.

Prüfe vor der Abgabe selbst: Liste reviewed auf und lies dann jede der vier oben genannten Dateien. Die Auflistung muss brief.txt, final.txt und status.txt enthalten und keine temporäre Datei. Die Inhalte müssen lauten:

Check the source before you copy it.
Rename this draft when you move it.
complete
This reference file must not change.

Lass diesen Zustand bestehen und klicke auf Check my work.

Beim Lesen von ./inbox/missing.txt wird gemeldet, dass der Pfad nicht gefunden werden kann. Was ist die beste erste Reaktion?

Die Prüfung liest deinen endgültigen Baum statt deiner Befehlshistorie. Das ist beabsichtigt. Wer diesen Ordner übernimmt, interessiert sich nicht für die Tastenanschläge, die ihn erzeugt haben. Entscheidend ist, dass die geprüften Dateien vorhanden sind, die Originale überlebt haben und die Referenz unverändert ist.

Du hast die Befehlszeile mit einem Ablauf abgeschlossen, der auf deinem eigenen Computer genauso funktioniert wie hier. Als Nächstes: Was tust du, wenn ein Befehl sich unerwartet verhält? Mit welcher Shell sprichst du tatsächlich, wie wird ein Befehlsname überhaupt gefunden, und wie erkennst du die fehlerhafte Schicht?