Bagaimana cara memperbaiki dan memulihkan "file sejarah korup" di zsh?

101

Setelah reboot, saya mulai melihat pesan saat memuat shell:

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

Bagaimana saya bisa pulih dari situasi ini dan berpotensi memulihkan sebagian sejarah?

gak
sumber

Jawaban:

170

Menemukan posting blog yang menjelaskan perbaikan yang tampaknya bekerja untuk saya, sambil memulihkan riwayat saya yang hilang:

mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history
gak
sumber
7
Bolehkah saya bertanya apa arti perintah fc -R .zsh_historyitu? Saya sudah mencoba man fcdan memberitahu saya itu No manual entry for fc, dan tidak ada yang bisa fc -hmemberi tahu saya lebih dari penggunaan. Terima kasih.
kenshinji
2
Untuk detail lebih lanjut tentang perintah fc, lihat di sini dan di sini . Opsi -R tidak ada di sana, tetapi daftar penyelesaian zsh, di antara opsi,-R -- read history from file
Jeffrey Lebowski
Adakah yang tahu apa yang disebabkan oleh kesalahan ini?
hugronaphor
1
@ hugronaphor Dalam kasus saya, saya harus mematikan laptop saya dengan keras. Ini menyebabkan beberapa masalah bagi saya karena saya melakukan ini selama operasi penulisan disk dan salah satu hal yang rusak adalah file zsh saya antara lain.
RyanNerd
1
Untuk fcdokumentasi yang benar , lihat man zshbuiltins, juga tersedia di zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html . Seperti yang disarankan oleh Jeffrey, "'fc -R' membaca sejarah dari file yang diberikan".
Martin
14

Menghapus karakter acak juga bisa berfungsi:

  • vim .zsh_history

  • Hapus semua karakter aneh, yang kemungkinan besar mendekati akhir. (Dalam kasus saya, saya memiliki string @di baris terakhir kedua, setelah shutdown paksa)

  • :x (Simpan dan keluar)

aksh1618
sumber