Zum Hauptinhalt springen

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 P und die „Tab“-Taste ein. Beachten Sie, dass die Shell den Befehl für Sie vervollständigt. Merken Sie sich das: 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 bearbeiten Notizbücher in Visual Studio Code (kurz VS Code). Wie Sie Python, VS Code und die benötigten Pakete installieren, beschreibt die Seite Jupyter-Notebooks. Richten Sie Ihren Rechner nach dieser Anleitung ein, bevor Sie hier weiterarbeiten.

Aufgaben

  • Öffnen Sie in VS Code über Datei → Ordner öffnen den Ordner, in dem Sie die virtuelle Umgebung .venv angelegt haben.

  • Legen Sie ein neues Notizbuch an: Öffnen Sie die Befehlspalette mit Strg+Umschalt+P (unter macOS ⌘+⇧+P) und wählen Sie den Befehl Create: New Jupyter Notebook.

  • Klicken Sie oben rechts im Notizbuch auf „Select Kernel“ und wählen Sie die Umgebung .venv.

  • Speichern Sie das Notizbuch mit Strg+S (unter macOS ⌘+S) unter dem Namen Python-Tutorial-<Ihr Name>.ipynb.

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. VS Code zeigt die Art einer Zelle rechts unten in der Zelle an: „Python“ für eine Codezelle, „Markdown“ für eine Markdown-Zelle.

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

Bearbeitungsmodus

Im Bearbeitungsmodus steht der Textcursor in der Zelle, und Sie können wie in einem normalen Texteditor etwas in die Zelle eingeben. Sie gelangen in den Bearbeitungsmodus, indem Sie in eine Zelle klicken oder bei ausgewählter Zelle Enter drücken.

Befehlsmodus

Mit Esc verlassen Sie den Bearbeitungsmodus: Die Zelle bleibt ausgewählt, aber Sie können nicht mehr in sie tippen. Im Befehlsmodus bearbeiten Sie das Notizbuch als Ganzes. Am wichtigsten ist, dass der Tastatur im Befehlsmodus eine Reihe von Tastenkombinationen zugeordnet ist, mit denen Sie Zellenaktionen ohne Maus ausführen können. Drücken Sie im Befehlsmodus beispielsweise m, wird die ausgewählte Zelle zur Markdown-Zelle; y macht sie wieder zur Codezelle, und a bzw. b fügen eine neue Zelle oberhalb bzw. unterhalb ein – ein Modifikator ist nicht 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 mit der Tastenkombination Umschalt+Enter aus. 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. Eine Übersicht der Syntax finden Sie im Markdown Guide.

  • Schreiben Sie in eine Codezelle unterhalb der Markdown-Zelle print(24) und führen Sie die Zelle aus. Legen Sie die Codezelle gegebenenfalls im Befehlsmodus mit b an. Wie Sie sehen, reagieren Codezellen anders auf die Ausführung als Markdown-Zellen.

  • Speichern Sie das Notizbuch mit Strg+S (unter macOS ⌘+S).

  • Exportieren Sie das Notizbuch als HTML-Datei: Klicken Sie in der Symbolleiste des Notizbuchs auf „…“, wählen Sie Export und dann HTML. Für den Export als PDF muss zusätzlich LaTeX installiert sein.

Diskussion

Sie haben die Grundlagen von Jupyter-Notebooks erlernt. Wenn Sie mehr wissen möchten, empfehlen wir die Dokumentation zu Jupyter-Notebooks in VS Code. Das Jupyter-Projekt wird unter jupyter.org gehostet.