¿Cómo arreglar y recuperar un "archivo de historial corrupto" en zsh?


101

Después de reiniciar, comencé a ver un mensaje al cargar el shell:

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

¿Cómo puedo recuperarme de esta situación y potencialmente recuperar parte de la historia?

Respuestas:


170

Encontré una publicación de blog que describe una solución que parece funcionar para mí, mientras restaura mi historial perdido:

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

77
¿Puedo preguntar qué significa el comando fc -R .zsh_history? Lo he intentado man fcy me dice eso No manual entry for fc, y tampoco podría fc -hdecirme más que el uso. Gracias.
kenshinji

2
Para obtener más detalles sobre el comando fc, consulte aquí y aquí . La opción -R no está presente allí, pero las listas de finalización de zsh, entre las opciones,-R -- read history from file
Jeffrey Lebowski el

¿Alguien sabe por qué este error pudo haber sido causado?
hugronaphor

1
@hugronaphor En mi caso fue que tuve que apagar mi computadora portátil por completo. Esto me causó algunos problemas, ya que hice esto durante una operación de escritura en disco y una de las cosas que se corrompió fue mi archivo zsh, entre otras cosas.
RyanNerd

1
Para obtener la fcdocumentación correcta , consulte man zshbuiltins, también disponible en zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html . Como sugirió Jeffrey, "'fc -R' lee el historial del archivo dado".
Martin

14

Simplemente eliminar caracteres aleatorios también puede funcionar:

  • vim .zsh_history

  • Elimina cualquier personaje extraño, que probablemente esté cerca del final. (En mi caso, tuve una cadena de caracteres @en la segunda última línea, luego de un apagado forzado)

  • :x (guardar y Salir)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.