1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
=========================================
Features requiring only parameter changes
=========================================
Several aspects of a ``cmd2`` application's behavior
can be controlled simply by setting attributes of ``App``.
A parameter can also be changed at runtime by the user *if*
its name is included in the dictionary ``app.settable``.
(To define your own user-settable parameters, see :ref:`parameters`)
Case-insensitivity
==================
By default, all ``cmd2`` command names are case-insensitive;
``sing the blues`` and ``SiNg the blues`` are equivalent. To change this,
set ``App.case_insensitive`` to False.
Whether or not you set ``case_insensitive``, *please do not* define
command method names with any uppercase letters. ``cmd2`` will probably
do something evil if you do.
Shortcuts
=========
Special-character shortcuts for common commands can make life more convenient for your
users. Shortcuts are used without a space separating them from their arguments,
like ``!ls``. By default, the following shortcuts are defined:
``?``
help
``!``
shell: run as OS-level command
``@``
load script file
``@@``
load script file; filename is relative to current script location
To define more shortcuts, update the dict ``App.shortcuts`` with the
{'shortcut': 'command_name'} (omit ``do_``)::
class App(Cmd2):
Cmd2.shortcuts.update({'*': 'sneeze', '~': 'squirm'})
Default to shell
================
Every ``cmd2`` application can execute operating-system
level (shell) commands with ``shell`` or a ``!``
shortcut::
(Cmd) shell which python
/usr/bin/python
(Cmd) !which python
/usr/bin/python
However, if the parameter ``default_to_shell`` is
``True``, then *every* command will be attempted on
the operating system. Only if that attempt fails
(i.e., produces a nonzero return value) will the
application's own ``default`` method be called.
::
(Cmd) which python
/usr/bin/python
(Cmd) my dog has fleas
sh: my: not found
*** Unknown syntax: my dog has fleas
Timing
======
Setting ``App.timing`` to ``True`` outputs timing data after
every application command is executed. |settable|
Echo
====
If ``True``, each command the user issues will be repeated
to the screen before it is executed. This is particularly
useful when running scripts.
Debug
=====
Setting ``App.debug`` to ``True`` will produce detailed error stacks
whenever the application generates an error. |settable|
.. |settable| replace:: The user can ``set`` this parameter
during application execution.
(See :ref:`parameters`)
Other user-settable parameters
==============================
A list of all user-settable parameters, with brief
comments, is viewable from within a running application
with::
(Cmd) set --long
abbrev: True # Accept abbreviated commands
case_insensitive: True # upper- and lower-case both OK
colors: True # Colorized output (*nix only)
continuation_prompt: > # On 2nd+ line of input
debug: False # Show full error stack on error
default_file_name: command.txt # for ``save``, ``load``, etc.
echo: False # Echo command issued into output
editor: gedit # Program used by ``edit``
feedback_to_output: False # include nonessentials in `|`, `>` results
prompt: (Cmd) #
quiet: False # Don't print nonessential feedback
timing: False # Report execution times
|