Recuperar .zshrc sobrescrito con zsh aún en ejecución

Recuperar .zshrc sobrescrito con zsh aún en ejecución

Accidentalmente sobrescribí mi .zshrcarchivo 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/parametersmó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 .zshrcalgú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/tmpincluir ~/.vim/sessionso ~/.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 setpara enumerar todos los parámetros y luego greplos 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

información relacionada