一:cmd介绍


    引用python的官方文档

    The cmd class provides a simple framework for writing line-oriented command interpreters.  These are often useful for test harnesses, administrative tools, and prototypes that will later be wrapped in a more sophisticated interface

    cmd是一个提供一种基于面向命令行解释器编写程序的简单框架,这些通常用于测试工具,管理工具和稍后包裹在更加复杂的接口的原型非常有用。

二:cmd的基本使用

    编写基于cmd的程序要注意以下几个点:

1.要继承自cmd.Cmd类
2.要先初始化父类
3.所有的命令都是以do_开头
4.所有的命令帮助都是以help_开头
5.一个命令对应一个帮助,如果没有帮助执行错误命令会出错。


三:cmd例子

    


# -*- coding: utf-8 -*- 
#!/usr/bin/python env

#引入一些包
import sys
import cmd
import os
#继承cmd.Cmd类
class Cli(cmd.Cmd):
        def __init__(self):
                #先初始化父类
                cmd.Cmd.__init__(self)
                #设置命令行的提示符
                self.prompt = "<zhang>"

    #第一个命令dir命令,带一个参数    
        def do_dir(self,arg):
                if not arg:
                        self.help_dir()
                elif os.path.exists(arg):
                        print "\n".join(os.listdir(arg))
                else:
                        print "No such pathexists"
    #带第二个命令
        def do_quit(self,arg):
                return True
    #dir命令的帮助
        def help_dir(self):
                print "syntax:dir path -- displaya list of files and directories"
    #help命令的帮助
        def help_quit(self):
                print "syntax:quit --terminatesthe application"
    #命令的别名
        do_q = do_quit

if __name__ == "__main__":
#开始执行cmd
        cli = Cli()
#循环接受用户输入的命令
        cli.cmdloop()


四:执行结果

[root@work python]# python cmdtest.py 
<zhang>dir
syntax:dir path -- displaya list of files and directories
<zhang>dir /tmp
keyring-8MjWB8
ferret
.ICE-unix
keyring-6y9txT
orbit-gdm
.X11-unix
keyring-e2WQQa
.X0-lock
pulse-weKNqpdx0HtQ
keyring-AoiV8e
keyring-i47ize
keyring-BshjbU
pulse-8TDHlwHPDc2j
keyring-vIwkfE
keyring-M5PGn7
keyring-pb8Q2x
keyring-TME3bW
keyring-gTw1ih
.esd-0
<zhang>help

Documented commands (type help <topic>):
========================================
dir  quit

Undocumented commands:
======================
help  q

<zhang>q