Substituí acidentalmente meu .zshrc
arquivo após um comando executado incorretamente, que contém várias centenas de linhas de configurações. No entanto, ainda tenho 5 terminais que tinham o zsh aberto antes deste incidente e, como resultado, eles não foram afetados. No entanto,qualquer novo shell que eu abroperde toda a configuração do zsh e não tenho backup para isso.
Eu poderia simplesmente continuar usando esses 5 terminais, mas acho que deve haver alguma forma deextraia o zshrc da memória, já que aparentemente o zsh carrega o arquivo na memória quando é executado e o armazena lá até que seja eliminado. Eu tentei isso:
sudo dd if=/dev/mem bs=1M count=256|hexdump -C > ramfile
Mas tudo que consegui foram dados não relacionados ao meu zshrc.
Qualquer solução seria muito apreciada.
Responder1
Eu teria sugerido usar /proc/PID/fd/
o diretório, mas zsh fecha o descritor de arquivo apontando para sua configuração após analisá-lo. A partir disso, meu melhor palpite é que seu arquivo em sua forma original desapareceu.
No entanto, existem maneiras de descartar a configuração atual do zsh, o que pode ajudá-lo a reconstruí-lo.A resposta desta outra pergunta vem à mente:
Todas as combinações de teclas:
for m ($keymaps) bindkey -LM $m
Todos os widgets de usuário ZLE
zle -lL
Todos os zstyles:
zstyle -L
Módulos carregados:
zmodload -L
Todas as variáveis:
typeset -p +H -m '*'
Com o
zsh/parameters
módulo carregado, isso também incluirá aliases, opções, funções...
Responder2
Auto-resposta
Algumas outras coisas que descobri ao recuperar meu zsh sobrescrito:
Verifique se alguma cópia do zshrc ainda existe
Isso não aconteceu no meu caso, mas se por acaso houver uma versão de .zshrc
algum lugar (principalmente se o editor de código de sua escolha salvar automaticamente os arquivos em um local específico), há umpequenopossibilidade de ainda existir em algum lugar. Para encontrá-lo, execute isto:
sudo find . -name ".zshrc"
Procure nestes locais específicos:
- Para usuários do Vim/Vi (depende da configuração - pode incluir
/var/tmp
ou )~/.vim/sessions
~/.local/share/nvim/swap
- Para usuários do Atom -
~/.atom/recovery
- Para usuários do Emacs - por padrão você pode ter um arquivo chamado
~/.zshrc~
disponível - Em geral -
/tmp
Recuperando caminhos adicionados manualmente
Este script imprime todos os diretórios adicionados a $PATH
:
import subprocess
paths = subprocess.check_output("echo $PATH", shell=True, text=True)
list = paths.split(":")
for item in list:
print("export PATH=" + item + ":$PATH")
Recuperar certos parâmetros
Use set
para listar todos os parâmetros, depois grep
através daqueles que você precisa, como: o editor padrão ( EDITOR
) e o pager ( PAGER
)
Responder3
Eu tive o mesmo problema. Felizmente, o arquivo ~/.zshrc.backup tinha o conteúdo anterior do meu arquivo .zshrc. Copiei seu conteúdo para restaurar. Sugiro verificar ~/.zshrc.backup se você não fechou nenhuma guia com o .zshrc anterior em execução. (Mac OS)
Responder4
Eu tive o mesmo problema e consegui me lembrar de uma string exata no arquivo. Usei o seguinte para encontrar o conteúdo e recuperá-lo:
grep -i -a -B100 -A100 'text in the deleted file' /dev/sda1
Referências: https://unix.stackexchange.com/a/150423/503193