rm 给你一个反悔的机会【转载公众号】

对于被rm -rf 伤过的人来说,这个东西或许很吸引眼球。

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

而万一你执行了 rm -rf /*命令 那无异于原子弹爆炸。

由于没有回收站机制,很多人吃过这个亏,曾经辛苦写的几个月的代码瞬间化为乌有。

既然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目录清空。

.brash文件修改完毕后,我们要让他生效:

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?__biz=MzA4NzQzMzU4Mg==&mid=2652927220&idx=2&sn=743288835e311da573106752c1bba0e5&chksm=8bed5cf5bc9ad5e34f00ba8bf15f5db8f67cbcbb52ab4af15487fa82cbfad901d5215ed60661&mpshare=1&scene=23&srcid=&sharer_sharetime=1580965861078&sharer_shareid=fc4e4e728d15840fe15fc9697ab1c078#rd
发布了154 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42506599/article/details/104238632
rm