由于一些我无法理解的原因(并且超出了这个问题的范围),我的 Zsh 历史文件被损坏了。我打开了几个会话,其中有记忆中的历史。有没有办法恢复历史记录文件(以其正确的格式)来自内存中的内容?
history
虽然or命令的输出fc
看起来像这样(至少默认情况下)
57694 type -a ssh-keygen
57695 ssh -v localhost
当文件的格式如下
: 1545938685:133;vim ~/.zshrc
: 1545938820:0;exit
(显然这些不是相同的条目 - 我只是让它们显示格式,因此是我面临的问题。)
有什么方法可以fc
显示重新创建历史记录所需的所有数据文件和损坏之前一样吗?
(如果这不可能,我可以恢复最多当然,从备份驱动器中恢复它,但我宁愿恢复所有它,并且知道将来如何执行此操作将很有用。)
答案1
深入研究ZSHBUILTINS(1)
的手册页我发现:
fc -W .zsh_history_from_ram
zsh
将历史记录写入文件,其格式与保存的格式完全相同~/.zsh_history
。只要您的 shell 会话在内存中仍保留有历史记录,此方法就可以工作。