Was ist die Befehlszeile?
Einen Befehl vor dem Ausführen lesen
Ein Befehl an der Befehlszeile ist kein Satz, den der Computer großzügig auslegt. Jeder Teil hat eine bestimmte Aufgabe. Wenn du diese Teile vor dem Drücken der Eingabetaste liest, erkennst du, was der Befehl berühren wird und wo ein Tippfehler tatsächlich zählt.
Beginnen wir mit einem Befehl, der eine Programmdatei ausführt:
python report.py
Das erste Wort, python, ist der Befehlsname. Er sagt der Shell, was sie aufrufen soll. report.py ist ein Argument: ein Ziel oder Wert, der diesem Befehl übergeben wird.
Argumente sind nicht immer Dateien. Je nach Befehl kann ein Argument ein Verzeichnis, ein neuer Name, ein Suchbegriff oder eine Zahl sein. Oft hat auch die Position eine Bedeutung. Jeder Befehl legt selbst fest, was wohin gehört. cp a b kopiert a nach b, nicht umgekehrt. Nichts an der Schreibweise verrät dir das.
Optionen ändern das Verhalten
Eine Option fordert einen Befehl zu einem anderen Verhalten auf. Unix-artige Werkzeuge verwenden kurze Optionen wie -l und lange wie --all. PowerShell verwendet benannte Parameter wie -Path und -Destination.
Lies diese beiden Befehle, ohne sie auszuführen:
Bash or zsh: cp "project notes.txt" archive/
PowerShell: Copy-Item -Path "project notes.txt" -Destination archive
Beim ersten ist cp der Name, project notes.txt die Quelle und archive/ das Ziel. Die Position bestimmt alles, und du musst die Reihenfolge kennen.
Beim zweiten ist Copy-Item der Name. -Path und -Destination sind benannte Parameter, deren Werte jeweils folgen. Länger, aber viel schwerer zu vertauschen.
Beide drücken dieselbe Absicht in verschiedenen Sprachen aus. Vermische ihre Teile nicht. Eine Bash-Option ist kein PowerShell-Parameter, und ein PowerShell-Befehlsname sagt zsh nichts.
Anführungszeichen halten ein Argument zusammen
Die meisten Shells teilen eine Befehlszeile an Leerzeichen auf. Deshalb kommt project notes.txt als zwei Argumente an, project und notes.txt. Der Befehl sucht dann eine Datei namens project. Anführungszeichen halten es zusammen:
python "weekly report.py"
Die Anführungszeichen sagen der Shell, wo die Argumentgrenzen liegen. Sie werden entfernt, bevor das Programm etwas sieht, und gehören nie zum Dateinamen. In den Shells, die du später kennenlernst, gibt es einfache und doppelte Anführungszeichen. Ihre Unterschiede werden wichtig, sobald Variablen ins Spiel kommen. Vorerst gilt: Verwende die Schreibweise deines Lernwegs und schließe jedes geöffnete Anführungszeichen.
Was bewirkt der Text in Anführungszeichen in python "weekly report.py"?
Der Fehler zeigt, welcher Teil nicht funktioniert
Die Form des Fehlers deutet meistens direkt auf einen Teil der Zeile:
Command not found, also Befehl nicht gefunden, bedeutet: Schau auf das erste Wort. Falsch geschrieben, nicht installiert oder in dieser Shell nicht verfügbar.
Ein Programm startet, findet dann aber eine Datei nicht: Schau auf das Argument und deinen aktuellen Ort.
Unbekannte Option oder unbekannter Parameter: Vergleiche die Option mit der Hilfe für genau diesen Befehl in genau dieser Shell.
Eine Fortsetzungsaufforderung nach dem Drücken der Eingabetaste: Die Shell wartet auf einen unfertigen Teil des Befehls. Prüfe in diesen Beispielen, ob ein öffnendes Anführungszeichen ohne schließendes vorhanden ist. Das genaue Aussehen hängt von der Shell ab. Drücke
Ctrl+Cund tippe die vollständige Zeile erneut.
Der letzte Fall erwischt jeden einmal. Die Shell ist nicht eingefroren. Sie wartet höflich auf den Rest eines begonnenen Strings.
Du tippst pyhton report.py, und die Shell meldet, dass pyhton kein erkannter Befehl ist. Welchen Teil solltest du zuerst prüfen?
Du drückst die Eingabetaste, nachdem du ein öffnendes, aber kein schließendes Anführungszeichen getippt hast. Statt den Befehl auszuführen, zeigt die Shell ihre Fortsetzungsaufforderung. Was ist passiert?
Bevor du irgendwo einen Befehl kopierst, tue vier Dinge: Entferne die Eingabeaufforderung, erkenne den Befehlsnamen, kläre das Ziel jedes Arguments und schlage jede unbekannte Option nach. Wenn du nicht sagen kannst, welche Dateien oder Verzeichnisse er verändern könnte, führe ihn nicht aus.
Als Nächstes wählst du, in welcher Shell du tatsächlich übst, und richtest einen Ort ein, an dem Fehler nicht schaden können.