在python cmd
模块中,当我按下TAB按钮时,我会获得可用的命令列表,这些命令可用并在我的cmd.Cmd
类中定义。
我的问题是,是否可以根据上下文显示一组命令,例如在Cisco路由器CLI中?
答案 0 :(得分:1)
我对此lib没有任何经验,但doc说
如果启用了完成,则将自动完成命令,并通过使用参数text,line,begidx和endidx调用
complete_foo()
来完成命令args。 text是我们尝试匹配的字符串前缀:所有返回的匹配项必须以它开头。 line是删除前导空格的当前输入行,begidx和endidx是前缀文本的开始和结束索引,可用于根据参数所在的位置提供不同的完成。
因此,您可以在complete_foo
函数
答案 1 :(得分:0)
我找到了问题的答案。可以使用嵌套解释器,因此嵌套解释器是另一个具有自己命令的解释器对象,这样每个上下文都可以由嵌套解释器建模。这是一个很好的解释和例子:
答案 2 :(得分:0)
如果你想要像思科这样的东西,请看看ishell,
ishell可帮助您轻松为应用程序创建交互式shell。它支持命令完成,动态参数,命令历史和命令链接。
https://github.com/italorossi/ishell
在https://github.com/italorossi/ishell/blob/master/examples/cisco.py有一个像ci一样的cli示例
PS:我是作者。