官方文档有句话"allows you to call any program",并且:
helps you write shell scripts in Python by giving you the good features of Bash
第一句话助你在Python中轻松调用自己的程序,第二句则给你机会和Shell这种土豪交朋友
helps you write shell scripts in Python by giving you the good features of Bash
第一句话助你在Python中轻松调用自己的程序,第二句则给你机会和Shell这种土豪交朋友
㈠ 调用系统的程序
>>> import sh >>> print(sh.ls('/home/mysql')) cdio_bak.sql mysql-5.5.16.tar.gz mm percona-xtrabackup-2.1.4-656-Linux-i686.tar.gz mysql percona-xtrabackup-2.1.4-Linux-i686 mysql-5.5.16 startmysql.sh
㈡ 调用自己的程序
>>> import sh >>> r=sh.Command('/root/dd.py') >>> r() hello,DBA
㈢ bake命令参数
>>> import sh >>> du=sh.du.bake('-shc') >>> print (du('/home/mysql')) 1.1G /home/mysql 1.1G 总计
㈣ glob列出文件
>>> import sh >>> list=sh.glob('/root/mm/*') >>> print list ['/root/mm/Backup', '/root/mm/Usplash', '/root/mm/AWN', '/root/mm/Wallpapers', '/root/mm/GRUB', '/root/mm/Mozilla']
㈤ 管道
>>> print(sh.sort(sh.du(sh.glob('*'),'-shc'),'-rn')) 712K distribute-0.6.49.tar.gz 672K setuptools-1.1.5.tar.gz 548K get-pip.py
管道是有序的,默认由内而外,但如果需要并行呢?加个_piped=True
>>> for line in sh.tr(sh.tail("-f", "/home/mysql/mysql/log/alert.log", _piped=True), "[:upper:]", "[:lower:]", _iter=True): ... print line ... innodb: doublewrite buffer not found: creating new innodb: doublewrite buffer created innodb: 127 rollback segment(s) active. innodb: creating foreign key constraint system tables innodb: foreign key constraint system tables created
By DBA_WaterBin
2013-09-30
Good Luck