rm -rf / *ライブラリの削除を避けてください:ごみ箱メカニズムを確立してください(完璧な解決策)

1.前面に書く

rm -rf /*フォームはたくさん持っています

  • rm -rf /* (まっすぐ前後に歩く)
  • rm -rf $abc/* (変数は存在しません)
  • rm -rf abc /*(もう1つのハードコアスペース " ")

それを理解する人は自然にその力を理解するでしょう。

このためにrmrm -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で実装された新しいコマンドを作成する

参照:Linuxrmコマンド回復メカニズム

処理する

  • ルートアイデンティティ
  • 次のコードが記述されている/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

考えられる問題

記事が役立つと思う場合、または賞賛を示すことができる場合はどのブロガーをサポートしてください

おすすめ

転載: blog.csdn.net/Robin_Pi/article/details/113250184