命令重新执行简单的shell

时间:2014-03-22 07:23:54

标签: c shell unix

我设法完成了一项任务的中途,该任务要求我在一个简单的shell中实现历史记录功能(在C中,通过PuTTY远程使用UNIX框)。它基本上模仿了csh历史函数。它将来自命令行的过去命令保存在这样格式的文件中,例如:

1 - pwd
2 - 回音你好
3 - whoami

我现在遇到的问题是如何让它重新执行命令。例如,输入"!3"再次执行whoami。输入"!echo"重新执行以该字符串开头的最后一个命令," echo hello"。

教授说应该用字符串比较来完成。他说这不应该是非常复杂的。我已经设法制作了#34; !!"打印最后一个命令。但另外两次重新执行,我不知道使用什么技术。要打印历史记录,我只是将输入与字符串"历史记录"进行比较。并为" !!"我也在将它与输入流进行比较。但对于这些我不知道如何检查和比较输入。 strcmp是否可以用于此,或者我是否朝错误的方向看?

冒着听起来愚蠢的风险,我应该注意到我对编程仍然很陌生,特别是在C语言中,这个课程没有提供很多指导。

1 个答案:

答案 0 :(得分:0)

如果它是一个数字(提示:阅读strtol),请检查数字。

如果它不是数字,则搜索命令。

在内部,您可以将其存储为链接列表,其中每个节点都包含数字和命令。