IPython下执行shell命令-魔力函数(alias store rehash)- 千月的python linux 系统管理指南学习笔记(6)

来源:互联网 发布:淘宝三了个七什么意思 编辑:程序博客网 时间:2024/06/03 21:30
我们在工作中经常使用 linux 下的命令行模式,也就是 shell 。
但是 shell 有一个问题,就是必须一条一条执行命令。
输入命令,等待执行结果,继续输入命令,等待结果。好像一个循环。
而如果我们使用文本编辑器,编写脚本来执行,却又失去了交互的体验。

我们现在提到的魔力编辑,就是 IPython 在命令行和文本之间的一种折中,汲取了两者的优点。

我们使用 lsmagic来查看全部魔力编辑的内建函数,使用%magic 命令查看魔力函数的帮助
当然你要觉得 %magic 太多了。可以用%quickref来查看魔力函数的 “一句话”版本。


==================================================
我们如果希望使用 IPython 来取代 shell 。最大的问题其实是命令不互通。
很多系统命令我们要在IPython里实现的话会恨麻烦。就像之前我们做过的那样,调用 subprocess
因此我们可以通过我们接触到的第一个魔力函数 alias 来解决这个问题。

alias
到的alias 命令可以创建一个IPython的快速方式,执行系统命令。

我们看到,在 IPython 环境下直接执行 bash 命令是无效的。
但是我们通过 alias 对 bash 命令生成一个别名 nst ,再执行就可以了。
当然 bash 命令是可以加参数的。我们的例子就加了 -lptn 参数,在执行别名的时候,一起执行了。
同样我们在 alias 已经定义的别名后面加其他操作也是可以的。


好下面我们再讨论一个情况。如果我们要输入多个可变参数,能否有更方便的 alias 定义方法.

这里用到了 %s ,从例子中我们得知,我们使用 %s 定义了2个字符型的插入参数。
在使用命令的过程中,我们将参数跟在命令后面,会逐个读入。
如果参数少于定义的数量会报错
参数多余定义的数量会全部跟在后面。

store
要保存定义的别名,以方便今后使用,需要用到 %store 魔力函数

我们保存后退出

再次进入后执行 store -r 读取保存的 alias 。就可以使用了。
==================================================
在IPython下执行shell命令
我们上面说了别名方法执行 bash 的命令。下面我们再介绍一种更简单的方法。命令前加“!”

很方便,当然我们在 IPython 里不能传递个参数是不是很 low 。

和bash 一样,我们使用 $变量名 在 !下来调用变量。
可以使用变量,当然可以把结果赋值咯。

这里我们演示了把 bash 执行结果赋值给一个变量,顺便普及下中文的输出法。
直接输出变量 l 我们看到是乱码,因为我们并没有引入 chinese code ,显示不了中文。
因此我们可以使用 print str(变量名).decode('string_escape')显示中文

总结下,如果是常用的命令,就使用 alias 自己定制成自己顺手的,但是偶尔执行一次的话 !足以

rehash/rehashx
如果我们希望将全部的 shell 都创建一个 alias 可以使用到这个魔力函数。
虽然恨方便,但是确实不建议这么做,因为用 !就很好了。
这里就不做演示了。
0 0
原创粉丝点击