題 如何修復和恢復zsh中的“損壞的歷史文件”?


重啟後,我開始在加載shell時看到一條消息:

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

我如何從這種情況中恢復並可能恢復一些歷史記錄?


86
2017-08-16 02:52


起源




答案:


找一個 博客文章 描述一個似乎對我有用的修復,同時恢復我遺失的歷史記錄:

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

153
2017-08-16 03:54



請問這個命令是什麼 fc -R .zsh_history 意思?我試過了 man fc 它告訴我 No manual entry for fc,也不是 fc -h 告訴我的不僅僅是用法。謝謝。 - kenshinji
有關fc命令的更多詳細信息,請參閱 這裡 和 這裡。 -R選項不存在,但zsh完成列表,在選項中, -R -- read history from file - Jeffrey Lebowski
任何人都知道這個錯誤可能是由什麼造成的? - hugronaphor
@hugronaphor在我的情況下,我必須嚴格關閉我的筆記本電腦。這給我帶來了一些問題,因為我在磁盤寫操作期間這樣做了,其中一個被破壞的東西是我的zsh文件等等。 - RyanNerd
為了正確 fc 文檔,請參閱 man zshbuiltins,也可在 zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html。正如杰弗裡所說,“'fc -R'從給定文件中讀取歷史記錄”。 - Martin


簡單地刪除隨機字符也可能有效:

  • vim .zsh_history

  • 刪除任何奇怪的字符,這些字符很可能接近結尾。 (就我而言,我有一串 @ 在強制關機後的倒數第二行)

  • :x (保存並退出)


3
2017-07-06 10:03



我也有一堆 @在一條線上。我刪除了那些,瞧,錯誤消失了! - illusionist