我正在实现自己的shell。但是为了支持命令历史记录,我需要在标准shell中使用监视器向上/向下箭头键。请告诉我如何处理箭头键作为输入或这些键是否产生信号?请详细说明。
答案 0 :(得分:2)
箭头和其他特殊键会向您发送特殊字符串,这些字符串取决于正在使用或模拟的终端。要最简单地处理这个问题,您可以使用termcap之类的库。更简单的是,根据您声明的目的(命令历史记录支持),将使用readline,这基本上是为您做的(并允许用户在链接到许多应用程序的许多应用程序中自定义其首选工作模式的各个方面同一个图书馆)。
答案 1 :(得分:1)
这取决于你预计会走多远。更糟糕的是,你正在编写键盘中断处理程序。最好的情况,比如readline。
请向您的教授查询方向。还要检查您的课程材料,看看教授是否提供了相关的链接/示例。
答案 2 :(得分:-1)
作业是否具体说你需要一个“光标键驱动”命令历史记录?
简单的选项是模仿shell fc ,例如
$ ls
... file listing ...
$ fc -l
1 ls
2 fc -l
$ fc -r 1
... file listing ...
和(虽然我将自己的想法作为我自己的想法,但也可以一直这样),以便能够编辑您可以使用的命令行
fc -e start end
将历史记录从头到尾写入文件,启动编辑器,然后将生成的文件作为脚本执行。这样你的shell就不会使用库,而是启动命令和执行脚本,这就是shell应该做的事情。