接触linux没多久,在学习过程中也了解linux中rm的作用和会导致的后果。可是在真实的工作中总会出现各样的问题。
实例,rm的潜在风险。
在一次执行脚本的过程中看到了不正常的情况。马上终止执行脚本查看自己的脚本文件,发现脚本文件以及工作文档都被删除了,欲哭无泪。不幸中的万幸重要的脚本还有备份。。。。
查看脚本,找出了问题,所以给大家提醒一个使用rm的潜在风险,有的脚本中写了类似于rm rf ${abc}/* 这种写法,如果abc变量在某种情况下取不到值了,就会变成自动执行rm -rf /* 如果此时正好拥有root权限,那么后果将极其严重,因此建议大家使用rm时应该规范为:先对变量进行判断是否不为空 ,不为空再rm。 例如 [ -n "${abc}" ] && rm -rf ${abc}/* 。
[ -n "${abc}" ]#判断变量abc是否不为空,不为空则执行下一语句。
解决问题:可以在自己的linux中加入一个回收站。
在~下 .bashrc或者.bash_profile加入
mkdir -p ~/.trash
alias rm=trash ash'
alias ur=undelfile
undelfile()
{
mv -i ~/.trash/$@ ./
}
trash()
{
mv $@ ~/.trash/
}
这是执行
rm 就相当于执行mv了
注:此时已经木有rm -rf了
删除的文件会在.trash中出现
可以恢复回去
ur filename
这就带来一个问题,如何删除回收站里的东西,这是后rm在这里是木有用的
在刚才.bashrc下继续加函数
cleartrash()
{
read -p "clear sure?[n]" confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /usr/bin/rm -rf ~/.trash/*
}
$. .bashrc
然后,如果想清空回收站的话
$cleartrash就行了
alias r=trash
alias rl='ls ~/.tr