Linux命令行实现回收站功能

介绍

rm -rf 是一个极其危险的操作,而且Linux端不像windows,有回收站的的后悔药可以吃。
所以一旦误操作,就有可能造成不可挽回的后果。

一、创建回收站文件夹

  • 创建一个路径来作为我们的回收站,创建垃圾回收文件夹更具自己磁盘空间决定
# 这里是在根目录下创建一个 .trash 文件夹
root@AKA:~# cd ~ && mkdir .trash && ls -a | grep .trash
.trash

# 赋予文件夹权限
chmod 777 .trash

二、修改用户配置文件

# 复制黏贴即可
cat <<'EOF'>>  ~/.bashrc
# 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
}
EOF

# 刷新用户配置
source ~/.bashrc

三、测试删除

# 创建测试文件
root@AKA:~# touch test.txt
# 使用rm -rf 删除该文件
root@AKA:~# rm -rf test.txt
Hi, 管理员  test.txt 已被移到回收站了呢~

# 创建测试文件
root@AKA:~# rm aaa.txt
# 使用rm 删除该文件
root@AKA:~# rm aaa.txt
Hi, 管理员  aaa.txt 已被移到回收站了呢~

# 查看一下回收站里的文件,已经被成功移过来了
root@AKA:~# ll /root/.trash/2021_06_07/17/
total 0
-rw-r--r-- 1 root root 0 Jun  7 17:21 aaa.txt
-rw-r--r-- 1 root root 0 Jun  7 17:21 test.txt

四、回收站定期删除

因为我们上面的 shell 每次触发 rm 命令的时候都会去删除一个月前的目录,所以就不需要定时器来删除 .trash 里面的文件了。
当然,你也可以不用定期删除,选择手动去清空回收站。

五、回收站定期删除

  • 如果强制清空"回收站"(即清空 .trash 目录)可以
# 删除垃圾回收文件
rm -rf ~/.trash/*

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/1101.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
Linux命令行实现回收站功能
介绍 rm -rf 是一个极其危险的操作,而且Linux端不像windows,有回收站的的后悔药可以吃。 所以一旦误操作,就有可能造成不可挽回的后果。 一、创建回收站文件……
<<上一篇
下一篇>>
文章目录
关闭
目 录