linux c语言实现history
时间: 2023-07-26 12:18:41 浏览: 223
要在Linux中实现命令历史记录,你可以使用readline库提供的函数来完成。
下面是一个简单的示例程序,可以记录和显示最近输入的10个命令:
```c
#include <stdio.h>
#include <stdlib.h>
#include <readline/readline.h>
#include <readline/history.h>
#define MAX_HISTORY 10
int main() {
char* input;
int i;
// 读取历史记录文件
using_history();
// 设置历史记录文件的最大行数
stifle_history(MAX_HISTORY);
while (1) {
// 读取用户输入
input = readline("> ");
// 如果用户输入为空,则继续
if (input == NULL) {
continue;
}
// 如果用户输入为exit,则退出循环
if (strcmp(input, "exit") == 0) {
break;
}
// 将用户输入添加到历史记录中
add_history(input);
// 显示最近10个命令
for (i = history_length - 1; i >= 0 && i >= history_length - MAX_HISTORY; i--) {
printf("%3d %s\n", i, history_get(i)->line);
}
// 释放输入缓冲区
free(input);
}
// 保存历史记录到文件
append_history(history_length, "/tmp/history");
return 0;
}
```
该程序使用readline库提供的readline函数读取用户输入,并使用add_history函数将输入添加到历史记录中。使用history_get函数可以获取历史记录中的某一条命令,并使用history_length变量获取历史记录的长度。
使用stifle_history函数可以设置历史记录的最大行数,使用using_history函数可以读取历史记录文件,使用append_history函数可以将历史记录保存到文件。
阅读全文