本文主要是介绍避免rm 的巨大伤害,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、原因:
今天测试时不小心把家目录里的好多东西删掉了,辛亏有备份,写好的好多脚本才没有丢
本来定义的有别名
alias rm="mv -t /app/tmp" -t :调换 源 和 目的 的参数位置可是在脚本里执行的rm 不支持别名,就删错了
二、思路:
1. 写一个脚本,名字是 rm ,把路径放在PATH的最前面把 /app/tmp 当作是回收站
2. 删除 alias rm=“rm -i”
三、过程
1. 脚本
#!/bin/bash
# ------------------------------------------
# Filename: rm
# Date: 2017-09-15
# Revision:
# Author: 木子甘
# stdentID:16
# Description: 避免rm的巨大伤害,使删除的东西在回收站
# ------------------------------------------
#检查有没有参数
f_args (){[ $# -eq 0 ] &&{ echo "missing operand" ; return 1; } || return 0
}
#检查文件是否存在
f_arg (){[ -e $1 ] ||{ echo "cannot remove ‘b.sh’: No such file or directory"; return 1; }
}
#mv
f_rm (){mv -t /app/tmp $1
}
#主程序
f_args $@
[ $? -ne 0 ] &&exit 1
while [ $# -ne 0 ] ; dof_arg $1 [ $? -ne 0 ] &&{ shift; continue; }f_rm $1[ $? -ne 0 ] &&{ shift; continue; }shift
done
2. 修改PATH变量
在/etc/profile.d/newvar.sh 里面写上PATH=$HOME/bin:$PATH
四、测试
1.脚本中测试
[root@localhost ~/bin]# vim test.sh
#!/bin/bash
which rm
bash -x rm /app/tmp/a.sh
结果是:
2.命令行测试
[root@localhost ~/bin]# which rm
/root/bin/rm
五、成功!!!
这篇关于避免rm 的巨大伤害的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!