相較於Linux上的python shell以及Windows上的IDLE,IPython能夠使用python shell的一切,IPython還有許多magic函數能夠使用,在IPython使用的同時還能夠使用Unix shell命令(只需在命令前加!便可),推薦使用ipython,當你在學習python的一些方法時能夠結合使用bash命令來達到更好的效果。python
1.Tab自動完成,固然python shell也可具備tab自動完成功能但須要如下處理。linux
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import rlcompleter,readline
>>> readline.parse_and_bind('tab:complete')
>>>
>>> import os
>>> os.li
os.linesep os.link( os.listdir( os.listxattr(
>>> os.listshell
2.魔力函數bash
IPython會把第一個字母爲%的行視爲魔力函數的調用,魔力函數可由%lsmagic或%<tab>列出。ssh
In [1]: %alias nss netstat -lptn In [2]: nss Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:39505 0.0.0.0:* LISTEN 1225/rpc.statd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
In [3]: store nss (存儲別名,下次啓動IPython時可用)
Alias stored: nss (netstat -lptn)tcp
3.特殊的shell執行函數
以前提到過IPython中執行shell命令是在命令前加上!,在shell中能夠使用重定向的方式來處理命令執行的結果,如ps aux | grep "root",在IPython中能夠使用將命令執行結果存儲爲list再用處理list的方式進行下一步處理。學習
In [48]: a = !netstat -plnt In [49]: a Out[49]: ['Active Internet connections (only servers)', 'Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name ', 'tcp 0 0 0.0.0.0:39505 0.0.0.0:* LISTEN 1225/rpc.statd ', 'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1375/sshd ',
...]
In [50]: a.grep("sshd",prune=True).fields(0,1,6) #bash shell:netstat -plnt | grep -v "sshd" | awk '{print $1,$2,$6}'
Out[50]:
['Active Internet',
'Proto Recv-Q Address',
'tcp 0 1225/rpc.statd',
'tcp 0 1508/master',spa
...]code
shell命令和python命令同時使用:
In [84]: for i in range(10): ...: !echo "$i" ...: 0 1 2 3 4 5 6 7 8 9
4.獲取詳細幫助信息,魔力函數%pfile,%pdoc,%pdef,%psearch可查找python對象,%pinfo(?),%psource(??)可查看運行對象的文件(源碼)。
5.歷史hist,Ctrl-s