Akiraka Akiraka
  • Home
  • Linux
    • ELK
    • PHP
    • Shell
    • Nginx
    • Docker
      • Docker Compose
    • Centos
    • Ubuntu
    • Jenkins
  • Python
  • Mac OS
  • Windows
  • Big Data
    • Hadoop
    • CDH
    • Hive
    • Spark
    • ZooKeeper
  • K8S
    • Kubernetes
    • Helm
  • Other
  • Quark
  • Contribute
  • Home
  • Linux
    • ELK
    • PHP
    • Shell
    • Nginx
    • Docker
      • Docker Compose
    • Centos
    • Ubuntu
    • Jenkins
  • Python
  • Mac OS
  • Windows
  • Big Data
    • Hadoop
    • CDH
    • Hive
    • Spark
    • ZooKeeper
  • K8S
    • Kubernetes
    • Helm
  • Other
  • Quark
  • Contribute
首页 Linux Linux命令行实现回收站功能

Linux命令行实现回收站功能

Akiraka 1年前

文章目录

  • 介绍
    • 一、创建回收站文件夹
    • 二、修改用户配置文件
    • 三、测试删除
    • 四、回收站定期删除
    • 五、回收站定期删除

介绍

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/*
#linux
1
猜你喜欢
  • Jenkins 升级失败
  • Deepin与UOS多屏显示输出问题
  • SonarQube 集成 GitLab 单点登录
  • Linux Centos/Ubuntu/Debain配置账户登录失败锁定策略
  • Linux systemd-resolve占用53端口的解决方法
评论 (0)
请登录以参与评论。
立即登录
    暂无评论
Akiraka
站长
本人擅长 Ai、Au、Fl、Ae、Pr、Ps 等软件的安装与卸载,精通 CSS、JavaScript、PHP、Python、Shell、Go 等单词的拼写,熟悉 Windows、Linux、Mac、Android、IOS 等系统的开关机!
160
文章
24
评论
73
获赞
Popular Articles
TOP1
Kubernetes(k8s)Helm 部署 EFK 集群
2年前
TOP2
Kubernetes(k8s)helm 搭建 prometheus + Grafana 监控
2年前
TOP3
Container 命令ctr、crictl 命令使用说明
11月前
TOP4
Kubernetes(k8s)Helm 部署 Jenkins 持续化集成部署
2年前
TOP5
Helm 部署 Loki 日志聚合
2年前
Related Articles
RabbitMQ 基于官方
2年前
使用 Docker 部署 LNMP 环境
2年前
Jenkins 插件与主题配置
2年前
Nginx 普通配置
2年前
判断日志文件是否有变化,无变化重启容器
1年前
Copyright © 2019-2022 Akiraka. 沪18036911号