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
debugging.ipynb myscript.py
display.ipynb shell.ipynb
examples.ipynb start.rst
extensions.rst tab-completion-for-anything.png
importing.ipynb tab-completion-for-modules.png
index.rst tab-completion-for-objects.png
magics.ipynb unix-shell
mypackage
Der Befehl !pwd
zeigt den Pfad zum Arbeitsverzeichnis (engl: path to the working directory) an:
[2]:
!pwd
/Users/veit/cusy/trn/Python4DataScience-de/docs/workspace/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)
['debugging.ipynb', 'display.ipynb', 'examples.ipynb', 'extensions.rst', 'importing.ipynb', 'index.rst', 'magics.ipynb', '\x1b[34mmypackage\x1b[m\x1b[m', 'myscript.py', 'shell.ipynb', 'start.rst', '\x1b[31mtab-completion-for-anything.png\x1b[m\x1b[m', '\x1b[31mtab-completion-for-modules.png\x1b[m\x1b[m', '\x1b[31mtab-completion-for-objects.png\x1b[m\x1b[m', '\x1b[34munix-shell\x1b[m\x1b[m']
Das gleiche Ergebnis seht ihr unten, wenn ihr den Befehl pwd
ausführt:
[6]:
directory = !pwd
[7]:
print(directory)
['/Users/veit/cusy/trn/Python4DataScience-de/docs/workspace/ipython']
Shell-bezogene Magic-Befehle#
[8]:
!pwd
/Users/veit/cusy/trn/Python4DataScience-de/docs/workspace/ipython
[9]:
!cd ..
[10]:
!pwd
/Users/veit/cusy/trn/Python4DataScience-de/docs/workspace/ipython
[11]:
%cd ..
/Users/veit/cusy/trn/Python4DataScience-de/docs/workspace
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:
[14]:
%automagic
Automagic is ON, % prefix IS NOT needed for line magics.
[15]:
cd ..
/Users/veit/cusy/trn/Python4DataScience-de/docs