我在 c 中实现了一个简单的 linux shell。现在,我正在添加一些功能,我立即想到的是能够使用向上箭头显示最后的命令。
问题1:
但是,我不知道如何做到这一点。你?
问题 2:
任何关于如何存储“历史”命令的评论也值得赞赏。我想像允许访问所有元素的队列之类的东西是个好主意。我错了吗?我必须实施它还是已经有一些我应该知道的好的实施?
谢谢。
我在 c 中实现了一个简单的 linux shell。现在,我正在添加一些功能,我立即想到的是能够使用向上箭头显示最后的命令。
问题1:
但是,我不知道如何做到这一点。你?
问题 2:
任何关于如何存储“历史”命令的评论也值得赞赏。我想像允许访问所有元素的队列之类的东西是个好主意。我错了吗?我必须实施它还是已经有一些我应该知道的好的实施?
谢谢。
在您的 shell 中构建libedit或readline支持。
如果你想偷懒,你可以使用rlwrap:
rlwrap prog
我为HelenOS编写了 shell 。获取 bzr 存储库并导航到uspace/app/bdsh
(bdsh 代表 (b)rain (d)ead (sh)ell)。
其他贡献者已经在处理输入的功能中添加了行编辑/历史记录/选项卡完成。它纯粹用 ANSI C 编写,不链接 glibc 并实现自己的功能。代码(在 shell 和底层 HelenOS libc 中)是 3 子句 BSD,你可以在任何地方使用它。
如果不出意外,只需检查实现以开始使用可能会有所帮助。