1,__str__和__repr__的区别

In [1]: class DoubleRep(object):...:     def __str__(self):...:         return "Hi,I'm a __str__"...:     def __repr__(self):...:         return "Hi,I'm a __repr"...:     ...:
In [2]: dr = DoubleRep()
In [3]: print dr
------> print(dr)
Hi,I'm a __str__
In [4]: dr
Out[5]: Hi,I'm a __repr

使用print输出对象dr时,__str__方法被调用
使用正式字符串表达式dr时,__repr__方法被调用

2,Ipython shell 提示符:In和Out

In [5]: type(In)
Out[5]: <class 'IPython.iplib.InputList'>
In [6]: type(Out)
Out[6]: <type 'dict'>
In [7]: print In
------> print(In)
['\n', u'class DoubleRep(object):\n    def __str__(self):\n        return "Hi,I\'m a __str__"\n]
In [8]: print Out
------> print(Out)
{4: Hi,I'm a __repr, 5: <class 'IPython.iplib.InputList'>, 6: <type 'dict'>}

In就是一个列表
Out就是一个字典

3,Tab自动完成
普通python shell需要开启Tab补齐功能

import rlcompleter, readline
readline.parse_and_bind('tab: complete')

Ipython中Tab不仅可以补齐命令,还能在载入模块时补齐模块名称

4,Ipython配置文件
安装完这个版本的Ipthon后在home目录下会自动创建.ipython目录
其中ipy_user_conf.py是个配置文件

5,魔力函数
以%开始,参数中不包含括号或者引号,例如,%cd mydir
lsmagic 列出所有魔力函数
%<Tab>  同样也是列出所有魔力函数
输入magic可以打开包含所有魔力函数的帮助文档
如何你已经知道某个魔力函数,可以这样来查看帮助 %page ?
%quickref 是一个快速参考文档,包含了对%magic函数的迷你总结

6,alias

即创建一个别名,能够在ipython中运行bash shell命令

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 192.168.122.1:53        0.0.0.0:*               LISTEN      2022/dnsmasq
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1543/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1546/cupsd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1965/master
tcp6       0      0 :::22                   :::*                    LISTEN      1543/sshd
tcp6       0      0 ::1:631                 :::*                    LISTEN      1546/cupsd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1965/master
In [3]: nss | grep 80    #别名后面可以查找某个关键字

如下再提供几个实例:

In [5]: alias achoo echo "|%l|"  #%l就代表了字符串,输出""内所有字符
In [6]: achoo
||
In [7]: achoo these are args
|these are args|In [8]: alias achoo echo "%l"
In [9]: achoo these are args
these are argsIn [16]: alias achoo echo first:"|%s|", second:"|%s|"  #%s代表字符串,有先后顺序
In [17]: achoo foo bar
first:|foo|, second:|bar|In [18]: achoo foo bar bam  #输出字符串数量少了会报错,多了会继续输出在尾部
first:|foo|, second:|bar| bamIn [20]: store achoo  #保存别名,下次进入ipthon还能继续使用
Alias stored: achoo (2, 'echo first:"|%s|", second:"|%s|"')

7,在ipython中另一个执行bash shell命令的方式:!

In [2]: !netstat -lptn

8,保存到变量中使用,输出稍有不同,形式是一个list-like对象

In [4]: l = !ps aux | grep $user | grep $process
In [5]: l

!!和!可以替换,只是使用!!无法保存结果到变量

9,rehash魔力函数会更新PATH路径中的别名表,别名表就是ipython映射别名到shell命令的表格
__IP是一个交互式shell对象,有一个叫alias_table的属性,这里就是映射表的地方

In [7]: __IP.alias_table
Out[7]:
{'achoo': (2, 'echo first:"|%s|", second:"|%s|"'),'cat': (0, 'cat'),'clear': (0, 'clear'),'cp': (0, 'cp -i'),'lc': (0, 'ls -F -o --color'),'ldir': (0, 'ls -F -o --color %l | grep /$'),'less': (0, 'less'),'lf': (0, 'ls -F -o --color %l | grep ^-'),'lk': (0, 'ls -F -o --color %l | grep ^l'),'ll': (0, 'ls -lF'),'ls': (0, 'ls -F'),'lx': (0, 'ls -F -o --color %l | grep ^-..x'),'mkdir': (0, 'mkdir'),'mv': (0, 'mv -i'),'rm': (0, 'rm -i'),'rmdir': (0, 'rmdir')}

它是字典类型:

In [8]: type(__IP.alias_table)
Out[8]: <type 'dict'>

它的初始长度:

In [9]: len(__IP.alias_table)
Out[9]: 16

使用rehash后,映射就变大了

In [10]: rehash
In [11]: len(__IP.alias_table)
Out[11]: 2249

10,rehashx和上面的rehash功能差不多,对比rehash和rehashx差了哪几项

In [4]: from sets import Set
In [5]: rehashx_set = Set(__IP.alias_table.keys())
In [6]: rehash
In [7]: rehash_set = Set(__IP.alias_table.keys())
In [8]: rehash_set - rehashx_set

11,cd和bash中的cd命令功能一样
cd -  回到前一个目录

cd -q 静默输出:

In [31]: cd /tmp
/tmp
In [32]: cd -q /tmp

cd -b t  进入标签所指定的位置 b:bookmark,t:定义的标签
cd -3 数字代表目录历史列表的序号

12,bookmark
创建标签1:

In [1]: cd /tmp
/tmp
In [2]: bookmark t

创建标签2:

In [3]: bookmark t /tmp

列出标签:

In [4]: bookmark -l
Current bookmarks:
t -> /tmp

删除标签:

In [9]: bookmark -d alan  #删除单个名称为alan的标签
In [22]: bookmark -r  #一次性删除所有标签


13,dhist 显示访问目录的历史记录

cd -<Tab> 差不多的目录历史功能

In [24]: dhist
Directory history (kept in _dh)
0: /tmp
1: /tmp/VMwareDnD
2: /tmp
3: /root
4: /tmp
5: /root
6: /tmp
7: /root
8: /tmp
9: /root
10: /tmp
11: /tmp
12: /tmp
13: /tmp
14: /usr/local/bin
In [26]: dhist 5  #显示5条记录
Directory history (kept in _dh)
10: /tmp
11: /tmp
12: /tmp
13: /tmp
14: /usr/local/bin
In [27]: dhist 3 7  #显示一个范围,7不包含
Directory history (kept in _dh)
3: /root
4: /tmp
5: /root
6: /tmp

14,python和shell结合使用

In [29]: for i in range(10):   ....:     !date > ${i}.txt  #输出日期到i个文件中


15,用ipython操作进程

调用grep()方法,查找'ipython'的进程条目

In [1]: ps = !ps aux
In [2]: ps.grep('ipython')
Out[2]: SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
0: root       8978  1.3  1.4 222792 14568 pts/0    S+   13:17   0:00 /usr/bin/python /usr/bin/ipython

列出非root用户的进程

In [3]: ps.grep('root', prune=True)

16,判读文件还是目录

In [1]: import os
In [2]: file_list = !ls
In [3]: file_listIn [4]: file_list.grep(os.path.isfile)
Out[4]: SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
0: anaconda-ks.cfg
1: initial-setup-ks.cfg
2: ipython-0.8.2.tar.gzIn [5]: file_list.grep(os.path.isdir)
Out[5]: SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
0: ipython-0.8.2
1: 公共
2: 模板
3: 视频
4: 图片
5: 文档
6: 下载

17,筛选进程中的列,用到fields()方法

In [10]: ps = !ps aux
In [11]: ps.grep('root', prune=True).fields(0,1,8)

先筛选整个ps的第0和第1列,再过滤出postfix用户的第1列

In [12]: ps.fields(0,1).grep('postfix').fields(1)
Out[12]: SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
0: 2435
1: 8004

s属性将结果以字符串的形式输出

In [13]: ps.fields(0,1).grep('postfix').fields(1).s
Out[13]: '2435 8004'


18,查看系统内部环境变量

[root@study ~]# ipython -p sh
IPython 0.8.2   [on Py 2.7.5]
[~]|1> import os
[~]|2> os.environ['PATH']<2> '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin'

19,在结束位置和开始位置添加环境变量值

[~]|3> env PATH+=:/home/alanyao
PATH after append = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/alanyao
[~]|4> env PATH-=:/tmp
PATH after prepend = :/tmp/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/alanyao

ipython可以保证对PATH的修改即时生效

20,显示一下所有能够即时生效的环境变量

[~]|3> env -p<3> {'add': [('PATH', ':/home/alanyao')], 'pre': [('PATH', ':/tmp')], 'set': {}}

21,删除对PTAH即时生效的设置,如果这里用os.environ['PATH']检查,那些设置还在,重启ipython shell会删除的

[~]|6> env -d PATH
Forgot 'PATH' (for next session)

22,mglob命令返回一个python列表对象

递归查找所有.cfg文件

[~]|4> mglob rec:*.cfg<4> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
0: ./anaconda-ks.cfg
1: ./initial-setup-ks.cfg
2: ./.config/yelp/yelp.cfg
3: ./.local/share/telepathy/mission-control/accounts.cfg
4: ./.local/share/telepathy/mission-control/accounts-goa.cfg

显示所有目录

[~]|5> mglob dir:*<5> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
0: 桌面
1: 下载
2: 模板
3: 公共
4: 文档
5: 音乐
6: 图片
7: 视频
8: ipython-0.8.2

23,page作用和bash中less一样,分页显示

In [2]: p = !ps aux
In [3]: page p

24,pdef打印函数的声明部分

In [3]: def myfunc(a,b,c,d):...:     '''return something'''...:     return a,b,c,d...: In [4]: pdef myfuncmyfunc(a, b, c, d)

25,pdoc打印函数的注释部分

In [5]: pdoc myfunc
Class Docstring:return something
Calling Docstring:x.__call__(...) <==> x(...)

26,pfile打印出文件的内容

In [6]: import os
In [7]: pfile os

27,pinfo打印出相关信息

#比如:模块
In [1]: import some_module
In [2]: pinfo some_module
#比如:模块的类
In [3]: pinfo some_module.Foo
#也可以以这种形式
In [4]: f = some_module.Foo()
In [5]: pinfo f
#更可以
In [6]: ? f
In [7]: f ?
#也可以用??,提供详细的信息
In [9]: some_module.Foo ??

28,psource打印模块、模块中类和函数的源代码

In [1]: import some_other_module
In [5]: psource some_other_module
In [6]: psource some_other_module.FOO
In [7]: psource some_other_module.baz

29,psearch查找python对象

In [9]: psearch c*#或者可以用?代替
In [10]: c*?
psearch默认搜索路径是builtin和user#-e用来排除
In [12]: psearch -e builtin c*#搜索user命名空间中的整数对象
In [13]: psearch -e builtin * int#搜索user命名空间中的字符串
In [14]: psearch -e builtin * string

30,who函数返回交互定义的对象名称

In [17]: who
a    aa    b    bb    c    cc
In [18]: who int
a    b    c
In [19]: who str
aa    bb    c

who_ls和who差不多,返回的是列表形式

In [20]: who_ls
Out[20]: ['a', 'aa', 'b', 'bb', 'c', 'cc']

由于who_ls返回名称列表,使用_variable访问名称列表,只针对最后一次输出

In [22]: who_ls int
Out[22]: ['a', 'b', 'c']In [23]: for n in _:....:     print n....:     ....:
a
b
c

whos打印更详细的列表

In [24]: whos
Variable   Type    Data/Info
----------------------------
a          int     1
aa         str     one
b          int     2
bb         str     two
c          int     3
cc         str     three
n          str     c

31,历史功能

<Ctrl+r>搜索返回匹配输入的行
<Ctrl+a>回到行首
<Ctrl+e>回到行末
<Ctrl+h>等同于backupspace键
<Ctrl+p>历史记录行向后移动一行

hist显示历史命令,-n选项可以去掉前面的数字
-t选项似乎和直接使用hist输出功能一样

In [1]: foo = 1
In [2]: bar = 2
In [3]: bam = 3
In [4]: cd /tmp
/tmp
In [5]: hist
1: foo = 1
2: bar = 2
3: bam = 3
4: _ip.magic("cd /tmp")
5: _ip.magic("hist ")

-r选项能够准确显示输入的内容raw history

In [8]: hist -r
1: foo = 1
2: bar = 2
3: bam = 3
4: cd /tmp
5: hist
6: hist -n
7: hist -t
8: hist -r

-g是一个搜索的标志,可以配合标志进行搜索

In [11]: hist -g b

_代表“上次输出”

In [12]: foo = "foo_string"
In [13]: _
Out[13]: ''
In [14]: foo
Out[14]: 'foo_string'
In [15]: _
Out[15]: 'foo_string'
In [16]: a = _
In [17]: a
Out[17]: 'foo_string'

_加上一个out后的数字,可以直接返回那条out的内容
如下面的:_17

In [17]: a
Out[17]: 'foo_string'
In [18]: _17
Out[18]: 'foo_string'

我们也可以把_17赋值给变量
如:

In [19]: output = _17
In [20]: output
Out[20]: 'foo_string'

32,自动和快捷方式
macro宏 例1:

In [1]: dirlist = []
In [2]: for f in dirlist:...:     print "working on",f...:     print "done with",f...:     print "moving %s to %s.done" %(f,f)...:     print "*" * 40...:     ...:
In [3]: macro procdir 2   #注意这里2是代表上面In[2]处
Macro `procdir` created. To execute, type its name (without quotes).
Macro contents:
for f in dirlist:print "working on",fprint "done with",fprint "moving %s to %s.done" %(f,f)print "*" * 40
In [4]: dirlist = ['a.txt','b.txt','c.txt']
In [5]: procdir
------> procdir()
working on a.txt
done with a.txt
moving a.txt to a.txt.done
****************************************
working on b.txt
done with b.txt
moving b.txt to b.txt.done
****************************************
working on c.txt
done with c.txt
moving c.txt to c.txt.done
****************************************

macr 例2:

In [3]: for x in range(1,10):...:     print x...:     ...:
1
2
3
4
5
6
7
8
9
In [4]: macro procdir 3
Macro `procdir` created. To execute, type its name (without quotes).
Macro contents:
for x in range(1,10):print x
In [5]: procdir
------> procdir()
1
2
3
4
5
6
7
8
9

33,store函数可以一直保存变量或者宏在ipython中,关闭ipython也无所谓
比如:
store x
这样变量x就一直保存在ipython中了
store -z 删除所有存储的变量,下次启动ipython后就没了

34,reset函数用来从交互命名空间中删除所有变量

In [1]: a = 1
In [2]: b = 2
In [3]: c = 3
In [4]: whos
Variable   Type    Data/Info
----------------------------
a          int     1
b          int     2
c          int     3
In [5]: reset
Once deleted, variables cannot be recovered. Proceed (y/[n])?
In [6]: whos
Interactive namespace is empty.

35,rep 取回最近处理的结果

In [1]: def format_str(s):...:     return "str(%s)" % s...:
In [2]: format_str(1)
Out[2]: 'str(1)'
In [3]: rep
In [4]: str(1)

36,rep还能重复运行多少行到多少行的代码

In [1]: i = 1
In [2]: i += 1
In [3]: print i
------> print(i)
2
In [4]: rep 2-3
lines [u'i += 1\nprint i\n']
------> print(i)
3
In [7]: rep 2-3
lines [u'i += 1\nprint i\n']
------> print(i)
4

37,rep还能重复包含字符的行

In [1]: a = 1
In [2]: b = 2
In [3]: c = 3
In [4]: rep a
In [5]: a = 1

转载于:https://blog.51cto.com/142623/1892233

Python.Unix和Linux系统管理指--第二章(读书笔记)相关推荐

  1. Python+UNIX和Linux系统管理指南

    收藏自用 链接:Python+UNIX和Linux系统管理指南

  2. 电子数据取证第二章读书笔记

    电子数据取证第二章读书笔记 1.计算机硬件知识 内存与外存: 内存(Memory)是计算机的重要部件之一,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,与硬盘等外部存储器交换的数据.它是外 ...

  3. 第一行代码Android第二章读书笔记

    第一行代码Android第二章读书笔记 Activity 1.1 手动创建活动 1.2 Toast和Menu/销毁活动 Intent 2.1 显示/隐式 2.2 传递/返回数据 活动的生命周期 3.1 ...

  4. python去掉字符串最外侧的引号_疯狂Python讲义第二章读书笔记

    本章讲解变量和简单类型 2.1 从注释讲起 单行注释使用#,#后面的代码被注释掉不会运行,如: # print(123) 注释掉后123不会输出.多行注释使用"""  & ...

  5. Kotlin 基础语法(《第一行代码(第三版)》第二章读书笔记)

    资源来自<第一行代码>(第三版)第二章 网络试读: https://www.ituring.com.cn/book/tupubarticle/30209 以下为笔记 转存失败重新上传取消正 ...

  6. 《算法帝国》第一章第二章读书笔记

    heeeeeeeeeeeeeeeeeeeeello! 好像有半个月都没好好写笔记了,经历了两次面试,一次败在单面,一次败在群面,哈啊-说明还完全有待努力! 稍微研究了一下,这本书好像并不需要什么代码记 ...

  7. 被讨厌的勇气:第二章读书笔记

    本笔记为岸见一郎先生的著作<被讨厌的勇气>部分文字的摘抄. 第二夜 一切烦恼都来自人际关系 为什么讨厌自己? 哲人:你认为对她来说最害怕的事情.最想逃避的事情是什么呢?当然是被自己喜欢的男 ...

  8. C primer plus第二章读书笔记3

    进一步使用C 以下是在C中如何使用C计算,运算符的引入使得这个过程变得简单 int main(void) {int feet, fathoms;fathoms = 2;feet = 6 * fatho ...

  9. 《Unix编程艺术》 八九章读书笔记

    8 微型语言: 寻找歌唱的乐符 从好的符号体味出的巧妙和启发,就算身边的老师也不过如此. 对软件错误模式进行大量的研究得出的一个最一致的结论时,程序员每百行代码的出错率和所使用的编程语言在很大程度上无 ...

最新文章

  1. 如何在国内上medium_在Medium上写作的风格指南
  2. linux虚拟机镜像_无树莓派硬件体验:虚拟机安装 Raspberry Pi Desktop 操作系统
  3. [转]SVN更新的时候前面字母的意思(U、G、A、R、C)
  4. 关于wpf窗体中Allowtransparent和WindowsFormsHost的纠纷
  5. 下载:Visual Studio 2012 RC候选版
  6. 思考ANDROID架构(4):HOW-TO, 如何从API洞悉软件的话语权
  7. 发掘VS2005 SP1 (一)
  8. mysql 索引的简单使用
  9. BGD-py实现学习【1】[转载]
  10. matlab oj,Matlab习题(1)
  11. linux 位置参数数组,荐Linux中的shell编程Ⅱ——位置参数、数组、date和cal
  12. Windows游戏编程大师技巧第二版学习笔记之第一章
  13. 使用MAKER进行全基因组基因注释-基础篇
  14. 测试用例的设计方法:等价类划分法
  15. “RFID射频识别技术”简介
  16. 职场上个人的核心技术_五年老员工被空降领导要求交出核心技术,拒绝后,隔天上班懵了...
  17. prometheus + grafana 对 springboot 项目进行监控
  18. dcdc模块降额设计_爱默生网络能源PCB设计规范
  19. 如何安装Java JDK
  20. cocos2dx+VS2019环境配置

热门文章

  1. sklearn学习之:(7)sklearn 自动生成数据集用法:make_hastie_10_2, make_circles, make_moons
  2. 装酷神器让你的手机一秒穿越到 Windows 电脑桌面,神秘!
  3. 运营商大数据实时获客
  4. 基于springboot+Vue的鲜花销售商城网站
  5. 学python人工智能电脑要什么配置_没有基础能不能学人工智能 首选语言是Python吗...
  6. ModuleNotFoundError: No module named ‘distutils.cmd‘ 解决
  7. AT1225 稻草人(cdq分治+二分)
  8. x210项目重新回顾之七uboot_2013.10之nfs方式启动内核
  9. 2021年度十大热门ER图(实体关系图)
  10. 电子负载和电池容量测试仪概念误区