我如何(从脚本)向 zsh 命令历史添加一些东西?

ico*_*ast 8 shell history zsh

我希望能够查看我的命令历史记录并了解我发出各种命令的上下文——换句话说,“我在哪个目录中?” 有多种方法可以实现这一点,但所有这些(我能想到的)都需要操纵 zsh 历史记录以添加(例如)带有 $(pwd) 结果的注释行。(我可以创建名为 cd & pushd & popd 等的函数,或者我可以使用 zsh 的 preexec() 函数和它的 period() 函数最多每 X 秒添加一次注释行,就在我发出命令之前,或者可能有其他方式。)

问题是,我不想直接操作历史文件并绕过 shell 的历史机制,但我想不出一种方法(例如,使用 fc 命令)在不实际输入的情况下向历史添加内容在命令行上。我怎么能这样做?

Pau*_*ce. 10

您可以使用print -s命令(请参阅参考资料man zshbuiltins)将您想要的任何内容添加到历史记录中。您还可以创建一个称为zshaddhistory(请参阅 参考资料man zshmisc)的钩子函数,它可以在创建历史内容时对其进行操作。

请参阅我的 Bash 历史记录功能以获取灵感。