实现Linux系统的回收站

今天偶然看到一个有意思的shell脚本,用脚本实现Linux系统下的回收站,推荐给大家。


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

先提供脚本代码

[root@qll251 ~]# vim /bin/delete1 #! /bin/bash2 [ ! -d /.recycle ] && mkdir -v /.recycle && chmod 777 /.recycle34 if  [ $# -eq 0 ]; then5   echo "Usage: delete file1 [file2 file3...]" && exit 66 fi78 read -p "Are you sure you want to delete it? [Y/N]: " action9 case $action in10         y)  ;;11         Y)  ;;12         *)  exit13 esac1415 for file in $@; do16     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、脚本解释

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

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

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

3)判断输入的文件个数是否为0;如果返回为真,则打印帮助信息,同时退出该脚本

if  [ $# -eq 0 ]; thenecho "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)理解为:若用户回答yes,继续执行脚本;否则直接退出程序

case $action iny)  ;;Y)  ;;*)  exit
esac

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

命令解释:

  1. $@:传给脚本的所有参数(这里表示所有待删除的文件)

  2. basename:去掉路径信息,返回纯粹的文件名

for file in $@; donow=`date +%Y-%m-%d-%H:%M:%S`newfile=`basename $file`mv $file /.recycle/$newfile.$now && echo "$file is deleted!"
done


2、设置脚本可执行权限

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

3、定时清空回收站

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

0 0 * * 0 rm -rf /.recycle

4、进行测试

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

以下是具体实现方法:

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

alias rm='sh /bin/delete'

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


扫码或长按关注

回复「 篮球的大肚子」进入技术群聊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RobotFramework自动化测试框架的基础关键字(五)

1.1.1 Run Keyword If判断的使用 Run Keyword If是一个常用的用来做逻辑判断的关键字,意思是如果满足了某一个判断条件,然后就会执行关键字,我们对list3中放入0,1,2三个元素,然后遍历list3,判断当取到元素为0时…

python按位翻转_Python成为专业人士笔记-位操作符

“专业人士笔记”系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com按位操作符直接操作二进制的字符串,这些是最基本的操作,并直接由中央处理器所支持。在处理设备…

我看三国有感而发

三国到现在已经过去一千多年了,关羽先生应该还淹没在失去荆州的痛苦中,关羽先生出现的时候充满了一股傲气,这种站着向上仰望30度角的男人非常稀有,应该是几百年才出现一个,而且还要生于乱世,可惜啊可惜&…

pil库修改图片大小_Gvcode库:一个更简单的、华人开源的、自动生成验证码的python库...

1 说明:1.1 gvcode全称:graphic-verification-code。1.2 基本介绍,一秒搞懂。1.3 并对源码进行修改一个小bug,教您如何修改源码,解决bug。2 准备:2.1 官网:https://pypi.org/project/graphic-ve…

iOS获取某个日期后n个月的日期

一、给一个时间,给一个数,正数是以后n个月,负数是前n个月;1 -(NSDate *)getPriousorLaterDateFromDate:(NSDate *)date withMonth:(NSInteger)month2 3 {4 5 NSDateComponents *comps [[NSDateComponents alloc] init];6 …

Android-AB系统OTA升级介绍

什么是OTA升级?OTA是Over-the-Air的简称,OTA升级可以理解为用户正常使用过程中进行升级,OTA 升级旨在升级基础操作系统、系统分区上安装的只读应用和/或时区规则。什么是Android AB系统更新A/B 系统升级,也叫做无缝更新&#xff0…

python输出进度条 tqdm_python-tqdm进度条

Tqdm 进度条可视化模块2018-12-04 14:34:25 使用python Tqdm进度条库让你的python进度可视化 Tqdm在阿拉伯语表示进步,在西班牙语中表示我非常爱你.是一个快速,可扩展的Python进度条, ...Python字符进度条Python字符进度条 看看这个神奇的module from tqdm import trange from …

看完少年的你,想到少年的我

别人喜欢听故事,所以我就讲故事,我可以不是现在的我,但是我还是原来的我,我从一个很小的地方来,我小时候,家里赚钱很难,读书是一件很苦的事情,但是呢,读书又是一件非常光…

伤感网络验证系统_知网查重报告单能造假?验证报告单真伪时,知网只给了这一个办法...

这是论文屋推送的第5篇文章,论文代发寻渠道,就到论文屋。现在的修图功能太强大了有木有?除了专业的一点的AdobePhotoshop之外,任何的一款修图软件甚至手机软件都可以更改一张图的任何地方,最重要的是,技术高…

jQuery: 整理3---操作元素的内容

1.html("内容") ->设置元素的内容&#xff0c;包含html标签&#xff08;非表单元素&#xff09; <div id"html1"></div><div id"html2"></div>$("#html1").html("<h2>上海</h2>") …

安卓系统监听system property值?

预备知识-什么是system propertysystem property是系统属性&#xff0c;以key-value格式保存。可以通过以下方式读取和修改system property的值&#xff1a;1.adbadb shell getprop <key> adb shell setprop <key> <value>2.C/Cint property_get(const char…

为什么全天坐在电脑前会让你精疲力竭

Tips 原文作者&#xff1a;Katie Heaney 原文地址&#xff1a;Why Sitting at Your Computer All Day Can Wipe You Out 像大多数日子一样&#xff0c;我昨天大部分时间坐在我认为是公寓最美丽的一角&#xff0c;一直在笔记本电脑打字。 我提交了一个故事&#xff0c;转述了几个…

这届全明星,把NBA又燃回来了

第一个罚球&#xff0c;戴维斯出手后&#xff0c;听到哐当医生&#xff0c;皮球掉了出来。我又紧张了。微信群了很多人开始发消息&#xff0c;说詹姆斯队又要输了。回到比赛。戴维斯当时没有任何微笑&#xff0c;我估计他内心也是紧张的&#xff0c;他有点埋怨哈登&#xff0c;…

PYTHON__ ITERTOOLS模块

组成 总体&#xff0c;整体了解 无限迭代器 迭代器 参数 结果 例子 count() start, [step] start, startstep, start2*step, ... count(10) --> 10 11 12 13 14 ... cycle() p …

redis分布式锁java代码_基于redis实现分布式锁

“ 在上一篇文章中介绍了动态配置定时任务&#xff0c;其中的原理跟spring 定时任务注解Scheduled一样的&#xff0c;都是通过线程池和定义执行时间来控制。来思考一个问题&#xff0c;如果我们的定时任务在分布式微服务里面呢&#xff1f;在分布式微服务里面一个微服务肯定可以…

数值字符串

加粗样式 数值与字符串 受限于电脑内存 数字 int float 布尔 none 列表list:l[1,2,3] l[1]2 字典表dict:d{‘name’;‘tom’,‘age’:20} d.get(‘name’) d[‘name’] 元组t(1,2,3,4) 元组与列表区别&#xff1a;列表可以改变相应下标数据&#xff0c;元组不行。 数值&#x…

C语言写个贪吃蛇游戏

贪吃蛇是个非常经典的游戏&#xff0c;用C语言来实现也是一个好玩的事情。这个游戏我写完后放在知乎&#xff0c;竟然点赞的人数超级多。我觉得大家喜欢&#xff0c;一个方面是因为写得简单&#xff0c;大家都能看得懂&#xff0c;一个可扩展性还是非常强的。我试了说一下这个代…

seir模型matlab_疫情专题 | 传染病的经典数学模型

在此次新冠肺炎疫情防控过程中&#xff0c;对疫情发展趋势的科学预测显得尤为重要。而这背后&#xff0c;离不开对传染病传播规律的建模。今天&#xff0c;小编就带各位数学学子们来了解一下传染病的四大经典数学模型&#xff1a;SI/SIS/SIR/SEIR。其中用到了许多微分方程的知识…

vlh 标签详解

1.vlh:root root标签做为所有vlh标签的根标签. 1)value 在给定的范围内&#xff0c;包含在ValueList或list的变量名. List的实例自动被DefaultListBackedValueList包装在ValueList中 2)id 如果有多个表被包含在一个request中&#xff0c;ID属性能区分每个表。id被追加到所…

ubuntu电脑安装硬盘

最近在做安卓开发&#xff0c;一套RK3399的安卓代码&#xff0c;解压编译后占用170多G的硬盘。所以呢&#xff0c;原来1T大小的硬盘&#xff0c;很快就沾满了&#xff0c;然后我赶紧给北京总部申请买了一个新的硬盘。现在的台式电脑都是用的SATA硬盘接口&#xff0c;我赶紧就上…