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

gak*_*gak 122 zsh file-corruption

重新启动后,我开始在加载 shell 时看到一条消息:

zsh: corrupt history file /home/myusername/.zsh_history
Run Code Online (Sandbox Code Playgroud)

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

gak*_*gak 204

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

mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
Run Code Online (Sandbox Code Playgroud)

之后,您可能需要指示 zsh 从恢复的历史文件中重新读取历史记录

fc -R .zsh_history
Run Code Online (Sandbox Code Playgroud)

  • 请问`fc -R .zsh_history`这个命令是什么意思?我试过`man fc`,它告诉我`没有手动输入fc`,而且`fc -h` 也不能告诉我更多的用法。谢谢。 (12认同)
  • 有关 fc 命令的更多详细信息,请参阅 [此处](http://linuxcommand.org/man_pages/fc1.html) 和 [此处](http://www.computerhope.com/unix/uhistory.htm)。那里没有 -R 选项,但 zsh 完成列出了选项中的“-R -- 从文件中读取历史记录” (3认同)
  • @hugronaphor 在我的情况下,我不得不硬关闭我的笔记本电脑。这给我带来了一些问题,因为我在磁盘写入操作期间这样做了,其中一个被损坏的东西是我的 zsh 文件等。 (3认同)
  • 有关正确的 `fc` 文档,请参阅 `man zshbuiltins`,也可以在 http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html 上找到。正如 Jeffrey 所建议的,“'fc -R' 从给定文件中读取历史记录”。 (2认同)

aks*_*618 28

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

  • vim .zsh_history

  • 删除任何奇怪的字符,这些字符很可能接近结尾。(在我的情况下,@在强制关闭后,我在倒数第二行中有一个字符串)

  • :x (保存并退出)

  • @rugk 在我的尸体上。/秒 (2认同)