一个刚毕业的小姐姐总因’rm -rf /*‘误删文件!我送了她一个命令行版“回收站”

一个刚毕业的小姐姐总因’rm -rf /*‘误删文件!我送了她一个命令行版“回收站”

事情的缘由是因为一个刚毕业没多久的小姐姐在使用Linux系统时总是使用’rm -rf /*‘误删文件

本来是件挺严重的事,但她泪眼汪汪的看着我,真的不忍心责怪

我经过思虑,不能让她在服务器上过于奔放,只能找个方法限制她。

Linux命令行实现回收站功能

rm -rf 是一个极其危险的操作,而且Linux端不像windows,有回收站的的后悔药可以吃。

所以一旦误操作,就有可能造成不可挽回的后果。

1、创建回收站文件夹

创建一个路径来作为我们的回收站:cd ~ && mkdir .trash 
#/root/.trash路径,即作为我们的回收站路径

这里尽量放在分区比较大的位置,如果是随便玩,可以随便放!

2、重写一下rm命令

.bashrc中重写删除命令的代码

赋予最高权限:chmod 777 .trash
 
修改你的 home 目录下的:.bashrc:vim ~/.bashrc

3、重写rm完整脚本

# rm transform
function rm() {
    # 定期清理回收站,时间可调整
    now=$(date +%s)
    for s in $(ls --indicator-style=none $HOME/.trash/) ;do
        dir_name=${s//_/-}
        dir_time=$(date +%s -d $dir_name)
        # if big than one month then delete
        if [[ 0 -eq dir_time || $(($now - $dir_time)) -gt 2592000 ]] ;then
            echo "Trash " $dir_name " has Gone "
            /bin/rm $s -rf
        fi
    done
    # 重写rm命令,将文件mv到回收站下
    prefix=$(date +%Y_%m_%d)
    hour=$(date +%H)
    mkdir -p $HOME/.trash/$prefix/$hour
    if [[ -z $1 ]] ;then
            echo 'Missing Args'
        return
    fi
    echo "Hi, 小姐姐 " ${!#} "已被移到回收站了呢~"
    mv ${!#} $HOME/.trash/$prefix/$hour
}
#版权声明:此处部分代码为CSDN博主「L e x」的原创代码

4、立即生效

source ~/.bashrc
 
#使配置文件立即生效,最后 我们来做一下测试

5、测试删除

#创建测试文件
[root@localhost ~]# touch test.txt
#使用rm -rf 删除该文件
[root@localhost ~]# rm -rf test.txt 
Hi, 小姐姐 test.txt 已被移到回收站了呢~
#创建测试文件
[root@localhost ~]# touch aaa.txt
#使用rm 删除该文件
[root@localhost ~]# rm aaa.txt 
Hi, Trashing aaa.txt to /root/.trash
#查看一下回收站里的文件,已经被成功移过来了
[root@locahost ~]# ll /root/.trash/2021_05_12/23/
total 0
-rw-r--r-- 1 root root 0 May 12 23:16 222
-rw-r--r-- 1 root root 0 May 12 23:36 aaa.txt
-rw-r--r-- 1 root root 0 May 12 23:14 eeee
-rw-r--r-- 1 root root 0 May 12 23:36 test.txt

现在我们删除一个测试文件:

rm a.txt 或者 rm -rf aaa.txt

会显示:Hi, 小姐姐 aaa.txt 已被移到回收站了呢~

6、回收站定期删除

因为我们上面的 shell 每次触发 rm 命令的时候都会去删除一个月前的目录,

所以就不需要定时器来删除 .trash 里面的文件了。

当然,你也可以不用定期删除。

选择手动去清空回收站

7、真实删除命令在哪呢?

如果强制清空"回收站"(即清空 .trash 目录),
 
可以使用真正的 rm 命令:/bin/rm -rf ~/.trash/*

送给运维小姐姐的回收站

做一个回收站送给爱删除的你

从今以后,你的删除 我接盘了

rm -rf 你随便用,你玩删除的时候,已经不是删除了~emmm

                       
                       

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注