Linux“回收站”机制:给rm命令加一道保险 在Linux系统里,用过rm命令的朋友大概都深有体会:文件一旦删除,想恢复可就麻烦大了。即便费尽周折找回,文件名也往往变成了一串难以辨认的数字,实用性大打折扣。 有没有办法像Windows那样,给命令行也装上一个“回收站”呢?答案是肯定的。今天就来分享
在Linux系统里,用过rm命令的朋友大概都深有体会:文件一旦删除,想恢复可就麻烦大了。即便费尽周折找回,文件名也往往变成了一串难以辨认的数字,实用性大打折扣。
有没有办法像Windows那样,给命令行也装上一个“回收站”呢?答案是肯定的。今天就来分享一套行之有效的方案,通过改造环境变量,让rm命令变得“温柔”起来。
长期稳定更新的攒劲资源: >>>点此立即查看<<<
我们首先从root用户开始。核心思路是,用命令别名(alias)将rm重定义为一个移动到特定目录的操作,而不是直接删除。
打开root用户的环境变量配置文件:
vi ~/.bashrc
找到通常位于第5行左右的alias rm='rm -i'这行(如果存在),把它注释掉:
#alias rm='rm -i'
然后,在文件的最后,添加下面这段函数定义:
mkdir -p ~/.trash
alias rm=trash
alias r=trash
alias rl='ls ~/.trash'
alias ur=undelfile
undelfile()
{
mv -i ~/.trash/$@ ./
}
trash()
{
mv $@ ~/.trash/
}
cleartrash()
{
read -p "clear sure[n]" confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/*
}
保存退出后,别忘了让配置立即生效:
source ~/.bashrc
配置完成后,用ll -a命令查看家目录,你会发现多了一个隐藏文件夹.trash。它就是我们的“回收站”。
drwxr-xr-x. 2 root root 4096 Jun 4 11:31 .trash
现在,尝试删除一个文件:
[root@localhost ~]# rm percona-xtrabackup_2.2.3.orig.tar.gz
再去查看回收站目录,被“删除”的文件果然好端端地躺在那儿:
[root@localhost ~]# ll .trash/ total 33780 -rw-r--r--. 1 root root 34584359 Jun 2 09:39 percona-xtrabackup_2.2.3.orig.tar.gz
如果需要清空回收站,运行cleartrash命令,它会贴心地让你二次确认:
[root@localhost ~]# cleartrash clear sure[n]y
再次查看,回收站就被清空了。
这里有个关键点需要注意:我们只是为rm命令创建了别名。如果使用绝对路径/bin/rm,文件依然会被直接删除,不会进入回收站。这在需要彻底删除时有用,但也意味着操作时要格外留心。
另外,回收站目录不会自动清理,时间长了可能堆积大量文件。我们可以设置一个定期任务。比如,编写一个脚本,自动清理7天前的文件:
#!/bin/bash
find /root/.trash -ctime 7 -type f -name "*" -exec /bin/rm {} \;
然后,将这个脚本加入crontab计划任务即可。
如果希望服务器上所有用户都能享受这个“保险”机制,只需将配置放在系统级的环境变量文件中。
编辑/etc/profile文件:
vi /etc/profile
同样,在文件末尾添加与之前完全相同的函数和别名定义。保存后,重新加载配置:
source /etc/profile
之后,任何新创建的用户登录时,系统都会自动在其家目录创建.trash文件夹,并启用回收站功能。
我们创建一个普通用户a来测试一下:
useradd a passwd a
切换到该用户登录,执行ll -a,可以看到.trash目录已经自动创建。接着进行测试:
[a@localhost ~]$ touch 1.txt [a@localhost ~]$ rm 1.txt [a@localhost ~]$ ll .trash/ total 0 -rw-rw-r--. 1 a a 0 Jun 4 11:45 1.txt
看,文件成功转移到了回收站,功能完全正常。
最后,如果你觉得~/.trash这个默认位置不合适,完全可以在环境变量配置中修改trash()函数里的路径,将其指向任何你有写入权限的目录。如此,一套简单而实用的Linux命令行回收站系统就搭建完成了,这下可以更放心地管理文件了。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述