Zsh中的命令历史


61

Zsh如何跟踪命令历史记录?

我在主目录中看到两个文件:.zhistory.zsh_history。它们之间有什么区别?这些文件似乎包含了我的所有历史记录。Zsh会永远保持向其中之一添加行吗?这会不会使历史记录搜索速度太慢?

我可以安全地使这些文件符号链接到另一个位置吗?(例如,一个git存储库以跟踪历史记录的更改)


检查~/.zshrc和/或/etc/zshrc用于选项描述有zsh.sourceforge.net/Guide/zshguide02.html#l17
UVV

Answers:


78

Zsh在变量指示的文件中存储输入行(可能包含时间信息)HISTFILE。这应该是一个绝对文件名(否则它将相对于当前当前目录进行解释)。

Zsh没有的内置默认值HISTFILE。zsh的分布带有一个安装向导它具有价值的新用户~/.histfile内置的,所以这是zsh的用户获得默认。Oh-my-zsh带有HISTFILE=.zhistory预设。因此,似乎您在默认设置和oh-my-zsh中都尝试了zsh。检查您的.zshrc(或文件日期)以查看您当前正在使用的日期。

zsh如何打开文件,因此,如果它是符号链接,会发生什么,取决于几个选项。

  • 如果选择了其中一个选项append_history(默认设置), inc_append_history或者share_history设置了,或者使用显式保存了历史记录fc -AI,则zsh会追加到现有文件中。
    请注意,即使在这些设置下,zsh有时也会如下所述覆盖文件,以将其缩小为大小。
  • 否则,如果hist_save_by_copy设置了该选项(自zsh 5.0起默认设置,但在4.2中不存在),则zsh会写入一个临时文件,然后在完成时将其移到适当的位置。在这种情况下,如果历史记录文件是符号链接,则新文件将替换符号链接。
  • 否则,zsh将覆盖现有文件。

不要将zsh指向符号链接,而是将其设置HISTFILE为您想要历史记录文件所在的位置。

通过变量HISTSIZE和 可以配置保留多少行历史记录SAVEHISTHISTSIZE是会话中保留SAVEHIST的最大行数,也是历史记录文件中保留的最大行数。

要完全保存一些历史记录,您需要同时设置HISTFILESAVEHIST,因为默认值SAVEHIST是0。您可能还希望增加HISTSIZE它(从zsh 5.0开始,默认值只有30)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.