从C程序发送Linux命令

从C程序发送Linux命令,c,linux,shell,C,Linux,Shell,我正在编写一个在Linux shell中运行的C程序。 现在我对这样的命令有意见了 #include <stdio.h> void main() { char* command="history>>history"; system(command); } 我希望它将命令历史记录的结果写入一个文档中,但它失败了,结果是一个空白文档 如果我将其更改为date>>history,则当前系统时间将写入文档 历史有什么问题吗>>历史? 如果我想得到那份工作,我该怎么办? 谢谢 问

我正在编写一个在Linux shell中运行的C程序。 现在我对这样的命令有意见了

#include <stdio.h>
void main()
{
char* command="history>>history";
system(command);
}
我希望它将命令历史记录的结果写入一个文档中,但它失败了,结果是一个空白文档

如果我将其更改为date>>history,则当前系统时间将写入文档

历史有什么问题吗>>历史? 如果我想得到那份工作,我该怎么办? 谢谢

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

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

[1] 从理论上讲,您可以尝试systembash-c history,但您无法获得实际的历史记录,因为内置程序没有在当前会话的上下文中运行。

问题在于,历史记录不是一个真正的命令,而是一个shell内置程序。因此,您不能从C程序调用它[1]

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


[1] 从理论上讲,您可以尝试systembash-c history,但您无法获得实际的历史记录,因为内置程序没有在当前会话的上下文中运行。

您希望它在这里做什么?运行哪个历史记录并观察它是。。。可能是shell内置的如果日期写入历史,那么历史可能不会写入任何内容到标准输出,这样您可以使用>>将其重定向到一个文件,对不起,我希望它将历史记录的结果保存到一个名为history的文档中。您为什么使用C进行此操作,而不是bash函数?您希望它在这里做什么?运行哪个历史并观察它是。。。可能是shell内置的如果日期写入历史记录,那么历史记录可能不会写入任何内容到标准输出,这样您就可以使用>>将其重定向到文件,对不起,我希望它将历史记录的结果保存到一个名为history的文档中。您使用C而不是bash函数的原因是什么?谢谢您的解答!谢谢你弄明白了!