在錯誤執行命令後,我不小心覆蓋了我的.zshrc
文件,其中包含數百行配置。不過,我還有 5 個終端在此事件之前打開了 zsh,因此它們沒有受到影響。然而,我打開的任何新外殼丟失了整個 zsh 配置,並且我沒有備份。
我可以簡單地繼續使用這 5 個終端,但我認為必須有某種形式的方法從記憶體中提取 zshrc,表面上 zsh 在運行時將文件加載到內存中並將其存儲在那裡直到它被殺死。我試過這個:
sudo dd if=/dev/mem bs=1M count=256|hexdump -C > ramfile
但我得到的只是與我的 zshrc 無關的數據。
任何解決方案將不勝感激。
答案1
我建議使用/proc/PID/fd/
目錄,但 zsh 在解析後關閉指向其配置的檔案描述符。由此看來,我最好的猜測是您的文件的原始形式已經消失了。
但是,有一些方法可以轉儲 zsh 的當前配置,這可能會幫助您重建它。我想到了另一個問題的答案:
所有按鍵綁定:
for m ($keymaps) bindkey -LM $m
所有 ZLE 使用者小工具
zle -lL
所有 z 樣式:
zstyle -L
載入的模組:
zmodload -L
所有變數:
typeset -p +H -m '*'
載入模組後
zsh/parameters
,還將包括別名、選項、函數...
答案2
自答
在恢復被覆蓋的 zsh 時我發現了一些其他事情:
檢查 zshrc 的任何副本是否仍然存在
在我的情況下,這並沒有發生,但如果偶然有某個地方的版本.zshrc
(特別是如果您選擇的程式碼編輯器會自動將檔案儲存到特定位置),則有一個小的它仍然存在於某處的可能性。要找到它,請執行以下命令:
sudo find . -name ".zshrc"
查看這些特定位置:
- 對於 Vim/Vi 使用者(取決於配置 - 可能包括
/var/tmp
,~/.vim/sessions
或~/.local/share/nvim/swap
) - 對於 Atom 用戶 -
~/.atom/recovery
- 對於 Emacs 用戶 - 預設情況下您可能有一個名為
~/.zshrc~
available 的文件 - 一般的 -
/tmp
恢復手動新增的路徑
此腳本列印出新增到的所有目錄$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")
恢復某些參數
用於set
列出所有參數,然後grep
透過您需要的參數,例如:預設編輯器 ( EDITOR
) 和尋呼機 ( PAGER
)
答案3
我遇到過同樣的問題。幸運的是, ~/.zshrc.backup 檔案包含我的 .zshrc 檔案先前的內容。我複製了它的內容來恢復。如果您尚未關閉先前執行的 .zshrc 的任何選項卡,我建議您檢查 ~/.zshrc.backup。 (蘋果系統)
答案4
我遇到了同樣的問題,我可以記住文件中的確切字串。我使用以下方法來查找內容並恢復它:
grep -i -a -B100 -A100 'text in the deleted file' /dev/sda1