接触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