cmd2
provides a couple different ways for running commands immediately after your application starts up:
- Commands at Invocation
- Startup Script
Commands run as part of a startup script are always run immediately after the application finishes initializing so they are guaranteed to run before any Commands At Invocation.
You can send commands to your app as you invoke it by including them as extra arguments to the program. cmd2
interprets each argument as a separate command, so you should enclose each command in quotation marks if it is more than a one-word command. You can use either single or double quotes for this purpose.
$ python examples/example.py "say hello" "say Gracie" quit
hello
Gracie
You can end your commands with a quit command so that your cmd2
application runs like a non-interactive command-line utility (CLU). This means that it can then be scripted from an external application and easily used in automation.
Note
If you wish to disable cmd2's consumption of command-line arguments, you can do so by setting the allow_cli_args
argument of your cmd2.Cmd
class instance to False
. This would be useful, for example, if you wish to use something like Argparse to parse the overall command line arguments for your application:
from cmd2 import Cmd
class App(Cmd):
def __init__(self):
super().__init__(allow_cli_args=False)
You can execute commands from an initialization script by passing a file path to the startup_script
argument to the cmd2.Cmd.__init__()
method like so:
class StartupApp(cmd2.Cmd):
def __init__(self):
cmd2.Cmd.__init__(self, startup_script='.cmd2rc')
This text file should contain a Command Script
<features/scripting:Command Scripts>
. See the AliasStartup example for a demonstration.