今天看到一个帖子,讲数据误删之后怎么恢复。在后面的跟帖中发现了一个比较好玩的东西,他的原话是这样的:
觉得挺好玩的,于是决定自己弄着试试。
先来建个目录做回收站吧,我选择在根目录下建了一个trash的隐藏文件夹用作回收站:mkdir /.trash
来看一眼建立的回收站吧:ll -a /|grep .trash
然后我查了查mv的用法:man mv。在里面,有这么一个参数
这样一来就明显了,我需要把“rm *”替换成“mv -t /.trash -i *”,然后就大功告成了。既然准备自己定义命令,当然离不开alias:alias rm='mv -t /.trash -i'
然后我们看看alias的列表:alias 这一条就是新添加的。
我们来试试有没有作用吧,先随便新建一个文件:touch test.test,然后用rm删除:rm test.test。ls查看,发现test.test确实不见了,那么是不是被移到回收站“/.trash”中了呢,去看看吧:ls /.trash 果然在回收站。
至此,功能已经实现。但是想到一个问题,如果我确实想要删除文件怎么办?我试着删除回收站中的文件:rm /.trash/test.test 得到提升 mv: "/.trash/test.test" 与"/.trash/test.test" 为同一文件 。这可麻烦了,难道每次删除文件都只能通过 /bin/rm 来实现了吗?算了,一不做二不休,干脆在加一条自定义命令吧:alias rrm='/bin/rm -i' 这里不能写成“rrm='rm -i'” 因为rm已经被替换成'mv -t /.trash -i'了。然后我们来试试rrm指令:rrm /.trash/test.test 输入y确认,最后成功删除了test.test文件。
alias指令是单次生效的,关机后下次开机就没有了,为了保证下次开机指令的功能保持,我们可以修改~/.bashrc 文件。.bashrc文件有这么一句话“User specific aliases and functions”,我们可以把自己想要定义的别名都写在这个文件里。把文件里原有的 alias rm='rm -i' 注释掉,加上 alias rrm='/bin/rm -i' 和 alias rm='mv -t /.trash -i' 两句。ok,现在这个功能就永远留存下来了~~