여전히 실행 중인 zsh를 사용하여 덮어쓴 .zshrc를 복구합니다.

여전히 실행 중인 zsh를 사용하여 덮어쓴 .zshrc를 복구합니다.

.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

모든 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
  • ~/.zshrc~Emacs 사용자의 경우 - 기본적으로 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모든 매개변수를 나열하는 데 사용합니다 .grepEDITORPAGER

답변3

나는 같은 문제가있었습니다. 다행히 ~/.zshrc.backup 파일에는 내 .zshrc 파일의 이전 내용이 포함되어 있습니다. 복원할 내용을 복사했습니다. 이전 .zshrc가 실행 중인 상태에서 탭을 닫지 않은 경우 ~/.zshrc.backup을 확인하는 것이 좋습니다. (맥 OS)

답변4

저도 같은 문제가 있었고 파일의 정확한 문자열을 기억할 수 있었습니다. 내용을 찾고 복구하기 위해 다음을 사용했습니다.

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

참고자료: https://unix.stackexchange.com/a/150423/503193

관련 정보