• 欢迎访问我的个人博客网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 如果您觉得本站对您有用,那么赶紧使用Ctrl+D收藏吧!
  • 相关内容持续完善中......

shell习题:自定义rm

Shell hubin 1年前 (2018-02-17) 283次浏览 0个评论 扫描二维码

linux系统的rm命令太危险,一不小心就会删除掉系统文件。 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。下面分两种情况,做练习:

1. 简单

假设有一个大的分区/data/,每次删除文件或者目录之前,都要先在/data/下面创建一个隐藏目录,以日期/时间命名,比如/data/.201703271012/,然后把所有删除的文件同步到该目录下面再删除

2. 复杂

不知道哪个分区有剩余空间,在删除之前先计算要删除的文件或者目录大小,然后对比系统的磁盘空间,如果够则按照上面的规则创建隐藏目录,并备份,如果没有足够空间,要提醒用户没有足够的空间备份并提示是否放弃备份,如果用户选择y,则直接删除文件或者目录,如果选择n,则提示未删除,然后退出脚本。
脚本:

1.简单:

1
2
3
4
5
6
#!/bin/bash
read -p 'please input the file or directory' input
[ ! -e /data/$input ] && exit 1
[ ! -d /data/".`date +%F`" ] && mkdir /data/".`date +%F`"
cp -rf /data/$input /data/".`date +%F`"
rm -rf /data/$input

2.复杂

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
Usage=`df -h|awk '{print $5}'|grep -v Use|sed 's/%//g'|sort -rn|head -n1`
partion=`df -h|grep "$Usage%"|awk '{print $6}'`
[ $Usage -ge 80 ] && read -p "disk space is low,continue?" continue
[ $Usage -lt 80 ] && continue="y"
if [ $continue == "y" ];then
read -p 'please input the file or directory' input
[ ! -d $partion/".`date +%F`" ] && mkdir $partion/".`date +%F`"
cp -rf /data/$input $partion/".`date +%F`"
rm -rf /data/$input
fi

本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:shell习题:自定义rm
喜欢 (0)
hubin
关于作者:
头像
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址