Linux系统默认没有回收站功能,使用rm命令进行删除操作,文件就会直接从系统中删除,很难恢复。

今天我们利用简单的shell脚本实现Linux系统下的回收站机制。

先提供脚本代码

[root@qll251 ~]# vim /bin/delete
1 #! /bin/bash
2 [ ! -d /.recycle ] && mkdir -v /.recycle && chmod 777 /.recycle
3
4 if [ $# -eq 0 ]; then
5 echo "Usage: delete file1 [file2 file3...]" && exit 6
6 fi
7
8 read -p "Are you sure you want to delete it? [Y/N]: " action
9 case $action in
10 y) ;;
11 Y) ;;
12 *) exit
13 esac
14
15 for file in $@; do
16 now=`date +%Y-%m-%d-%H:%M:%S`
17 newfile=`basename $file`
18 mv $file /.recycle/$newfile.$now && echo "$file is deleted!"
19 done

一、脚本解释

1)在/bin目录下创建脚本文件delete(方便系统用户直接调用delete命令)

2)首先判断回收站文件夹是否创建;如未创建,则创建/.recyscle;同时设置权限777

[ ! -d /.recycle ] && mkdir -v /.recycle && chmod 777 /.recycle

3)判断传给脚本的个数是否为0,如果为真,则输出帮助信息,同时终止脚本

if  [ $# -eq 0 ]; then
echo "Usage: delete file1 [file2 file3...]" && exit 6
fi

4)设置一个用户交互,类似Windows的弹窗提醒

(接收用户的输入,将其放入action变量)

read -p "Are you sure you want to delete it? [Y/N]: " action

5)理解为:收到用户的同意信号,继续执行执行脚本;否则直接退出程序

case $action in
y) ;;
Y) ;;
*) exit
esac

6) 将目标文件根据当前时间重命名后移动到/.recycle

命令解释

  1. $@:传给脚本的所有参数(这里表示所有待删除的文件)
  2. basename:去掉路径信息,返回纯粹的文件名
for file in $@; do
now=`date +%Y-%m-%d-%H:%M:%S`
newfile=`basename $file`
mv $file /.recycle/$newfile.$now && echo "$file is deleted!"
done

二、设置脚本可执行权限

[root@qll251 ~]# chmod +x /bin/delete

三、定时清空垃圾箱

执行crontab -e,设置每周执行清空回收站动作

0 0 * * 0 rm -rf /.recycle

四、进行测试

如果delete命令用着不习惯,我们也可以给rm配置别名。将rm命令替换为delete

以下是具体实现方法:

编辑~/.bashrc文件,增加一行

alias rm='sh /bin/delete'

执行source ~/.bashrc使替换立即生效

更多IT技术,请微信搜索公众号秦露露或者扫描下方二维码关注

实现Linux系统的回收站的更多相关文章

  1. 云服务器 ECS Linux 系统添加“回收站”

    删除是危险系数很高的操作,一旦误删可能会造成难以估计的损失.在云服务器 ECS Linux 系统中这种危险尤为明显.比如,一条简单的语句:rm –rf /* 就会把整个系统全部删除,而 Linux 并 ...

  2. 为linux系统实现回收站

    在linux系统中,经常采用"rm *"或"rm -r *"操作删除一下文件,但是有时某些文件并不是我们想要删除的,但是已经被删除.很多时候都是悲剧的,数据是难 ...

  3. Linux系统运维工程该具备哪些素质

    记得在上高中时,物理老师总是会对我们一句话:"学习是件苦差事."工作后发现,其实做运维也是件苦差事.最为一名运维工程师,深知这一行的艰辛,但和IT行业其他职务一样,那就是付出的越多 ...

  4. Linux下自制回收站

    Linux下自制回收站 相信熟悉linux系统的人都知道rm的厉害,也大都听说过有rm造成的生产事故,本文将详细介绍如何在linux环境下制作回收站以避免数据误删除,如何恢复回收站中的数据,如何查看回 ...

  5. linux系统usb挂载

    本次例程的环境是在FC6下,通过终端操作的. 注意要挂载U盘需要有管理员的权限. 切换成管理员,输入: su root 然后输入管理员密码,进行密码认证: 成功后,先在 /mnt 下建立一个名叫USB ...

  6. 在 Linux 系统下使用 PhotoRec 工具来恢复已删除或丢失的文件

    PhotoRec – Recover Deleted or Lost Files in Linux 在 Linux 系统下使用 PhotoRec 工具来恢复已删除或丢失的文件 当你在系统中有意或无意地 ...

  7. 在 Linux 系统下使用 PhotoRec & TestDisk 工具来恢复文件

    当你在系统中有意或无意地使用 shift + delete 组合键.删除选项,或是清空回收站的方式来删除一个文件时,该文件的内容并没有从硬盘(或是其它存储设备)上直接销毁. 它仅仅是从系统的目录结构中 ...

  8. linux系统入门—文件管理

    目录 linux系统入门-文件管理 系统目录结构 目录管理 linux系统入门-文件管理 系统目录结构 几乎所有的计算机操作系统都是使用目录结构组织文件.具体来说就是在一个目录中存放子目录和文件,而在 ...

  9. linux系统中的一些典型问题汇总

    一.文件系统破坏导致系统无法启动:Checking root filesystem/dev/sda6 contains a file system with errors,check forcedAn ...

随机推荐

  1. pip 安装更新卸载 pip/yum换源

    pip安装:sudo apt-get install python3-pip pip更新:sudo pip3 install --upgrade pip pip卸载:sudo apt-get remo ...

  2. Formatter和IStandardConversionService的使用方式

    Thymeleaf 1.Formatter接口是当进行请求参数的封装时,会根据Formatter的泛型进行调用Parse方法进行格式化类型 2.IStandardConversionService是T ...

  3. SQLyog创建用户并授权的过程

    点击你要授权的数据库然后点击用户管理器 然后输入用户名和密码主机选localhost 然后点击创建,然后选择你创建的数据库全选 最后保存就可以了

  4. Linux 安装jdk1.8

    Linux安装jdk1.8 总结一句话就是:下载jdk1.8 ==> 解压 ==> 配置环境变量. 一.  jdk的下载,这里有两种方法: 1.去Oracle官网下载. 2.jdk1.8的 ...

  5. 记一次 Nuxt 3 在 Windows 下的打包问题

    0. 背景 之前用 Nuxt 3 写了公司的官网,包括了样式.字体图标.图片.视频等,其中样式和字体图标放在了 assets/styles 和 assets/fonts 目录下,而图片和视频则放在了 ...

  6. Numpy求解线性方程组

    Numpy求解线性方程组 对于Ax=b,已知A和b,怎么算出x? 1. 引入包 2. 求解 验证

  7. poj_3253_priority queue

    描述 农夫约翰想要修篱墙,他需要N块木板,第i块板长Li.然后他买了一块很长的板子,足够他分成N块.忽略每次锯板子带来的损失. 约翰忘记买锯子了,于是像Don借.Don要收费,每次锯一下,就要收一次板 ...

  8. 顺利通过EMC实验(3)

  9. 前端系列——快速理解babel6配置过程

    繁琐的配置? 你能快速读懂babel的官方文档吗? 你能根据官方文档快速配置好babelrc吗? 你能明白自己需要哪些插件吗? 没有搞明白这3个问题,请往下看. 快速理解babel 6 来看一张让人颤 ...

  10. 利用Charles做代理测试电脑上写的H5页面

    做H5页面的同学可能经常会遇到一个场景,就是电脑上调试好的页面怎么在手机上访问测试呢? 下面就介绍一种自己经常使用的方式,利用Charles代理软件来实现! 安装Charles 直接去官网下载对应的系 ...