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?

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

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ź)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.