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 !ls
fü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