Accidentalmente sobrescribí mi .zshrc
archivo después de un comando mal ejecutado, que contiene varios cientos de líneas de configuraciones. Sin embargo, todavía tengo 5 terminales que tenían zsh abierto antes de este incidente y, como resultado, no se ven afectados. Sin embargo,cualquier shell nuevo que abropierde toda la configuración de zsh y no tengo ninguna copia de seguridad para ella.
Podría simplemente seguir usando estos 5 terminales, pero creo que debe haber alguna forma deextraer el zshrc de la memoria, ya que aparentemente zsh carga el archivo en la memoria cuando se ejecuta y lo almacena allí hasta que se elimina. He probado esto:
sudo dd if=/dev/mem bs=1M count=256|hexdump -C > ramfile
Pero todo lo que obtuve son datos no relacionados con mi zshrc.
Cualquier solución sería muy apreciada.
Respuesta1
Habría sugerido usar /proc/PID/fd/
el directorio, pero zsh cierra el descriptor del archivo que apunta a su configuración después de analizarlo. A partir de eso, mi mejor suposición es que su archivo en su forma original ya no existe.
Sin embargo, hay formas de volcar la configuración actual de zsh, que pueden ayudarle a reconstruirla.Me viene a la mente la respuesta a esta otra pregunta:
Todas las combinaciones de teclas:
for m ($keymaps) bindkey -LM $m
Todos los widgets de usuario de ZLE
zle -lL
Todos los estilos z:
zstyle -L
Módulos cargados:
zmodload -L
Todas las variables:
typeset -p +H -m '*'
Con el
zsh/parameters
módulo cargado, eso también incluirá alias, opciones, funciones...
Respuesta2
Autorespuesta
Algunas otras cosas que encontré al recuperar mi zsh sobrescrito:
Compruebe si todavía existe alguna copia del zshrc
Esto no sucedió en mi caso, pero si por casualidad hay una versión de .zshrc
algún lugar (especialmente si el editor de código de su elección guarda automáticamente los archivos en una ubicación específica), hay unapequeñoposibilidad de que todavía exista en alguna parte. Para encontrarlo, ejecuta esto:
sudo find . -name ".zshrc"
Busque en estas ubicaciones específicas:
- Para usuarios de Vim/Vi (depende de la configuración; puede
/var/tmp
incluir~/.vim/sessions
o~/.local/share/nvim/swap
) - Para usuarios de Atom:
~/.atom/recovery
- Para usuarios de Emacs: de forma predeterminada, es posible que tenga un archivo llamado
~/.zshrc~
disponible - General -
/tmp
Recuperar rutas agregadas manualmente
Este script imprime todos los directorios agregados 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 ciertos parámetros
Úselo set
para enumerar todos los parámetros y luego grep
los que necesite, como por ejemplo: el editor predeterminado ( EDITOR
) y el buscapersonas ( PAGER
).
Respuesta3
Tuve el mismo problema. Afortunadamente, el archivo ~/.zshrc.backup tenía el contenido anterior de mi archivo .zshrc. Copié su contenido para restaurarlo. Sugiero verificar ~/.zshrc.backup si no ha cerrado ninguna pestaña con .zshrc anterior en ejecución. (Mac OS)
Respuesta4
Tuve el mismo problema y pude recordar una cadena exacta en el archivo. Utilicé lo siguiente para encontrar el contenido y recuperarlo:
grep -i -a -B100 -A100 'text in the deleted file' /dev/sda1
Referencias: https://unix.stackexchange.com/a/150423/503193