Shell-Befehle in IPython

IPython Notebooks ermöglichen die Ausführung einfacher UNIX/Linux-Befehle in einer Eingabezelle. Es gibt keine Einschränkungen, aber denkt bitte daran, dass ihr im Gegensatz zu einer normalen UNIX/Linux-Shell jeden Shell-Befehl ! voranstellen müsst, zum Beispiel !lsfür den Befehl ls (weitere Erläuterungen zum Befehl folgen weiter unten). Außerdem wird jeder Shell-Befehl in einer eigenen Subshell ausgeführt. Aus diesem Grund stehen Euch die Ergebnisse früherer Shell-Befehle nicht zur Verfügung.

Zunächst listet der Befehl ls die Dateien im aktuellen Arbeitsverzeichnis auf. Die Ausgabe wird unter der Eingabezelle angezeigt und listet eine einzelne Dateishell.ipynb auf:

[1]:
!ls
shell.ipynb

Der Befehl !pwd zeigt den Pfad zum Arbeitsverzeichnis (engl: path to the working directory) an:

[2]:
!pwd
/Users/veit/jupyter-tutorial/docs/basics/ipython

Der Befehl !echo gibt Text aus, der dem echo-Befehl als Parameter übergeben wurde. Das folgende Beispiel zeigt, wie ihr Hello world! ausgeben könnt:

[3]:
!echo "Hello world!"
Hello world!

Werte an und von der Shell übergeben

Es gibt eine clevere Möglichkeit, auf die Ausgabe eines UNIX/Linux-Befehls als Variable in Python zuzugreifen, z.B. mit:

[4]:
contents = !ls

Hier wurde der Python-Variable contents die Ausgabe des Befehls ls zugewiesen. Als Ergebnis von contents entsteht eine Liste, wobei jedes Listenelement einer Zeile in der Ausgabe entspricht. Mit dem print-Befehl gebt ihr den Listeninhalt aus:

[5]:
print(contents)
['create-delete.ipynb', 'file-system.ipynb', 'grep-find.ipynb', 'index.rst', 'pipes-filters.ipynb', 'regex.ipynb', 'shell-variables.ipynb']

Das gleiche Ergebnis seht ihr unten, wenn ihr den Befehl pwd ausführt:

[6]:
directory = !pwd
[7]:
print(directory)
['/Users/veit/jupyter-tutorial/docs/basics/ipython']

Shell-bezogene Magic-Befehle

[8]:
!pwd
/Users/veit/jupyter-tutorial/docs/basics/ipython
[9]:
!cd ..
[10]:
!pwd
/Users/veit/jupyter-tutorial/docs/basics/ipython
[11]:
%cd ..
/Users/veit/jupyter-tutorial/docs/basics

Neben %cd gibt es noch folgende andere Shell-bezogene Magic-Befehle: %cat, %cp, %env, %ls, %man, %mkdir, %more, %mv, %pwd, %rm und %rmdir.

%automagic-Funktion

Mit der %automagic-Funktion lassen sich diese auch ohne vorangestelltes %-Zeichen verwenden:

[13]:
%automagic

Automagic is ON, % prefix IS NOT needed for line magics.
[14]:
cd ..
/Users/veit/jupyter-tutorial/docs