今天偶然看到一个有意思的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
使替换立即生效
扫码或长按关注
回复「 篮球的大肚子」进入技术群聊