如何从内存中恢复损坏的 Zsh 历史文件?

ico*_*ast 5 command-history zsh

由于部分原因使我无法理解(并且超出了本问题的范围),我的 Zsh 历史文件已损坏。我打开了几个会话,这些会话在内存中都有历史记录。有没有办法从内存中恢复历史文件(以正确的格式)?

虽然historyorfc命令的输出看起来像这样(至少默认情况下)

57694  type -a ssh-keygen
57695  ssh -v localhost
Run Code Online (Sandbox Code Playgroud)

而文件的格式如下

: 1545938685:133;vim ~/.zshrc
: 1545938820:0;exit
Run Code Online (Sandbox Code Playgroud)

(显然这些不是相同的条目——我只是给它们显示格式,因此是我面临的问题。)

有什么方法可以fc显示我需要重新创建历史文件的所有数据,就像它在损坏之前一样?

(如果这是不可能的,我当然可以从备份驱动器中恢复大部分,但我更愿意恢复所有这些,将来知道如何执行此操作会很有用。)

小智 5

深入研究ZSHBUILTINS(1)手册页,我发现:

fc -W .zsh_history_from_ram
Run Code Online (Sandbox Code Playgroud)

在它被保存在完全一样的格式写入文件,历史记录zsh~/.zsh_history。只要您有一个仍然在内存中保留历史记录的 shell 会话,这将起作用。