Я случайно перезаписал свой .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
Все zstyles:
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.backup, если вы не закрыли ни одну вкладку с предыдущим запущенным .zshrc. (macOS)
решение4
У меня была та же проблема, и я мог вспомнить точную строку в файле. Я использовал следующее, чтобы найти содержимое и восстановить его:
grep -i -a -B100 -A100 'text in the deleted file' /dev/sda1
Использованная литература: https://unix.stackexchange.com/a/150423/503193