rm 删除隐藏文件_rm 给你一个反悔的机会

6cb13f882f99d8d52b7901c021280ac2.gif

Linux 下 rm 命令是表示删除一个文件,而Linux是没有回收站机制,所以文件一旦删除的话,就彻底从磁盘上删除了。而很多人喜欢加上 -f 选项,是代表强制的意思,更暴力的是删除文件夹的时候使用 rm -rf 命令,这样一来,文件夹本身,以及文件夹下的子子孙孙,都一了百了了。

而万一如果你执行了 rm -rf /* 命令,那无疑效果与下面等同:

dc2bebc7bbb121cb127e5d1e5d89d8f3.png

由于没有回收站机制,很多人吃过这个亏,良许也是,曾经辛苦写的几个月的代码,一个 rm 命令全部化为乌有,搞得每次执行 rm 命令的时候,手都是颤抖的……

既然Linux没有回收站,那我们能否自己实现一个?答案当然是肯定的。下面,我们就自己动手做一个回收站,给自己一个后悔的机会。

既然罪魁祸首是 rm 命令,那我们就对这个命令进行改造。在Linux下对命令进行重定义是使用 alias 命令,修改的是 .bashrc 文件,即:

vim ~/.bashrc

在文件尾部,我们添加以下几句代码:

mkdir -p ~/.trash
alias rm=trash
alias r=trash
alias rl='ls ~/.trash/'
alias ur=undelfile

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

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

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

在这里,我们是在家目录下建立一个 .trash 的隐藏文件夹,作为回收站。然后,我们对 rm 命令进行重定义。当我们执行 rm 或者 r 的时候,将执行 trash 函数。而在 trash 函数里,只做一件事:

mv -i $@ ~/.trash/

就是将 rm 之后所有的文件移动到 .trash 目录下(即模拟丢进回收站)。-i 选项表示如果 .trash 目录有同名文件的话,将提示是否覆盖。

我们将 rl 定义为 ls ~/.trash/ ,也就是说,我们可以通过 rl 来查看 .trash 目录下的文件,即被「删除」的文件。

如果要还原文件,可以执行 ur ,而 ur 将执行 undelfile 函数。在 undelfile 里,又将 ur 之后的文件从 .trash 目录移回到原目录,从而实现文件删除还原。

当过了一段时间后,回收站里文件太多了,我们可以使用 cleartrash 命令清空回收站。它将执行同名函数,调用 /bin/rm 命令将 .trash 目录清空。

.bashrc 文件修改完毕之后,我们要让它生效:

source ~/.bashrc

我们来实际体会一下:

删除文件
alvin@alvin-pc:~/test$ touch file1 file2 file3
alvin@alvin-pc:~/test$ ls
file1  file2  file3
alvin@alvin-pc:~/test$ rm file1 file2 
alvin@alvin-pc:~/test$ r file3
查看回收站文件
alvin@alvin-pc:~/test$ rl
file1  file2  file3
还原被删除的文件
alvin@alvin-pc:~/test$ rl
file1  file2  file3
alvin@alvin-pc:~/test$ ur file1
alvin@alvin-pc:~/test$ ur file2
alvin@alvin-pc:~/test$ ur file3
alvin@alvin-pc:~/test$ ls
file1  file2  file3
alvin@alvin-pc:~/test$ rl
alvin@alvin-pc:~/test$ 
清空回收站
alvin@alvin-pc:~/test$ rm file1 file2 file3
alvin@alvin-pc:~/test$ rl
file1  file2  file3
alvin@alvin-pc:~/test$ cleartrash
clear sure?[n]y
alvin@alvin-pc:~/test$ rl
alvin@alvin-pc:~/test$

通过以上这些步骤,我们虽然可以实现一个回收站的功能,但实际的工作中,我们还是要养成定时备份的习惯,这样即使有误操作,我们也可以将损失降到最低。

原文来自:https://mp.weixin.qq.com/s/T-dLm85pZYS8Girn1mz8aA

本文地址:https://www.linuxprobe.com/rm-chance-back.html编辑:朱培棋,审核员:逄增宝

让您学习到的每一节课都有所收获

《Linux就该这么学》是一本由资深运维专家刘遄老师及国内多名红帽架构师(RHCA)基于最新RHEL7系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材。荣获双11、双12购物狂欢节IT品类书籍销量冠军,2017年、2018年国内读者增速最快的技术书籍,您可以在京东、当当、亚马逊及天猫搜索书名后购买,亦可加刘遄老师微信交流学习(手指按住下图3秒钟即可自动扫描)~

f81949e20db1bed0aa3e10c046da8e8a.png

刘遄老师QQ:5604215

☀ Linux技术交流群:560843(新群,火热加群中……)

☀ 官方站点:www.linuxprobe.com

☀ 书籍在线学习(电脑在线阅读效果更佳)

http://www.linuxprobe.com/chapter-00.html

《Linux就该这么学》是一本基于最新Linux系统编写,面向零基础读者的技术书籍。从Linux基础知识讲起,然后渐进式地提高内容难度,详细讲解Linux系统中各种服务的工作原理和配置方式,以匹配真实生产环境对运维人员的要求,突显内容的实用性。想要学习Linux系统的读者可以点击按钮了解这本书,同时这本书也适合专业的运维人员阅读,作为一本非常有参考价值的工具书!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值