标签: linux shell data-structures keyboard-events
我在c中实现了一个简单的linux shell。现在,我正在添加一些功能,我立即想到的是能够用向上箭头显示最后的命令。
问题1: 但是,我不知道如何实现这一目标。你呢?
问题2: 任何关于如何存储“历史”命令的评论也值得赞赏。我想像一个允许访问所有元素的队列这样的东西是个好主意。我错了吗?我是否必须实施它还是已经有一些我应该知道的良好实现?
感谢。
答案 0 :(得分:5)
在您的shell中构建libedit或readline支持。
答案 1 :(得分:1)
如果您想要懒惰,可以使用rlwrap:
rlwrap prog
答案 2 :(得分:0)
我为HelenOS编写了shell。抓住bzr repo并导航到uspace/app/bdsh(bdsh代表(b)rain(d)ead(sh)ell)。
uspace/app/bdsh
其他贡献者已经为处理输入的函数添加了行编辑/历史/制表符完成功能。它纯粹用ANSI C编写,不与glibc链接并实现自己的功能。代码(在shell和底层的HelenOS libc中)都是3个子句BSD,你可以在任何东西中使用它。
如果不出意外,只需检查实施就可以开始了。