美文网首页编程地带
rm防止误删除——自定义回收站

rm防止误删除——自定义回收站

作者: MA木易YA | 来源:发表于2019-01-10 11:26 被阅读0次

    之前小编在开发时因为git上的操作大失败,不停push、clone,push、clone,然后就出现了很多重名文件,一不小心就直接rm -rf了,然后就溃败在各路文件找回的方法中。


img.png

    Disk Drill,EasyRecovery, Time Machine等等都有尝试过,前两者属于是数据恢复软件,过程比较慢而且有些操作会涉及到电脑的安全设置问题,类似让你关闭防火墙或者设置一些你完全不懂的东东,emmmmmmm,最后下来因为被删除的是代码文件夹,比较泛化所以也不好找,倒是意外的找到了不少以前没注意到的一些pdf、word文件(可能是以前使用者留下的),但是,最坑爹的剧情出现了,如需恢复请充钱,付费版Emmmmmm。


266.jpg

    当然,Mac是有自带的备份功能和Time Machine的,但是这需要外部驱动或者提前设置,完败,最后小编也是只能规规矩矩重新做一份当时的项目了。
    后来小编就在网友那里得知了这个处理方法,将rm命令进行改良,设定成mv别名。
    先简单介绍一下,这个方法相当于建立了一个回收站~/.trash,将rm的功能设定成mv,将rm的所有文件剪切至回收站内,可以设定shell设置一定时间后自动删除,这里也可以去里面自己进行回收站清空

防误删脚本:

### 重定义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/*
}


    将上述脚本写入 /etc/bashrc 并立即执行命令 source /etc/bashrc即可生效。若你的mac设置了zsh等其他配置只需要添加到相应的配置文件内重载即可。

相关指令

  1. 查看回收站下的文件——rl
  2. 恢复filename到当前目录——unrm filename
  3. 清空回收站(会有提示)——rmtrash

问题

  • 但是过程中会有一些问题出现,比如回收站不能出现重名文件,大家可以在脚本上面做一些处理
  • 由于rm命令已经嫁接到mv上,所以原先的一些指令使用时会有影响,实在是确定了要删除可以使用/bin/rm
  • via 如何优雅的使用rm防止误删除
9150e4e5ly1fnnau7ujopj20es0m6752.jpg

相关文章

网友评论

    本文标题:rm防止误删除——自定义回收站

    本文链接:https://www.haomeiwen.com/subject/gzdflqtx.html