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
1
二维码
海报
Linux命令行实现回收站功能
介绍
rm -rf 是一个极其危险的操作,而且Linux端不像windows,有回收站的的后悔药可以吃。
所以一旦误操作,就有可能造成不可挽回的后果。
一、创建回收站文件……
文章目录
关闭
共有 1 条评论