实现Linux系统的回收站
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
命令解释
- $@:传给脚本的所有参数(这里表示所有待删除的文件)
- 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系统的回收站的更多相关文章
- 云服务器 ECS Linux 系统添加“回收站”
删除是危险系数很高的操作,一旦误删可能会造成难以估计的损失.在云服务器 ECS Linux 系统中这种危险尤为明显.比如,一条简单的语句:rm –rf /* 就会把整个系统全部删除,而 Linux 并 ...
- 为linux系统实现回收站
在linux系统中,经常采用"rm *"或"rm -r *"操作删除一下文件,但是有时某些文件并不是我们想要删除的,但是已经被删除.很多时候都是悲剧的,数据是难 ...
- Linux系统运维工程该具备哪些素质
记得在上高中时,物理老师总是会对我们一句话:"学习是件苦差事."工作后发现,其实做运维也是件苦差事.最为一名运维工程师,深知这一行的艰辛,但和IT行业其他职务一样,那就是付出的越多 ...
- Linux下自制回收站
Linux下自制回收站 相信熟悉linux系统的人都知道rm的厉害,也大都听说过有rm造成的生产事故,本文将详细介绍如何在linux环境下制作回收站以避免数据误删除,如何恢复回收站中的数据,如何查看回 ...
- linux系统usb挂载
本次例程的环境是在FC6下,通过终端操作的. 注意要挂载U盘需要有管理员的权限. 切换成管理员,输入: su root 然后输入管理员密码,进行密码认证: 成功后,先在 /mnt 下建立一个名叫USB ...
- 在 Linux 系统下使用 PhotoRec 工具来恢复已删除或丢失的文件
PhotoRec – Recover Deleted or Lost Files in Linux 在 Linux 系统下使用 PhotoRec 工具来恢复已删除或丢失的文件 当你在系统中有意或无意地 ...
- 在 Linux 系统下使用 PhotoRec & TestDisk 工具来恢复文件
当你在系统中有意或无意地使用 shift + delete 组合键.删除选项,或是清空回收站的方式来删除一个文件时,该文件的内容并没有从硬盘(或是其它存储设备)上直接销毁. 它仅仅是从系统的目录结构中 ...
- linux系统入门—文件管理
目录 linux系统入门-文件管理 系统目录结构 目录管理 linux系统入门-文件管理 系统目录结构 几乎所有的计算机操作系统都是使用目录结构组织文件.具体来说就是在一个目录中存放子目录和文件,而在 ...
- linux系统中的一些典型问题汇总
一.文件系统破坏导致系统无法启动:Checking root filesystem/dev/sda6 contains a file system with errors,check forcedAn ...
随机推荐
- 说说for循环的两种写法
for循环 执行多次,条件写在()里,语法形式: 1 2 3 for(计数器变量;条件;计数器增减){ // 将要执行的代码 } 示例: 1 2 3 for (int i = 0; i < 5; ...
- Linux 中进程有哪几种状态?在 ps 显示出来的信息中, 分别用什么符号表示的?
1.不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的.不可中断, 指进程不响应异步信号. 第 441 页 共 485 页2.暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响 ...
- 学习Docker(二)
一.Docker快速入门 Docker 改变了什么? 1.简化配置 2.流水线管理 3.应用隔离 4.提高开发效率 5.快速部署 6.面向产品:产品交付 7.面向开发:简化环境配置 8.面向测试:多版 ...
- 4.RDD操作
目录 一. RDD创建 从本地文件系统中加载数据创建RDD 从HDFS加载数据创建RDD 通过并行集合(列表)创建RDD 二. RDD操作 转换操作 filter(func) map(func) fl ...
- SpringCloudAlibaba 微服务讲解(四)Sentinel--服务容错(二)
4.7 Sentinel 规则 4.7.1 流控规则 流量控制,其原理是监控应用流量的QPS(每秒查询率)或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的榴莲高峰冲垮,从而保障应用 ...
- 前端基础问题整理-HTML相关
DOCTYPE的作用以及常见的DOCTYPE类型 <!DOCTYPE>声明位于文档中的最前面的位置,处于 <html> 标签之前,用来告知浏览器页面目前的文件是用哪种版本的HT ...
- 解决Mui中popover 顶部弹出菜单弹出位置不准确以及无法收回的问题
前言 最近公司的项目转向使用Hbuilder开发移动端项目,其中想要通过在顶部标题栏加入弹出菜单的方式,来定位长列表的位置,如图所示. 问题 Mui的功能貌似还不是很完善,在使用这个弹出菜单的时候,发 ...
- 深入理解ES6之《用模块封装代码》
什么是模块 模块是自动运行在严格模式下并且没有办法退出运行的Javascript代码 在模块的顶部this的值是undefined 其模块不支持html风格的代码注释除非用default关键字,否则不 ...
- AS的不同布局
AndroidStudio里面支持的布局有挺多种的,但是最最重要的是RelativeLayout(相对布局)和LinearLayout(线性布局),熟练掌握这两种布局也非常够用了,当然还有FrameL ...
- 体温数据上传程序开发+获取时间的三种方法+DB Browser下载及安装
今天开始了体温上传程序的开发 今日所学: 获取时间 (21条消息) (转)安卓获取时间的三种方法_sharpeha的博客-CSDN博客_安卓获取时间 DB Browser安装教程 (20条消息) sq ...