rm是Linux下文件删除的命令,它是Linux下非常强大却又非常危险的一条命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有文件和目录时,很简单
#rm -rf ./*
这没什么,但是,但是如果不小心打成这样
#rm -rf /*
兄弟请节哀吧!~~
rm删除文件同时删除inode信息,这使得使用rm删除的文件十分难恢复。总之rm太危险了,特别是带有-rf参数时一定要慎之又慎,但老虎也有打盹的时候啊,所以为什么不给rm一剂后悔药呢!

    经过在网上不断的寻找,我找到了一段将rm命令改造为把文件移动到一个指定的回收站目录下,然后可以查看回收站目录下的文件,然后在清空回收站目录彻底删除文件的一段代码,这短代码的原始出处已经无从考究,但本着独乐乐不如众乐乐的精神把它分享出来!

 

  1. mkdir -p ~/.trash  //创建一个目录作为回收站,这里使用的是用户家目录下的.trash目录 
  2. alias rm=trash  //命令别名 rm改变为trash,通过将rm命令别名值trash来实现把rm改造成删除文件至回收站 
  3. alias r=trash  
  4. alias rl='ls ~/.trash'  // rl 命令显示回收站中的文件 
  5. alias ur=undelfile // ur命令找回回收站中的文件 
  6. undelfile() //这个函数的作用是找回回收站下的文件 
  7. {  
  8.   mv -i ~/.trash/\$@ ./  
  9. }  
  10. trash() //这个函数是将指定的文件移动到指定的目录下,通过将rm命令别名值trash来实现把rm改造成删除文件至回收站 
  11. {  
  12.   mv $@ ~/.trash/  
  13. }  
  14. cleartrash()  //这个函数的作用是清空回收站目录下的所有文件 
  15. {  
  16.     read -p "clear sure?[n]" confirm   
  17.     [ $confirm == 'y' ] || [ $confirm == 'Y' ]  && /bin/rm -rf ~/.trash/*   
  18. }  

    这段代码定义了三个函数trash、undelfile和cleartrash。trash的作用是移动文件到指定的回收站目录;undelfile的作用是找回回收站目录中的指定文件;cleartrash的作用是清空回收站目录。经rm命令别名为trash来实现rm命令的改造!

下面是我修改后的代码,直接在用户家目录下创建。trash目录作为回收站,将其它代码加入用户家目录下的.bashrc文件下,这样用户每次登录这段代码就会自动生效!登录后在bash下执行一遍下面的命令就可以把rm命令改造成删除文件到回收站了!

 

mkdir -p ~/.trash
cat >> .bashrc <<EOF
alias rm=trash
alias r=trash
alias rl='ls ~/.trash'
alias ur=undelfile 

undelfile()
{
  mv -i ~/.trash/\$@ ./
}

trash()
{
  mv \$@ ~/.trash/
}

cleartrash() 
{
    read -p "clear sure?[n]" confirm 
    [ \$confirm == 'y' ] || [ \$confirm == 'Y' ]  && /bin/rm -rf ~/.trash/* 
}
EOF