rm -rf / *ライブラリの削除を回避します:ごみ箱メカニズムを確立します
1.前面に書く
rm -rf /*
フォームはたくさん持っています:
rm -rf /*
(まっすぐ前後に歩く)rm -rf $abc/*
(変数は存在しません)rm -rf abc /*
(もう1つのハードコアスペース "")
- …
それを理解する人は自然にその力を理解するでしょう。
このためにrm
、rm -rf
スペースだけでなく、再理解に加えて、そのようなことが二度と起こらないようにするためのいくつかの安全対策も行います。
2.2つの考え方
次の2つのアイデアは、本質的に同じである可能性があります。
- 削除する必要のあるファイルを、次のような指定したディレクトリに移動します(削除しません)。
/trash/
- 定期的にクリーニング中の
/trash/
ファイル
ただし、特定の使用法にはまだいくつかの違いがあります(推奨される方法2)
2.1方法1:rmはmvによって実装された関数を指します
参考:バグを書いて、誤ってrm -fr / *を実行しました。ライブラリを削除しました。逃げたいですか?
処理する
-
ごみ箱ディレクトリを作成します。
mkdir /home/.trash
-
remove.shスクリプトを書く
-
修正
~/.bashrc
私たちの自己内蔵した、remove.sh
代替rm
コマンド -
crontabを設定して、ごみ箱を定期的に空にします。たとえば
、ごみ箱を毎日0:00に空にするように設定します。
(1)編集を入力します。crontab -e
(2)次のように書きます。
0 0 * * * rm -rf /home/.trash/*
(3)編集を終了します。control x
-
実行
source ~/.bashrc
して.bashrcを有効にします -
使用例:
rm ./test_delete
不利益
- 短所1:
/home/.trash/
簡単Permission denied
- 短所2:すでに
rm
コマンドを使用しているスクリプトに影響を与える可能性があります
2.2方法2:mvで実装された新しいコマンドを作成する
処理する
- ルートアイデンティティ
- 次のコードが記述されている
/etc/bashrc
か/etc/bash.bashrc
、次のコードが含まれています。
#rmm delete
alias rmm=trash
alias rl='ls -a $HOME/.trash'
trash()
{
trash_path="$HOME/.trash"
if [ ! -d $trash_path ]; then
mkdir -p $trash_path
fi
for i in $*; do
if [ "$i" == "-f" -o "$i" == "-rf" ] ;then
continue
fi
STAMP=`date +%Y%m%d-%H:%M:%S`
FileName=`basename $i`
mv $i $trash_path/$FileName"_"$STAMP
done
- 上記のファイルを入手して、すぐに有効にします
- 定期的な清掃を設定します(方法1を参照してください)
使用例
rm
:移動(削除)rl
:ごみ箱に情報を表示する
(1)ルートID
root@suer-virtual-machine:/etc# rmm /home/suer/test_dir4
root@suer-virtual-machine:/etc# rl
. test_dir2_20210127-10:42:49 test_dir4_20210127-14:24:36
.. test_dir3_20210127-10:46:24
(2)通常のユーザーID
suer@suer-virtual-machine:~$ rmm test_dir5
suer@suer-virtual-machine:~$ rl
. .. test_dir5_20210127-14:44:59
考えられる問題
- 再ログインまたはIDの切り替えコマンドは機能しません。以下
を参照してください。Linux関連:ubuntuが.bashrcに設定された後、再ログインは機能しません。
記事が役立つと思う場合、または賞賛を示すことができる場合は、どのブロガーをサポートしてください。