我讨厌bash'历史'命令.它永远不会找到我想要的历史项目.有时我可以通过'历史|获得我想要的东西 grep XXX',但往往是历史太长(400次点击!yay)或太短(没有点击.嘘).
我心想,为什么我不写一个小小的'历史帮手'命令让我基本上'明星'特定的历史项目,并使它们总是出现在我的历史中,同时包括全球明星列表和cwd特定明星列表.
听起来很棒.所以我天真地尝试通过这样做来阅读历史:
system("history > blah")
FILE *fp = fopen("blah", "r")
Run Code Online (Sandbox Code Playgroud)
哦,那没用.啊,我明白了,system()命令在它自己的上下文中运行,无法访问bash历史记录.Drats.好的,所以我会尝试阅读〜/ .bash_history
ba baaa~不.这只是历史记录,直到最后一次调用a)历史-w,或b)调用退出shell.
所以,问题:我如何以编程方式访问C中的当前bash历史记录?
(注意:不,不是〜/ .bash_history中的内容,当前历史记录,当您从提示中键入"历史记录"时看到的确切输出;另外,为什么C要问?为什么不...但是真的,因为我已经有一个方便的ncurses包装我打算用来让我在正常终端上进行花式自动完成和子选择历史搜索...)
编辑:请,如果你有一些有用的东西可以贡献,我很高兴听到它,但我有点厌恶像"你应该阅读bash历史手册页"这样的评论.
我读过它们.有什么可以让我"明星"历史项,并将它一直都在我的历史打开了,并没有什么可以让我保持每个目录历史文脉.这些是历史不支持的事情.我很欣赏这个.这就是为什么我想写一个帮助函数,为了我的特定目的.如果你有一个评论,"也许你应该阅读更多的历史手册页",请把它拿进来,不要回应; 它并没有真正解决我的问题.:)