bash/tcsh实现回收站(rm -rf 血的教训)

rm -rf 慎用

命令敲得多了,常在河边走,难免会湿鞋

昨天,一个手误,敲错了命令,把原本想要留的文件夹给rm -rf掉了

几天心血全木有了,靠,死的心都有了


经百度,google以及尝试无果,哎,这个以后再研究怎么找回吧

几点教训:

1.rm 特别是rm -rf之前,小心,三思,或者直接将命令改写掉

2.做好备份,有便捷的备份脚本

3.做好定时备份,有个前辈搞定时脚本,每天定时自个执行,即使删错了也不会那么悲催

首先,搞个回收站


在~下 .bashrc或者.bash_profile加入

    mkdir -p ~/.trash

    alias rm=trash
    alias r=trash
    alias rl='ls ~/.trash'
    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/*
    }

然后,如果想清空回收站的话$cleartrash 就行了


血的教训,防范未然


上面是转的,下面研究了一下csh的用法,用在Rhel 6.5下面

csh需要在~/.cshrc下增加

if !(-d ~/.trash) then
  mkdir -p ~/.trash
endif
#alias rm 'mv \!* ~/.trash/' 重复删除会报 mv: Directory is not empty
alias rm 'set trash_dir=`date +%y%m%d%H%M%S%N`;mkdir ~/.trash/$trash_dir;mv \!* ~/.trash/$trash_dir'
#alias unrm 'mv -i ~/.trash/\!* ./' 原谅我unrm实在不会弄了……等高手来弄吧
alias cleantrash '/bin/rm -rf ~/.trash/*'


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值