我讨厌 bash 'history' 命令。它永远找不到我想要的历史项目。有时我可以通过“历史 | 得到我想要的”。grep XXX' 但通常要么历史太长(400+ 点击!耶)要么太短(没有点击。嘘)。
我心想,我为什么不写一个小“历史助手”命令,让我基本上“加星”特定的历史项目,并让它们总是出现在我的历史中,有一个全局星表和一个 cwd 特定星表。
听起来很神奇。所以我天真地试图通过这样做来阅读历史:
system("history > blah")
FILE *fp = fopen("blah", "r")
哦,那没用。啊,我明白了,system() 命令在它自己的上下文中运行,并且无法访问 bash 历史记录。德拉斯。好的,所以我会尝试阅读~/.bash_history
咩咩~不。只有在最后一次调用 a) history -w 或 b) 调用退出 shell 之前,历史记录才会出现。
所以,问题:如何以编程方式访问 C 中的当前 bash 历史记录?
(注意。不,不是~/.bash_history 中的内容,当前历史记录,当您从提示中键入“历史记录”时看到的确切输出;另外,为什么要问 C?为什么不...但真的,因为我已经有一个方便的 ncurses 包装器,我将使用它来让我在普通终端上进行花哨的自动完成和子选择历史搜索......)
编辑:拜托,如果你有一些有用的东西可以贡献,我很高兴听到它,但我有点厌烦诸如“你应该阅读 bash 历史手册页”之类的评论。
我读过它们。没有什么可以让我为历史项目“加注星标”并让它始终出现在我的历史中,也没有什么可以让我维护每个目录的历史上下文。这些都是历史所不支持的。我很欣赏这个。这就是为什么我想为我的特定目的编写一个辅助函数。如果您有类似“也许您应该多阅读历史手册页”之类的评论,请忍住,不要回复;它并没有真正解决我的问题。:)