まだ実行中の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

すべての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

引用: https://unix.stackexchange.com/a/150423/503193

関連情報