![아직 실행 중인 zsh를 사용하여 덮어쓴 .zshrc를 복원합니다.](https://linux55.com/image/191828/%EC%95%84%EC%A7%81%20%EC%8B%A4%ED%96%89%20%EC%A4%91%EC%9D%B8%20zsh%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%8D%AE%EC%96%B4%EC%93%B4%20.zshrc%EB%A5%BC%20%EB%B3%B5%EC%9B%90%ED%95%A9%EB%8B%88%EB%8B%A4..png)
명령을 잘못 실행한 후 .zshrc
수백 줄의 구성이 포함된 파일을 실수로 덮어썼습니다. 하지만 이 이벤트 전에 zsh가 열려 있는 터미널도 5개 있으므로 영향을 받지 않습니다. 하지만,내가 여는 새로운 껍질전체 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