如何在zsh中修复和恢复“损坏的历史记录文件”?


100

重新启动后,加载外壳程序时我开始看到一条消息:

zsh: corrupt history file /home/myusername/.zsh_history

如何从这种情况中恢复并可能恢复某些历史记录?

Answers:


170

找到了一篇博客文章,描述了对我似乎有用的修复程序,同时恢复了我丢失的历史记录:

mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history

7
请问命令fc -R .zsh_history是什么意思?我已经尝试过了man fc,它告诉了我No manual entry for fc,而且使用情况也不能fc -h告诉我更多。谢谢。
kenshinji '16

2
有关fc命令的更多详细信息,请参见此处此处。-R选项不存在,但是zsh补全列表包括这些选项,-R -- read history from file
Jeffrey Lebowski

有人知道此错误可能是由什么引起的吗?
hugronaphor

1
@hugronaphor就我而言,这是我必须对笔记本电脑进行硬关机。这对我造成了一些问题,因为我是在磁盘写操作期间执行此操作的,而其中一件损坏的东西是我的zsh文件。
RyanNerd

1
有关正确的fc文档,请参见man zshbuiltins,也可以在zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html上找到。如Jeffrey所建议,“'fc -R'从给定文件中读取历史记录”。
马丁

13

简单地删除随机字符也可能有效:

  • vim .zsh_history

  • 删除所有可能在末尾出现的奇怪字符。(在我的情况下,@在强制关机之后,我在最后第二行有一个字符串)

  • :x (保存并退出)

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.