如何用Python编写一个Shell

23 投票
2 回答
19859 浏览
提问于 2025-04-15 21:20

我写了一个小的控制台应用程序,可以执行一些特定的任务。它的用户界面和版本控制系统或者yum等工具类似。简单来说,你可以把它想象成一种特定领域的语言。现在我想写一个像bash那样的命令行工具,可以执行和自动补全这种语言,并且有命令历史记录(这样我就不需要在每个命令时都加载和保存那些比较大的xml文件)。总之,我想要的东西类似于ipython,但不是用来执行python代码,而是用来执行我自己的DSL。

有没有什么库可以帮助我实现这个?我看到python里有readline和rlcompleter模块,但它们的文档似乎只说明可以用于python shell本身,难道我漏掉了什么吗?

2 个回答

3

如果你需要通过网络访问一个管理用的命令行界面,使用Twisted这个Python框架里的manhole功能是个不错的选择。下面是一个例子:

http://www.devshed.com/c/a/Python/SSH-with-Twisted/3/

22

你可以看看 cmdcmd2 这两个模块。我觉得它们能满足你的需求。之前在 PyCon 上有一个关于这些内容的 演讲

撰写回答