Überschriebene .zshrc-Datei mit noch laufendem zsh wiederherstellen

Überschriebene .zshrc-Datei mit noch laufendem zsh wiederherstellen

Ich habe .zshrcnach einem falsch ausgeführten Befehl versehentlich meine Datei überschrieben, die mehrere hundert Zeilen Konfigurationen enthält. Ich habe jedoch immer noch 5 Terminals, die vor diesem Vorfall zsh geöffnet hatten, und daher sind sie nicht betroffen.jede neue Shell, die ich öffneverliert die gesamte Zsh-Konfiguration und ich habe kein Backup dafür.

Ich könnte einfach diese 5 Terminals weiter verwenden, aber ich denke, es muss eine Möglichkeit geben,extrahieren Sie den zshrc aus dem Speicher, da zsh die Datei beim Ausführen angeblich in den Speicher lädt und dort speichert, bis es beendet wird. Ich habe Folgendes versucht:

sudo dd if=/dev/mem bs=1M count=256|hexdump -C > ramfile

Ich habe jedoch nur Daten erhalten, die nichts mit meinem zshrc zu tun haben.

Ich wäre für jede Lösung sehr dankbar.

Antwort1

Ich hätte vorgeschlagen, /proc/PID/fd/ein Verzeichnis zu verwenden, aber zsh schließt den Dateideskriptor, der auf seine Konfiguration verweist, nachdem er analysiert wurde. Daraus schließe ich, dass Ihre Datei in ihrer ursprünglichen Form verloren gegangen ist.

Es gibt jedoch Möglichkeiten, die aktuelle Konfiguration von zsh zu sichern, was Ihnen beim Neuaufbau helfen kann.Mir fällt die Antwort auf diese andere Frage ein:

Alle Tastenkombinationen:

for m ($keymaps) bindkey -LM $m

Alle ZLE-Benutzer-Widgets

zle -lL

Alle Zstyles:

zstyle -L

Geladene Module:

zmodload -L

Alle Variablen:

typeset -p +H -m '*'

Wenn das zsh/parametersModul geladen ist, sind darin auch Aliase, Optionen, Funktionen usw. enthalten.

Antwort2

Selbstantwort

Beim Wiederherstellen meines überschriebenen ZSH habe ich noch ein paar andere Dinge gefunden:

Überprüfen Sie, ob noch eine Kopie des zshrc vorhanden ist

Dies ist in meinem Fall nicht passiert, aber wenn zufällig .zshrcirgendwo eine Version davon vorhanden ist (insbesondere wenn Ihr bevorzugter Code-Editor Dateien automatisch an einem bestimmten Ort speichert), gibt es einekleinMöglichkeit, dass es noch irgendwo existiert. Um es zu finden, führen Sie Folgendes aus:

sudo find . -name ".zshrc"

Suchen Sie an diesen spezifischen Orten:

  • Für Vim/Vi-Benutzer (abhängig von der Konfiguration – kann /var/tmp, ~/.vim/sessionsoder enthalten ~/.local/share/nvim/swap)
  • Für Atom-Benutzer -~/.atom/recovery
  • Für Emacs-Benutzer - standardmäßig haben Sie möglicherweise eine Datei namens ~/.zshrc~available
  • Allgemein -/tmp

Manuell hinzugefügte Pfade wiederherstellen

Dieses Skript druckt alle hinzugefügten Verzeichnisse aus $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")

Bestimmte Parameter wiederherstellen

Verwenden Sie set, um alle Parameter aufzulisten, und gehen Sie dann grepdie Parameter durch, die Sie benötigen, wie zum Beispiel: den Standardeditor ( EDITOR) und den Pager ( PAGER).

Antwort3

Ich hatte das gleiche Problem. Glücklicherweise enthielt die Datei ~/.zshrc.backup den vorherigen Inhalt meiner .zshrc-Datei. Ich habe den Inhalt kopiert, um ihn wiederherzustellen. Ich schlage vor, ~/.zshrc.backup zu überprüfen, wenn Sie keinen Tab geschlossen haben, auf dem die vorherige .zshrc-Datei ausgeführt wurde. (macOS)

Antwort4

Ich hatte das gleiche Problem und konnte mich an eine genaue Zeichenfolge in der Datei erinnern. Ich habe Folgendes verwendet, um den Inhalt zu finden und wiederherzustellen:

grep -i -a -B100 -A100 'text in the deleted file' /dev/sda1

Verweise: https://unix.stackexchange.com/a/150423/503193

verwandte Informationen