ディレクトリを「rm -rf」に免疫するようにします。

ディレクトリを「rm -rf」に免疫するようにします。

rm -rf B私はBフォルダのAフォルダの一部のデータを失いました。私が何をしたのかを理解する前に、すべてのことは終わりました。これで教訓が得られたので、次のようなことをして自殺の衝動を感じるときを避けるために、私のフォルダのいくつかを愚かなものにすることを願っています。

私が考えることができる1つの方法は、bash関数を作成してエイリアスを指定することですrm。この関数は、すべてのサブフォルダで隠されたファイルを探します(たとえば、.dontdeleteこのフォルダに書き込みを続けるプロセスがあるため、書き込み禁止を設定できません。より良い方法はありますか?

ベストアンサー1

お客様の問題を調査する際に、将来的に役立つ可能性があるこの技術を発見しました。

明らかに、次のようにディレクトリ内のファイルをタッチできます。

touch -- -i

rm -fr *存在するディレクトリからコマンドを実行すると、インタラクティブな-iプロンプトが表示されますrm

$ ls
file1  file2  file3  file4  file5  -i

$ rm -fr *
rm: remove regular empty file `file1'? n
rm: remove regular empty file `file2'? n
rm: remove regular empty file `file3'? n
rm: remove regular empty file `file4'? n
rm: remove regular empty file `file5'? n

rm同じ効果を得るには、常に実行されるようにエイリアスを維持してくださいrm -i。これは迷惑かもしれません。私がよく見たことは、このエイリアスを最初に設定してから、本当に削除するかどうかを尋ねるメッセージを表示せずに無効にすることです。

alias rm='rm -i'

これで、ディレクトリに次の内容が表示されます。

$ ls
file1  file2  file3  file4  file5

$ rm -r *
rm: remove regular empty file `file1'?

エイリアスをオーバーライドするには:

$ \rm -r *

しかし、これはまだ止められませんでしたrm -fr。しかし、それはある程度の保護を提供します。

引用する

おすすめ記事