Kommandozeile (= bash = git-bash)

Auf der Kommandozeile (auch Terminal oder Konsole oder bash genannt), können per Tastatureingaben Programme gestartet werden, kann im Dateisystem navigiert werden, können Dateien manipuliert werden (kopieren, umbenennen, verschieben) und kann eigentlich alles gemacht werden, was auf einem Computer möglich ist.

Das mag auf den ersten Blick kompliziert erscheinen, hat aber einige Vorteile:

Grundlegende Struktur eines Kommandos

Die Struktur eines bash-Kommandos ist folgende:

command arg1 arg2 arg3

wobei

bash-Kommandos werden mit der Return-Taste abgeschickt.

Beispiele:

cd /c/ofi4XXX/
unzip adventurequest.zip
python guide.py

Kommandozeilenargumente werden durch Leerschläge getrennt. Das ist ein Problem, wenn Dateinamen Leerschläge enthalten. Diese müssen dann entweder durch Backslashes geschützt werdem oder der ganze Dateinamen muss zwischen Anführungszeichen (doppelte oder einfache) geschrieben werden. Z.B.

cd "OneDrive - xyz Blabla"
cd OneDrive\ -\ xyz\ Blabla

Die Tabulatortaste kann zur Ergänzung benutzt werden, wandelt dabei aber immer in die zweite Version mit Backslashes um

Auswahl einiger Befehle und Programme

ls (list files)

ls zeigt die Dateien im aktuellen Verzeichnis an. Nützliche Optionen:

cd (change directory)

cd wechselt das aktuelle Verzeichnis.

mkdir (make directory)

mkdir legt ein neues Verzeichnis an:

rmdir (remove directory)

rmdir löscht ein leeres Verzeichnis

pwd (print working directory)

pwd zeigt das aktuelle Verzeichnis an. Dieses wird normalerweise schon automatisch auf der Kommandozeile angezeigt.

python

cp (copy)

cp kopiert Dateien.

mv (move)

mv verschiebt Dateien (bzw. benennt diese um).

rm (remove)

rm löscht Dateien. Mit Vorsicht zu gebrauchen. Die Dateien werden dabei nicht in den Papierkorb verschoben, d.h. die Löschung ist unwiderruflich.

unzip (zip-Datei entpacken)

unzip dateiname.zip

Entpackt die Datei in dateiname.zip ins aktuelle Verzeichnis.

zip (Verzeichnis inklusive Unterverzeichnisse in eine zip-Datei zusammenpacken)

zip -r paeckchen.zip verzeichnisname

Packt das Verzeichnis 'verzeichnisname inklusive aller Unterverzeichnisse (wegen -r für rekursiv) in eine Zip-Datei namens paeckchen.zip.

ACHTUNG: Das Verzeichnis (= die Quelle) steht hier am Ende des Befehls (als letztes Argument), das Ziel ist das erste Argument.

notepad (Text-Editor)

Normalerweise startet notepad den Windows Text-Editor “Notepad”, der aber sehr limitiert ist. Wir haben ein alias definiert, damit mit diesem Befehl notepad++ gestartet wird.

Damit können auch gleich Dateien geöffnet werden, indem diese auf der Kommandozeile als Argumente angegeben werden. Z.B.

alias (Kurznamen für Befehle)

Der Befehl alias bietet sich an, um eigene Kommandos zusammenzustellen.

Ergänzen Sie das obige ofi-Alias wie folgt am Ende der Datei ~/.bashrc:

  • Öffnen Sie die Datei aus der bash per notepad ~/.bashrc in NotePad++.
  • Ergänzen Sie am Ende der Datei die Zeile alias ofi='cd /c/ofi4XXX' .
  • Speichern Sie die Datei und schliessen Sie NotePad++.
  • Mit source ~/.bashrc (in der bash) laden Sie die neue Datei (statt eines Neustarts). Das alias ofi sollte jetzt definiert und einsatzbereit sein. Probieren Sie es aus.

Adventure auf der bash Kommandozeile

  • Speichern Sie die folgende Zip-Datei in C:\ofi4XXX\ (mit Link speichern unter)adventurequest.zip.
  • Öffnen Sie git-bash und navigieren Sie in dieses Verzeichnis mit dem Alias ofi oder ausführlich per cd /c/ofi4XXX.
  • Überprüfen mit dem Kommando ls, ob die zip-Datei auch dort liegt.
  • Entpacken Sie das zip-Archiv mit unzip adventurequest.zip
  • Überprüfen Sie wieder mit ls, ob auch ein neues Verzeichnis entstanden ist.
  • Wechseln Sie in das neue Verzeichnis mit cd adventurequest Tab Enter.
  • Starten Sie den Guide mit python guide.py.
  • Nach jeder erledigten Aufgabe: Kehren Sie in das Verzeichnis adventurequest zurück und starten Sie den Guide mit python guide.py, bis alle Aufgaben erledigt sind.

Versuchen Sie die gestellten Aufgaben zu lösen. Schauen Sie sich ruhig mit ls um. Verwenden Sie cd ordnername, um in einen Unterordner zu wechseln, und cd .. um wieder zurückzugelangen (also in den übergeordneten “Eltern-Ordner”).

Hinweis: Die letzte Aufgabe (alle Bibliotheken ausrüsten) ist sehr anspruchsvoll.

Hilfe zur letzten Aufgabe

Hilfe zur letzten Aufgabe

Folgendes Script ruft den Befehl echo (einfach ausgeben, was danach folgt) für jedes Verzeichnis auf:

for verzeichnis in */; do echo "Etwas mit $verzeichnis machen"; done
  • Ändern Sie zuerst das Suchmuster */ so ab, dass nur die relevanten Verzeichnisse durchlaufen werden.
  • Ändern Sie dann das, was echo ausgibt, so ab, dass echo das gewünschte Kommando ausgibt.
  • Ersetzen Sie dann echo “…” durch das Kommando.