readline 帮助功能及自动完成
我想做一个和JUNOS命令行界面或者思科命令行界面一样的项目。
我发现了gnu readline这个工具,但里面的函数和方法太多了,让我有点困惑。不过,我想要一个可以用Tab键和空格键自动补全的命令行界面,还希望能用问号显示命令的帮助信息。
我有两个问题:
- 我找到了用Python和Perl写的代码,但我对Python不太熟悉,虽然那段代码是完整的,我只是想知道我是否应该继续用Python。其实我更擅长Perl,但到目前为止我找到的Perl代码都不完整。
readline.parse_and_bind('tab: complete')
我应该把同一个补全功能用在帮助和自动补全这两个功能上吗?我还看过另一个函数。
readline.set_completion_display_matches_hook(print_suggestions)
你有什么建议吗?我对这个完全是新手!
2 个回答
1
我们需要创建一个类似于JunOS、Cisco或VyOS的命令行界面(cli),于是我们在ishell的基础上进行了开发,ishell使用readline来完成这个工作。
在项目页面上有这样的介绍:
ishell可以帮助你轻松创建一个交互式的命令行界面。它支持命令补全、动态参数、命令历史记录和命令链式执行。
你可以在GitHub上查看这个项目:https://github.com/italorossi/ishell
Cisco的示例:
附注:我是这个项目的作者 :).
1
我得说,我有点搞不清楚你问题中具体想问的是什么。不过,我还是给你一个建议:
可以先从cmd模块开始。这个模块给你提供了一个很好的框架,可以用来构建命令行解释器。它自带了自动补全功能(前提是你有安装readline)。你可以先实现你的命令行界面。一旦这个部分稳定下来,你再考虑添加一些更方便的功能,比如命令参数的自动补全、帮助键等等。这样,你就有了一个可以使用的应用,等到真正需要的时候再去详细了解readline的细节。如果我是你,我不会一开始就去研究整个readline的API。