【问题标题】:Framework for shell like command line interactive application类似命令行交互式应用程序的 shell 框架
【发布时间】:2015-07-08 21:59:09
【问题描述】:

我想为 Linux 编写自己的交互式 shell。

  • 我自己的命令集有限
  • 无需执行外部二进制文件

这并不难,但我想做一些对用户更友好的事情。

  • TAB 自动完成
  • 交互式行编辑
  • 上次命令的历史记录

是否有一些库/框架/最小外壳可用于此? 所以我不需要自己写所有的东西。

首选许可是一些许可(MIT、BSD、Apache ..)

首选语言是python、c、c++、javascript或sh

【问题讨论】:

  • 有人可能会争辩说这是stackoverflow.com/questions/1883467/… 的重复——任何答案在这里也都是可接受的答案——尽管根据现代网站规则,这个问题将不再被允许。
  • 如果我知道 readline,我会自己 google 一下。
  • 当然——人们不知道正确的关键字是我们想要好的重复问题的原因(也就是说,重复的问题以一种没有的人的方式提出问题'不 知道关键字会,并且在某种程度上与之前在网站上提出的相同问题的任何其他方式有很大不同)——我们将它们标记为重复,然后它们提供一个指针/规范答案的路标,从而为知识库增加价值。

标签: linux shell


【解决方案1】:

对于 Python,标准库 cmd 模块执行以下操作:https://docs.python.org/2.7/library/cmd.html

对于 C 语言,您有多个选项可用于管理交互式编辑、历史记录和选项卡补全:

  • readline,由 bash 本身使用,但已获得 GPL 许可。
  • editline,一种广泛使用的 BSD 替代方案。
  • linenoise,一个较新的替代方案。

顺便说一句——这个问题显然是题外话;我希望它会关闭。

【讨论】:

  • 无论如何,谢谢。我只是不知道从哪里开始,从哪里问。这帮助很大。
【解决方案2】:

如果您需要作业控制(即后台处理),您可以查看 glibc 手册on Implementing a Shell

【讨论】:

  • 由于 OP 指定“无需执行外部二进制文件”,显然不需要支持在后台执行它们。尽管如此,这是一个有趣的链接。
  • 他也可以看看 bash 的来源:ftp.gnu.org/gnu/bash。不需要执行外部二进制文件的 shell 是非常有限的,因为它缺乏任何有用的功能(或者它可以自己提供它但不会再成为 shell(想象所有二进制文件,如 mkdir、cd、ld , ls, cat, touch, file 等放在一起))。
  • 在上下文中阅读问题,目标显然不是您所想的意义上的 shell,而是非 shell 软件的交互式命令行/REPL。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 2018-03-16
  • 2010-10-01
  • 2010-11-28
  • 2012-07-13
相关资源
最近更新 更多