~~NOTOC~~ ====== Kommandozeile (= bash = git-bash) ====== Lernziele/Ziel der Prüfung: Ihr findet euch in einem Verzeichnisbaum zurecht und zeigt dies in der git-bash! ''cd'', ''cp'', ''ls'', ''mv'' etc. Für die Prüfung unerlässlich: * git-bash ausführbar * python-Programme können ausgeführt werden (z.B. ''python guide.py'') * Wissen, wie man eine Zip-Datei in einem gewünschten Verzeichnis entpackt. (Am einfachsten Datei per rechter Maustaste an gewünschtem Ort speichern, dort per ''unzip NAME.zip'' auspacken. * Wissen, wie man ein Verzeichnis samt ALLER Unterverzeichnisse in eine zip-Datei packt (bitte nicht 7zip oder so etwas): ''zip -r NAME_DER_ZIP_DATEI.zip NAME_DES VERZEICHNISSES'' (Die Option ''-r'' (für "rekursiv") ist **äusserst wichtig**, denn sie sorgt dafür, dass nicht nur der Inhalt des Verzeichnisses, sondern auch der Inhalt aller Unterverzeichnisse "eingepackt" wird.) * Die Abgabe der Prüfung erfolgt als zip-Datei! Die folgenden Befehle/Fähigkeiten werden voraussichtlich in der Prüfung benötigt (es sei denn, man macht lieber alles "naiv mit Windows-Mitteln"). * Sich im Verzeichnisbaum bewegen (mit ''cd'', etwa ''cd ..'' für eine Ebene nach oben oder ''cd'' zum Wechsel ins Home-Verzeichnis) * Inhalt des aktuellen Verzeichnisses anlegen (mit ''ls''). * Dateien kopieren und verschieben (mit ''cp'' und ''mv''). * Wildcards verwenden * Auffinden von Dateien (mit ''find''). * Ausgabe des Inhalts von Dateien (mit ''cat''). * eine Datei oder alle Dateien im aktuellen Verzeichnis inklusive Unterverzeichnis nach einem Muster durchsuchen (mit ''grep'') * Sortieren (mit ''sort''). * Anlegen einer Datei mit Textinhalt (etwa per ''notepad'' oder per ''echo TEXT > DATEINAME'') * Anlegen eines Verzeichnisses (mit ''mkdir'') * Wer Aufgaben nicht vollständig erledigt bekommt, kann Teillösungen in einer Text-Datei dokumentieren (für Teilpunkte). * Wer aus Versehen in der gegebenen Verzeichnisstruktur etwas Wichtiges löscht, sollte ein neues Verzeichnis erstellen und dort "neu anfangen" und dies in der Dokumentationsdatei dokumentieren. Am Ende alle relevanten Verzeichnisse als Zip-Datei abgeben. ''for''-Schleifen werden nicht verlangt. Hier nochmal "dasselbe" etwas konkreter: * ''ls'', ''cd'' (navigieren) * ''mv'', ''cp'' (verschieben, kopieren) * Wildcards, um Dateinamenmuster zu beschreiben, auch über mehrere Verzeichnisse (z.B. ''mv */*/*.song bli/bla/blu/.''). * ''cat datei.txt'' (Dateiinhalt ausgeben) * ''cat *'' (Inhalt aller Dateien im aktuellen Verzeichnis ausgeben) * ''echo 'kleiner Text' > neueDatei.txt'' (Text in eine Datei umleiten, Inhalt wird komplett ersetzt) * ''find'' (alle Dateien vom aktuellen Verzeichnis aus mit vollständigem Pfadnamen anzeigen) * ''find . -name '*cool*' '' (alle Datein vom aktuellen Verzeichnis aus anzeigen, die ''cool'' im Namen haben. * ''grep'' (Text filtern) * ''grep nadel heuhaufen.txt'' (Alle Zeilen der Datei heuhaufen.txt anzeigen, die die Zeichenkette ''nadel'' enthalten). * ''grep -R nadel'' (Rekursiv alle Dateien anzeigen, die 'nadel' in einer Zeile enthalten). * ''find | grep nadel'' (Listet alle Datei- und Verzeichnisnamen ab dem aktuellen Verzeichnis auf, die ''nadel'' im Dateinamen haben. Die «Pipe» ''|'' bedeutet, dass die Ausgabe des ersten Kommandos als Eingabe des nächsten Kommandos benutzt wird. * ''sort datei.txt'' (Inhalt alphabetisch sortieren) * ''sort -n datei.txt'' (Inhalt nummerisch sortieren) * ''notepad datei.txt'' (Datei mit Texteditor bearbeiten, bzw. neu anlegen und bearbeiten). * ''notepad ../verzeichnis1/verzeichnis2/datei.txt'' (Datei in einem anderen Verzeichnis öffen). * ''python programm.py'' führt ein Python-Programm aus (''programm.py'' muss sich im aktuellen Verzeichnis befinden). * Abbruch von Prozessen geht in der git-bash (oft) mit ''Ctrl-c''. Alternative: Neu starten. * Python verlassen per ''Ctrl-z + Enter'' oder ''exit() + Enter''. * Wenn man ein Programm startet, etwa per ''notepad DATEINAME'', so kann man in der git-bash nichts mehr eingeben, solange dieses Programm läuft (d. h. zum Weiterarbeiten muss man das Programm schliessen). Alternative: Mit dem "Kaufmanns-Und" & am Ende kann man ein Programm "parallel" laufen lassen, also etwa per ''notepad DATEINAME &''. Dann kann man die git-bash weiterhin verwenden. (In Linux geht auch nachträglich ''Ctrl+z'' plus Eingabe ''bg''+Enter in der git-bash, um ein Programm im Hintergrund/parallel laufen zu lassen; ''bg'' steht für "background", also Hintegrund.) * Dateisystem an Tafel malen und Folgendes projizieren: https://superuser.com/questions/887914/how-can-i-visualize-the-folders-and-files-as-a-tree-on-windows . * In der bash ist man immer in einem aktuellen Verzeichnis. Wechsel nach oben per ''cd ..'', Wechsel in Unterverzeichnis per ''cd NAME''. * Alles tastaturbasiert, "hacker like". * Bash gibt es in allen gängigen Betriebssystemen: Windows, MacOS, Linux; seit vielen Jahren. * Windows macht einem das Leben schwer bzw. verschleiert die wahren Namen: Der Verzeichnisname "User" wird zu "Benutzer" übersetzt etc, diverse short cuts (Schnellzugriff) etc., viele Leute suchen nur nach Dateien, statt eine sinnvolle Verzeichnisstruktur anzulegen (auch ich suche bisweilen, jedoch weiss ich meist ungefähr, wo meine Dateien liegen). Erklärungen (bzw. Erinnerungen) in zweiter Doppellektion: * in git-bash: * ''/'' für "root directory" * ''~'' für "home directory" * ''cd'' wechselt ins "home directory" * ''ls'' zeigt Inhalt des Verzeichnisses, in dem man sich gerade befindet * Wildcards: * ''ls *.txt'' zeigt alle Dateien im aktuellen Verzeichnis, die auf ''.txt''enden * ''ls ../*.txt'' zeigt alle Textdateien im übergeordenten Verzeichnis * ''ls * zeigt Inhalt aller Unterverzeichnisse * ''cp ../goethe.txt deutsch/. * einfache Ordnerstruktur an Tafel malen, verschiedene Kopierbefehle * **Pfeiltaste hoch: alte Befehle wiederverwerten** * **Tabulatortaste: Befehle vervollständigen (auto-completion)** * Bei den "adventure games": Jeweils nach Erledigung eines Auftrags wieder ins Verzeichnis mit dem ''guide.py'' zurueckkehren und diesen aufrufen! Mit Hilfe der Kommandozeile (auch Terminal oder Konsole oder bash genannt) kann man **per Tastatureingaben** am Computer arbeiten, was diverse Vorteile hat (siehe später). * [[lehrkraefte:snr:informatik:glf4-23:kommandozeile:vorbereitungen|Vorbereitungen]] * [[lehrkraefte:snr:informatik:glf4-23:kommandozeile:installation-git|Installation "Git for Windows"]] * [[lehrkraefte:snr:informatik:glf4-23:kommandozeile:bashrc|Konfigurationsdatei ".bashrc" erstellen]] * [[lehrkraefte:snr:informatik:glf4-23:kommandozeile:adventurequest|Adventure Quest: Einführung in Theorie und Praxis als Spiel]] * [[lehrkraefte:snr:informatik:glf4-23:kommandozeile:passwordhunt|Password Hunt: Fortgeschrittene Benutzung der Kommandozeile in Theorie und Praxis als Spiel]]