今天偶然看到一个有意思的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
命令解释:
- $@:传给脚本的所有参数(这里表示所有待删除的文件) 
- 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使替换立即生效
扫码或长按关注
回复「 篮球的大肚子」进入技术群聊