Previously, I wrote about some existing examples of Rich Command Shells, some from the past, some from the present.
Now, I'd like to look at this from the practical side of things. I have some software that I would like to see have a rich command shell.
What do I Want?
First up, what should we consider to be characteristics of a "rich command shell" for the purposes of this post?
For my interests, I want to see:
- Works in a regular terminal.
- Also works in terminals with more advanced features.
- Adapts to the size and capabilities of the terminal, although I recognize that feature negotiation doesn't work for everything, so some things will be controlled by settings.
- Works when not run in a terminal (like having output piped to a file or another process).
- Can be run in conjunction with a more specialized program that might present an even richer interface or embed the functionality somehow.
The shorter version of this is:
- It should work like things do today, in the existing environment.
- It should adaptively support richer means of interaction as well without violating typical assumptions of today.
- The means of adaptation should be flexible and ...