@gy-ban
2017-04-23T11:12:55.000000Z
字数 818
阅读 789
linux
常在河边走, 哪能不湿鞋。这句话用在运维人员身上真是再恰当不过了,为什么这么说?作为一个系统运维人员,时刻要和生产服务器打交道,用root权限进程一些文件删除是在寻常不过的事情了,若一不小心执行命令 rm -rf /,如果此时正好拥有root权限,那么后果将不堪设想。
预防方法:
重定义 rm 命令以嫁接mv命令, 相当于给Linux系统定制了一个回收站。
###重定义rm命令###
#定义回收站目录
trash_path='~/.trash'
#判断$trash_path 定义的文件是否存在,如果不存在,那么就创建$trash_path.
if [ ! -d $trash_path ]; then
mkdir -p $trash_path
fi
#定义别名:使用rm就调用trash
alias rm=trash
#使用rl就调用’ls ~/.trash’ 如果更改上面的回收站目录这里的目录也需要修改
alias rl='ls ~/.trash'
#使用unrm就调用restorefile
alias unrm=restorefile
#使用rmtrash就调用claearteash
alias rmtrash=cleartrash
#恢复文件的函数
restorefile()
{
mv -i ~/.trash/$@ ./
}
#删除文件的函数
trash()
{
mv $@ ~/.trash/
}
#清空回收站的函数
cleartrash()
{
read -p '确定要清空回收站吗?[y/n]' confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/*
}
这个脚本定义了几个命令
rl 就是查看回收站下的文件
unrm 文件名或目录 就是恢复到当前的路径下
rmtrash 就是清空回收站,不过会友好提示。
执行rm 不会删除,其实就是使用mv 移动到我们指定的回收站
实在真的想删除可以/bin/rm 来进行删除
/bin/rm或者\rm 都可以临时取消别名。