c - 在简单的 shell 中实现历史函数(C 语言)

标签 c shell unix

我对 C 编程完全陌生,目前正在学习 C/UNIX 类(class)。我在开始这项作业时遇到了一些问题...这是我们分配的第一个 C 程序,但是教授在解释完成它需要什么或从哪里开始方面非常缺乏,并且问他没有没有取得多大成就。由于我对 C 的了解很少,所以我不知道从哪里开始。

该程序是一个简单的 shell,我应该在其中实现一些历史功能。 shell的源代码已经给出。应该添加这些能力:

history - 在命令行中输入历史记录,最近的 shell 命令显示在前面,并带有数字(从 1 开始)。命令将存储在文本文件中。我假设历史命令每次都会打印这个文本文件。

!number - 在命令行中输入此数字,将重新执行文件中具有该编号的命令

!string - 在命令行中键入此内容,重新执行以该字符串开头的最后一个命令

!! - 在命令行输入,重新执行之前的命令

源代码(这是 shell 的三个文件之一,但我相信应该编辑的那个):

#include "parser.h"
#include "shell.h"
#include <stdio.h>
#include <stdlib.h>

int main(void) {
char input[MAXINPUTLINE];

signal_c_init();

printf("Welcome to the sample shell!  You may enter commands here, one\n");
printf("per line.  When you're finished, press Ctrl+D on a line by\n");
printf("itself.  I understand basic commands and arguments separated by\n");
printf("spaces, redirection with < and >, up to two commands joined\n");
printf("by a pipe, tilde expansion, and background commands with &.\n\n");


while (fgets(input, sizeof(input), stdin)) {
stripcrlf(input);
parse(input);
printf("\n$ ");
}
return 0;
}

让我郑重声明,我并没有要求任何人在这里做我的作业。我真的不知道从哪里开始,也没有给出任何指示。在上课之前,我对这种语言没有太多的经验,因此我对如何实现此类事情没有类似的了解。我可以开始使用的任何类型的资源或功能都会有帮助。

最佳答案

要处理历史记录(和命令行编辑,以及...),请查看 readline 或 editline 库。

关于c - 在简单的 shell 中实现历史函数(C 语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22383103/

相关文章:

c++ - 免费的 C/C++ PDF 创建器库 Linux(不是 libharu)

shell - (如何)是否可以仅向那些使用标准 shell 命令和/或 Unix utils 已经拥有 r 权限的人添加 x 权限?

unix - ffmpeg 从子窗口捕获输出

unix - 如何跳过文件的第一行 - awk

c++ - CUDA 并行化嵌套 for 循环

c - 源文件看不到其他 header 的定义

调用 fdopendir() 破坏文件描述符

linux - 旁边的文件名计算每 2 个元素的数量

C - 命令行解释器

linux - 如何在shell中输出返回码?