lehrkraefte:snr:informatik:glf4-23:kommandozeile

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.)

Tafelerklärungen (Ausklappbox)

Tafelerklärungen (Ausklappbox)

  • 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 .txtenden
      • 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.txt
  • Last modified: 2024/04/29 15:32
  • by Olaf Schnürer