Как исправить и восстановить «поврежденный файл истории» в zsh?

101

После перезагрузки я начал видеть сообщение при загрузке оболочки:

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

Как я могу оправиться от этой ситуации и потенциально восстановить некоторые из истории?

гак
источник

Ответы:

170

Нашел сообщение в блоге, описывающее исправление, которое, кажется, работает для меня, в то же время восстанавливая мою отсутствующую историю:

mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history
гак
источник
7
Могу я спросить, что означает команда fc -R .zsh_history? Я пытался, man fcи это говорит мне об этом No manual entry for fc, и ни один не мог fc -hсказать мне больше, чем использование. Благодарю.
Кеншинджи
2
Подробнее о команде fc смотрите здесь и здесь . Опция -R там отсутствует, но есть списки завершений zsh, среди опций,-R -- read history from file
Джеффри Лебовски,
Кто-нибудь знает, чем могла быть вызвана эта ошибка?
hugronaphor
1
@hugronaphor В моем случае мне пришлось жестко выключить свой ноутбук. Это вызвало некоторые проблемы для меня, поскольку я делал это во время операции записи на диск, и одна из вещей, которая была повреждена, была моим zsh-файлом среди прочего.
RyanNerd
1
Правильную fcдокументацию см. man zshbuiltinsТакже по адресу zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html . По предложению Джеффри, «fc -R» читает историю из данного файла ».
Мартин
14

Простое удаление случайных символов также может работать:

  • vim .zsh_history

  • Удалите все странные символы, которые, скорее всего, будут ближе к концу. (В моем случае у меня была строка @во второй последней строке после принудительного выключения)

  • :x (Сохранить и выйти)

aksh1618
источник