ipython作为系统壳

2021-04-06 22:24:13

可以调整IPython进行系统外壳使用情况。在过去,为此目的,IPythonehipped是一个特殊的'sh'个人资料,但它已被隔离0.11释放,并在1.0中完全删除。尽管如此,这一部分的很多依赖于不需要自定义配置文件的机械。

您可以设置自己的“SH”配置文件与默认配置文件不同,以便:

通过运行%rehashx魔法,使系统命令直接可用(在别名表中)。如果您沿路径安装新程序,则强调要运行%rehashx以更新别名表

直接操作魔术%ENV命令而不是操作OS.environ。没有参数,这会显示所有环境变象变量和值。要获得特定变量的值,请使用%env var。要设置特定变量的值,请使用%env foo bar,%env foo = bar。 ByDefault值被认为是字符串,所以引用它们是不必要的。然而,在Magic命令中,Python变量在Magic命令中正常扩展,因此%Env foo = $ bar表示“将环境变量foo设置为thepython变量条的值”。

运行%rehashx后,所有$ path都已加载为ipython aliases,因此您应该能够键入任何普通系统命令并将其执行。别名别名?和%unalias?有关别名设施的详细信息。另见%rehashx?有关用于加载$ PATH的机制的详细信息。

字符串列表(ipython.utils.text.slist)是处理输出的方便方式来处理system命令。它们由var =!cmd语法制作。

[Q:Doc / Simem] | 2>线=!LS -L == ['总23&#39 ;,' -rw-rw-rw-1 Ville none 1163 9月30 2006 example-demo.py&#39 ;,#39; -rw-rw-rw-1 ville none 1927 9月30日2006 example-embed-short.py&#39 ;,' -rwxrwxrwx 1 ville none 4606 9月17:15 example-embed.py',& #39; -rwxrwxrwx 1 ville none 1017 9月30日2006 example-gnuplot.py' - ' -rwxrwxrwx 1 ville none 339 Jun 11 18:01 Extension.py&#39 ;,' -rwxrwxrwx 1 ville没有113 12月20日2006 seteditor.py&#39 ;,' -rwxrwxrwx 1 ville none 245 12月12日2006 seteditor.pyc']

现在,让我们来看看'行'的内容(第一个数字是列表元素号):

[问:doc / simem] | 3>线条< 3>诽谤(.p,。n,。l,。s,。grep(),。可用的字段())。价值:0:总计23 1: - rw - rw - rw - 1 ville none 1163 9月30日2006年示例 - 演示。 PY 2: - rw - rw - rw - 1 Ville None 1927 9月30日2006年实施例 - 嵌入 - 短。 PY 3: - rwxrwxrwx 1 ville none 4606 Sep 1 17:15示例 - 嵌入。 PY 4: - rwxrwxrwx 1 ville none 1017 9月30日2006例 - gnuplot。 PY 5: - rwxrwxrwx 1 ville none 339 6月11日:01扩展。 PY 6: - rwxrwxrwx 1 ville none 113 12月20日2006年塞子。 PY 7: - rwxrwxrwx 1 ville none 2006年12月12日塞子。 PYC

[问:doc / simem] | 4> l2 =线条。 Grep('嵌入',prune = 1)[问:doc / simem] | 5> l2< 5>诽谤(.p,。n,。l,。s,。grep(),。可用的字段())。价值:0:总计23 1: - rw - rw - rw - 1 ville none 1163 9月30日2006年示例 - 演示。 PY 2: - rwxrwxrwx 1 ville none 1017 9月30日2006年2月30日 - gnuplot。 PY 3: - rwxrwxrwx 1 ville none 339 6月11日:01扩展。 PY 4: - rwxrwxrwx 1 ville none 2006 Dec 20 2006 SetEditor。 PY 5: - rwxrwxrwx 1 Ville Inne 245 2006年12月12日Seteditor。 PYC

[问:doc / simem] | 6> L2。字段(8,0)< 6>诽谤(.p,。n,。l,。s,。grep(),。可用的字段())。值:0:总计1:示例 - 演示。 PY - RW - RW - RW - 2:示例 - Gnuplot。 py - rwxrwxrwx 3:扩展。 py - rwxrwxrwx 4:setEditor。 py - rwxrwxrwx 5:setEditor。 pyc - rwxrwxrwx.

如果要将这些空格分隔为命令(典型的列表如果文件),请使用.s属性:

[问:Doc / Simem] | 13> files = l2.fields(8).s [q:doc / simem] | 14>文件< 14> ' example-demo.py example-gnuplot.py Extension.py seteditor.py seteditor.pyc' [q:doc / simear] | 15> ls $ filesexample-demo.py example-gnuplot.py Extension.py seteditor.py seteditor.pyc

[问:/ ipython] | 28>出局=!hg status == [' m ipython \\扩展\\ ipy_kitcfg.py&#39 ;,' m ipython \\ extensions \\ ipy_rehashdir.py',...&#39 ; build \\ lib \\ ipython \\ debugger.py&#39 ;,&#39 ;?? build \\ lib \\ ipython \\ extensions \\ themeterexec.py&#39 ;,&#39 ;?? build \\ lib \\ ipython \\ extensions \\ interpereterpasteinput.py',...

[问:/ ipython] | 35> 垃圾=出来。 Grep(R' ^ \?')。 字段(1)[问:/ ipython] | 36> 垃圾< 36> 诽谤(p,。ñ,。s .. grep(),。字段()afive ... 10:build \ bdist。win32 \ winexe \ temp \ _ctypes。py 11:build \ bdist。win32 \ winexe \ temp \ _hashlib。py 12:build \ bdist。win32 \ winexe \ temp \ _socket。py