Unix und die Shell

Lernziele

  • Verwendung der Unix-Shell
  • Interaktives Python-Notizbuch

Unix-Shell – Einführung in die Kommandozeile

Über die Shell erhalten Sie Zugriff auf das sogenannte Command-Line Interface (CLI) von Unix-Systemen und Unix-ähnlichen Systemen wie Linux und macOS. Mit der CLI können Programme ausgeführt oder durch das Dateisystem navigiert werden. Sollten Sie Windows verwenden, dann können Sie über das Windows Subsystem for Linux (WSL) ein Unix auf Ihrem Rechner virtualisieren. Eine Anleitung zur Installation von WSL finden Sie hier.

Auf die Shell kann in Terminal-Clients zugegriffen werden. Auf Unix-Systemen stehen in der Regel verschiedene Clients zur Verfügung. Sie werden üblicherweise „Terminal“, Konsole“ oder ähnlich genannt und sind im Startmenü zu finden.

Die Shell sollte etwa so aussehen:

bash shell

Die erste Zeile zeigt die sogenannte Eingabeaufforderung,

pastewka@Mac ~ %

Es zeigt, dass die Shell vom Benutzer pastewka auf dem Computer Mac geöffnet wurde. Die Tilde ~ gibt den aktuellen Speicherort in der Verzeichnisstruktur des Dateisystems an und wird später erläutert.

Befehle

Öffnen Sie eine Shell und geben Sie den Befehl whoami ein, gefolgt von der Eingabetaste. Sie sollten nun etwa Folgendes sehen

pastewka@Mac ~ % whoami
pastewka

Die erste Zeile ist die Eingabeaufforderung, gefolgt von dem von Ihnen eingegebenen Befehl whoami. Die Shell hat mit der Ausgabe Ihres Benutzernamens reagiert. Machen Sie dasselbe für den Befehl hostname. Was sehen Sie?

Diskussion

Sie haben mit der Shell zwei einfache Programme ausgeführt, die daraufhin Text an die Shell zurückgegeben haben. Alternativ könnte ein Programm auch ein Fenster für eine grafische Antwort öffnen, in eine Datei, einen Drucker usw. schreiben oder überhaupt nicht in sichtbarer Weise reagieren.

Pfade und die Verzeichnisstruktur

Der Speicherplatz im Dateisystem ist in einer Struktur aus verschachtelten Verzeichnissen organisiert, die etwa so aussehen könnte:

directory structure

Windows-Benutzer bemerken möglicherweise, dass das oberste Verzeichnis keinen Laufwerksbuchstaben hat. Unix-Systeme haben nur ein oberstes Verzeichnis, das sogenannte Stammverzeichnis. Die Struktur variiert von System zu System, aber typischerweise enthält das Stammverzeichnis Verzeichnisse wie bin, lib, etc, in denen die Administratoren Programme installieren, die von allen Benutzern oder vom System selbst verwendet werden. Normale Benutzer wie Sie können den Inhalt dieser Verzeichnisse nicht ändern.

Das home-Verzeichnis enthält die Verzeichnisse, in denen normale Benutzer (in diesem Beispiel die Benutzer junge und pastewka) Dateien speichern und bearbeiten oder Software für sich selbst installieren können. Auf macOS heißt dieses Verzeichnis Users.

Innerhalb dieser Struktur wird der Speicherort jedes Verzeichnisses oder jeder Datei durch einen Pfad angegeben, der die Reihenfolge der Verzeichnisse beschreibt, die man durchlaufen muss, um dorthin zu gelangen, getrennt durch Schrägstriche (/). Der Pfad der Datei hertz.pdf lautet beispielsweise

/home/junge/Documents/hertz.pdf

Dabei gibt der führende Schrägstrich an, dass der Pfad auf der obersten Ebene (Stammverzeichnis) beginnt. Wege können aber auch an anderer Stelle beginnen; Der Pfad von Pictures zu hertz.pdf lautet beispielsweise

../Documents/hertz.pdf

Das führende .. ist eine Abkürzung für den Pfad zum übergeordneten Verzeichnis des aktuellen Verzeichnisses. Nachfolgend sind die wichtigen Abkürzungen aufgeführt.

Pfadanfang vollständiger Pfad
/ oberste Ebene
.. übergeordnetes Verzeichnis
. aktuelles Verzeichnis
~ Home-Verzeichnis

Jetzt können Sie auch das ~ in der Eingabeaufforderung der Shell verstehen.

Aufgaben

  • Ermitteln Sie Ihr aktuelles Arbeitsverzeichnis mit dem Programm „pwd“ (print work directory).

  • Zeigen Sie den Inhalt Ihres aktuellen Verzeichnisses mit „ls“ an (list directory). Sie sollten etwa Folgendes sehen:

pr2015ws_04@cmsquadx2:~> ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
  • Bisher haben wir Programme nur unter Verwendung ihres Namens ausgeführt. Das Verhalten von Programmen kann jedoch durch die Angabe eines oder mehrerer sogenannter Befehlszeilenargumente angepasst werden. Beispielsweise kann der Befehl ls auch verwendet werden, um den Inhalt anderer Verzeichnisse als des aktuellen anzuzeigen.

    Verwenden Sie den Befehl, um den Inhalt Ihres übergeordneten Verzeichnisses mit ls .. anzuzeigen.

  • Nutzen Sie das, was Sie bisher gelernt haben, um die im obersten Stammverzeichnis enthaltenen Verzeichnisse aufzulisten.

  • Erstellen Sie ein Verzeichnis zum Speichern der Ausgabe Ihrer Übungen mit dem Befehl mkdir "Python Notebooks" (make directory)

  • Wechseln Sie mit dem Befehl cd in das neue Verzeichnis (change directory). Geben Sie dazu cd K und die „Tab“-Taste ein. Beachten Sie, dass die Shell den Befehl für Sie ausführt. Denken Sie daran. Die Tab-Vervollständigung ist Ihr neuer bester Freund.

  • Nutzen Sie das, was Sie bisher gelernt haben, um zu bestätigen, dass Ihr neues aktuelles Arbeitsverzeichnis tatsächlich Python Notebooks ist.

Diskussion

Sie haben die Grundlagen der Navigation im Dateisystem auf Unix-Systemen erlernt und können Befehle mit und ohne Befehlszeilenargumente ausführen. Wenn Sie mehr erfahren möchten, empfehlen wir Ihnen dringend, einen Blick auf das erste Kapitel von Effective Computation in Physics zu werfen, the shell tutorial of the software carpentry auszuprobieren oder uns zu fragen.

Jupyter-Notizbuch

Im Verlauf dieses Kurses lösen Sie Differentialgleichungen numerisch mithilfe der Programmiersprache Python. Sie werden Jupyter-Notebooks verwenden, um die Grundlagen von Python zu erlernen, Ihre Berechnungen auszuführen und Ihre Arbeit zu dokumentieren.

Wir empfehlen Ihnen den Landesdienst bwJuypter zu nutzen. Alternativ können Sie Jupyter auch auf Ihrem lokalen Rechner installieren, z.B. nativ in Linux, macOS oder WSL. Ein beliebtes Paket ist Anaconda; wir empfehlen die Nutzung von Anaconda explizit nicht.

Aufgaben

  • Gehen Sie auf den bwJuypter Hub und starten Sie eine neue Umgebung. Sie sollten folgendes sehen:

  • Klicken Sie auf „Neu“ und wählen Sie „Python 3“ aus dem Pulldown-Menü, um ein neues Notizbuch zu erstellen.

  • Klicken Sie auf das Menü „Hilfe -> Tour zur Benutzeroberfläche“, um einen Überblick über die Benutzeroberfläche der Jupyter Notebook App zu erhalten.

  • Benennen Sie das Notizbuch in Python-Tutorial – <Ihr Name> um.

Jupyter-Notizbücher bestehen aus einer Folge von Zellen. Es gibt verschiedene Arten von Zellen, aber für uns sind nur zwei von Interesse + Codezellen, in denen Python-Code geschrieben und ausgeführt werden kann + Markdown-Zellen, die Sie zur Dokumentation Ihres Codes verwenden

Die Zelle in Ihrem neuen Notizbuch ist eine Codezelle. Alle neuen Zellen sind standardmäßig Codezellen.

Zellen können sich in einem von zwei Modi befinden: Bearbeitungsmodus und Befehlsmodus.

Bearbeitungsmodus

Der Bearbeitungsmodus wird durch einen grünen Zellenrand und eine Eingabeaufforderung im Editorbereich angezeigt:

Wenn sich eine Zelle im Bearbeitungsmodus befindet, können Sie wie in einem normalen Texteditor etwas in die Zelle eingeben.

Befehlsmodus

Der Befehlsmodus wird durch einen grauen Zellenrand angezeigt:

Wenn Sie sich im Befehlsmodus befinden, können Sie das Notizbuch als Ganzes bearbeiten, aber nicht in einzelne Zellen tippen. Am wichtigsten ist, dass der Tastatur im Befehlsmodus eine Reihe von Tastenkombinationen zugeordnet sind, mit denen Sie Notebook- und Zellenaktionen effizient ausführen können. Wenn Sie sich beispielsweise im Befehlsmodus befinden und c drücken, kopieren Sie die aktuelle Zelle – es ist kein Modifikator erforderlich.

Aufgaben

  • Ändern Sie die Zelle in eine Markdown-Zelle und schreiben Sie Folgendes hinein:
# Titel beginnen mit einem Rautezeichen
__stark hervorgehobene Wörter__ werden mit doppelten Unterstriche vorangestellt und nachgestellt, normal _hervorgehobenen Wörter_ nur einzelne Unterstriche

Führen Sie die Zelle aus, indem Sie die Symbolleiste oder die Tastenkombination <Umschalt>-<Eingabetaste> verwenden. Sie sollten so etwas sehen wie > # Titel beginnen mit einem Rautezeichen > stark hervorgehobene Wörter werden mit doppelten Unterstriche vorangestellt und nachgestellt, normal hervorgehobenen Wörter nur einzelne Unterstriche

Markdown-Zellen bieten eine einfache, aber leistungsstarke Formatierungssyntax zum Erstellen von Rich Text. Wenn Sie mehr wissen möchten, klicken Sie auf „Hilfe -> Markdown“.

  • Schreiben Sie in die Codezelle unten im Notizbuch print(24) und führen Sie die Zelle aus. Wie Sie sehen, reagieren Codezellen anders auf die Ausführung als Markdownzellen.

  • Klicken Sie auf „Datei -> Speichern und Prüfpunkt“, um das Notizbuch zu speichern.

  • Klicken Sie auf „Datei -> Herunterladen als -> PDF über LaTeX (.pdf)“.

Diskussion

Sie haben die Grundlagen von Jupyter-Notebooks erlernt. Wenn Sie mehr wissen möchten, empfehlen wir die Einführung in JupyterLab und Jupyter Notebook) oder dieses Video auf YouTube. Das Jupyter-Projekt wird unter jupyter.org gehostet.