1

我正在编写一个在 Linux shell 中运行的 C 程序。现在我遇到了这样的命令问题。

#include <stdio.h>
void main()
{
char* command="history>>history";
system(command);
}

我希望它将命令“历史”的结果写入文档,但它失败了一个空白。

如果我将其更改为“日期>>历史”,当前系统时间将被写入文档。

“历史>>历史”有什么问题吗?如果我想得到这份工作,我应该怎么做?谢谢!

4

1 回答 1

5

问题是这history不是一个真正的命令,而是一个内置的 shell。因此,您不能从 C 程序 [1] 中调用它。

根据用户使用的 shell,您可以改为从 获取历史记录~/.bash_history~/.zsh_history依此类推。但是请注意,zsh 仅在会话结束时写入此文件。

[1] 好吧,理论上你可以尝试system("bash -c history"),但你不会得到实际的历史记录,因为内置函数没有在当前会话的上下文中运行。

于 2013-08-04T20:17:04.870 回答