当前位置: 首页 > 科技观察

给你一个反悔的机会

时间:2023-03-17 19:14:03 科技观察

Linux下的rm命令就是删除文件的意思,而Linux没有回收站机制,所以文件一旦被删除,就会从磁盘中彻底删除。而且很多人喜欢加上-f选项,也就是强制的意思。比较暴力的是在删除文件夹的时候使用rm-rf命令。这样,文件夹本身,以及文件夹下的子子孙都没有了。向上。而万一你执行rm-rf/*命令,效果无疑是一样的:因为没有回收站机制,所以很多人都深受其害,梁旭也是。写了几个月的代码,一个rm命令全没了,每次执行rm命令手都在抖……既然Linux没有回收站,那我们自己实现一个好不好?答案当然是肯定的。接下来,让我们自己做一个回收箱,给自己一个后悔的机会。既然罪魁祸首是rm命令,那我们就改造一下这个命令。Linux下重新定义命令就是使用alias命令修改.bashrc文件,即:vim~/.bashrc文件末尾,我们添加如下几行代码:mkdir-p~/.trashaliasrm=trashaliasr=trashaliasrl='ls~/.trash/'aliasur=undelfileundelfile(){mv-i~/.trash/$@./}trash(){mv-i$@~/.trash/}cleartrash(){读取-p"clearsure?[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$touchfile1file2file3alvin@alvin-pc:~/test$lsfile1file2file3alvin@alvin-pc:~/test$rmfile1file2alvin@alvin-pc:~/test$rfile3查看回收站文件alvin@alvin-pc:~/test$rlfile1file2file3恢复删除的文件alvin@alvin-pc:~/test$rlfile1file2file3alvin@alvin-pc:~/test$urfile1alvin@alvin-pc:~/test$urfile2alvin@alvin-pc:~/test$urfile3alvin@alvin-pc:~/test$lsfile1file2file3alvin@alvin-pc:~/test$rlalvin@alvin-pc:~/test$清理垃圾pc:~/test$rlalvin@alvin-pc:~/test$通过以上步骤,虽然我们可以实现回收站的功能,但是在实际工作中,还是要养成定期备份的习惯,这样即使如果操作失误,我们也可以将损失降到最低。本文经授权转载自公众号“良墟Linux”。世界500强外企Linux开发工程师梁旭,在公众号分享大量Linux干货,欢迎关注!