Olá pessoal!!!
Ocasionalmente, você pode descobrir que tem um arquivo de histórico zsh corrompido que o impede de usar CTRL + R ou de usar o comando fc. Veja como consertar isso.
Arquivo de histórico ZSH corrompido
Se você usar zsh para seu shell ocasionalmente, poderá encontrar a seguinte mensagem indicando um arquivo de histórico corrompido.
zsh: corrupt history file /home/go/.zsh_history
Isso evita pesquisar no histórico com CTRL+R e editar comandos anteriores com fc.
Como corrigi-lo
Para consertar, execute os seguintes comandos
cd ~
mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history
rm ~/.zsh_history_bad
Vamos analisar o que cada linha desse comando está fazendo:
- cd ~:
Este comando muda o diretório atual para o diretório home do usuário.
- mv .zsh_history .zsh_history_bad:
Este comando renomeia o arquivo .zsh_history para .zsh_history_bad. Basicamente, ele está movendo o arquivo de histórico do Zsh para um novo nome.
- strings .zsh_history_bad > .zsh_history:
Este comando utiliza a ferramenta strings para extrair todas as sequências de caracteres legíveis do arquivo .zsh_history_bad e redireciona a saída para um novo arquivo .zsh_history. Isso é útil para remover quaisquer caracteres binários corrompidos ou não legíveis do arquivo de histórico.
- fc -R .zsh_history:
Este comando recarrega o histórico do Zsh a partir do arquivo .zsh_history. O fc é um comando built-in do Zsh para manipular o histórico de comandos.
- rm ~/.zsh_history_bad:
Este comando remove o arquivo .zsh_history_bad, que já não é mais necessário após ter sido processado.
Resumo
Esses comandos são usados para corrigir um arquivo de histórico do Zsh que pode estar corrompido. O procedimento envolve:
-
Mudar para o diretório home do usuário.
-
Renomear o arquivo de histórico atual para preservar o original.
-
Extrair e salvar apenas as sequências de caracteres legíveis do histórico corrompido para um novo arquivo de histórico.
-
Recarregar o histórico do shell a partir do arquivo limpo.
-
Remover o arquivo de histórico corrompido original.