Table of Content

This example is from Learning Python exercise, just fixed small issues:
– cmd prompt not working properly due to order
– add pwd function


shell.py
--------

import cmd, os, sys, shutil

class UnixShell(cmd.Cmd):
    def do_EOF(self, line):
        """ The do_EOF command is called when the user presses Ctrl-D (unix)
            or Ctrl-Z (PC). """
        sys.exit(  )

    def help_ls(self):
        print "ls <directory>: list the contents of the specified directory"
        print "                (current directory used by default)"

    def do_ls(self, line):
        # 'ls' by itself means 'list current directory'
        if line == '': dirs = [os.curdir]
        else: dirs = line.split()
        for dirname in dirs:
            print 'Listing of %s:' % dirname
            print '\n'.join(os.listdir(dirname))

    def do_pwd(self,parameter_s=''):
        print os.getcwdu()

    def do_cd(self, dirname):
        # 'cd' by itself means 'go home'.
        if dirname == '': dirname = os.environ['HOME']
        os.chdir(dirname)

    def do_mkdir(self, dirname):
        os.mkdir(dirname)

    def do_cp(self, line):
        words = line.split(  )
        sourcefiles,target = words[:-1], words[-1] # target could be a dir
        for sourcefile in sourcefiles:
            shutil.copy(sourcefile, target)

    def do_mv(self, line):
        source, target = line.split()
        os.rename(source, target)

    def do_rm(self, line):
        [os.remove(arg) for arg in line.split()]

class DirectoryPrompt:
    def __repr__(self):
        return os.getcwdu()+'$ '

#cmd.PROMPT = DirectoryPrompt() # shell prompt only gets default (Cmd)
shell = UnixShell()
shell.prompt = DirectoryPrompt()
shell.cmdloop()