一、需求背景
在Linux上,可能存在误执行rm命令导致服务器崩溃的情况发生,
为尽量降低风险,故增加回收站功能。
二、增加回收站
1、编辑系统环境配置文件
vim /etc/profile####### trash #######mkdir -p ~/.trash # 路径可以自己创建和命名,不受限制,修改路径名后,记得修改下面三个函数里面的路径alias rm=trash # 将rm别名成trash,调用trash函数alias ur=undelfile # 使用别名定义一个ur命令,调用undelfile函数,作用是还原文件function undelfile(){ # 通过$@将ur后面的参数逐一传给mv移动到当前目录下mv -i ~/.trash/$@ ./ # mv -i 当目标文件存在时,提示是否覆盖}function trash(){ # 在终端输入的rm命令,会通过别名alias调用trash函数,再通过$@将rm后面的参数逐一传给mv移动到.trash目录下mv $@ ~/.trash/}function cleartrash(){ # 在终端输入 cleartreash ,就会调用这里的函数,输入'y 或 Y',就会清空.trash目录下的内容read -p "clear sure?[n]" confirm[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/* # /bin/rm 不受别名的限制,会直接删除文件}####### trash end #######
alias rm=trashalias ur=undelfilefunction undelfile(){mv -i /home/trash/$@ ./}function trash(){mv $@ /home/trash/}function cleartrash(){read -p "clear sure?[n]" confirm[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf /home/trash/*}####### trash end #######
2、使其立即生效
source /etc/profile
三、验证测试
1、删除文件测试
[[[[2 test.txt
2、删除目录测试
[[[[[trash yxtf[[2 dir test.txt[[1 2 3 4 5
备注:使用绝对路径/bin/rm进行删除,不会被移动到回收站,会直接进行删除。
四、实现自动清理回收站
比如自动删除7天以前的回收站文件
vim trash.sh
find /home/trash -ctime 7 -type f -name "*" -exec /bin/rm -rf {} ;
实现每天0:00自动清理回收站
crontab -e
0 0 * * * /ops/trash.sh

