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:

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
pastewkaDie 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:

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
lsauch 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
cdin das neue Verzeichnis (change directory). Geben Sie dazucd Pund 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 Notebooksist.
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
.venvangelegt 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 mitban. 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.