Jak naprawić i odzyskać „uszkodzony plik historii” w Zsh?

101

Po ponownym uruchomieniu zacząłem widzieć komunikat podczas ładowania powłoki:

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

Jak mogę wyjść z tej sytuacji i potencjalnie odzyskać część historii?

gak
źródło

Odpowiedzi:

170

Znaleziono post na blogu opisujący poprawkę, która wydaje się działać dla mnie podczas przywracania mojej brakującej historii:

mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history
gak
źródło
7
Czy mogę zapytać, co oznacza to polecenie fc -R .zsh_history? Próbowałem man fci to mi mówi No manual entry for fc, i żaden nie mógł fc -hmi powiedzieć więcej niż wykorzystanie. Dzięki.
kenshinji,
2
Aby uzyskać więcej informacji na temat polecenia fc, zobacz tutaj i tutaj . Opcja -R nie jest tam obecna, ale wśród opcji znajduje się lista ukończenia zsh,-R -- read history from file
Jeffrey Lebowski
Czy ktoś wie, co mógł być spowodowany tym błędem?
hugronaphor
1
@hugronaphor W moim przypadku było tak, że musiałem mocno wyłączyć laptopa. Powodowało to pewne problemy, ponieważ robiłem to podczas operacji zapisu na dysku, a jedną z rzeczy, które uległy uszkodzeniu, był między innymi mój plik zsh.
RyanNerd
1
Prawidłowa fcdokumentacja znajduje się man zshbuiltinsrównież w witrynie zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html . Jak zasugerował Jeffrey, „fc -R” czyta historię z podanego pliku ”.
Martin
14

Usunięcie losowych znaków może również działać:

  • vim .zsh_history

  • Usuń wszelkie dziwne postacie, które najprawdopodobniej będą na końcu. (W moim przypadku miałem ciąg @w drugiej ostatniej linii, po wymuszonym wyłączeniu)

  • :x (Zapisz i wyjdź)

aksh1618
źródło