一、Linux的回收站简介
回收站是用于暂时存放被删除文件的一种机制,它可以让用户在不小心删除文件后,还有机会把文件恢复到原来的位置。很多操作系统都有回收站,Windows、Mac OS等都是。那么,Linux系统中是否设有回收站呢?这是许多初学者首先要知道的问题。
二、Linux是否有官方回收站
2.1 Linux回收站原理
在 Windows 中,删除文件只是让文件标记为“可被覆盖”,文件并没有真正地从磁盘上删除。而在 Linux 中,删除文件是从磁盘上直接移除,文件系统没有什么能够追踪已经删除文件的结构。因此,在 Linux 系统下建立回收站的难度较之於 Windows 操作系统大。
2.2 环境变量实现回收站
由于Linux本身并不支持垃圾桶,因此很多Linux系统都是通过环境变量来实现类似回收站的功能。当用户在Linux中删除文件时,文件并没有真正删除,而是被移动到 /home/user/.local/share/Trash 目录下。
$ echo $XDG_DATA_HOME
/home/username/.local/share
$ ls .local/share/Trash
files info
如上代码,当我们在linux中test目录下删除文件a.txt时,会将该文件移动到home目录对应的Trash目录下。
$ cd test
$ rm a.txt
$ ls ~/.local/share/Trash
files info
如上代码,我们查看home目录对应的Trash文件夹则可以找到刚才删除的文件。files目录下存放的是所有被删除的文件,而info目录下存放的是文件删除的相关信息。
三、第三方回收站软件
安装第三方回收站软件,即可在Linux系统下实现类似Windows的回收站功能。例如:Trash-cli、rmtrash等。
3.1 Trash-cli
Trash-cli 是使用Python编写的第三方命令,可以在控制台使用。
$ apt-get install trash-cli
安装 Trash-cli 后,就可以运行 trash-put 获得类似Windows回收站的功能。
$ trash-put test.txt
如上代码,这样我们就把文件放入了类似Windows回收站的Trash中。要使用 trash-restore 恢复文件,或者使用 trash-empty 清空回收站中的所有文件。
3.2 rmtrash
rmtrash 是一种sh脚本,可以将文件放入垃圾箱而不是直接删除文件。
$ sudo wget -O /usr/local/bin/rmtrash https://raw.githubusercontent.com/Make-School-Labs/rmtrash/master/rmtrash
然后赋予执行权限:
$ sudo chmod +x /usr/local/bin/rmtrash
现在,我们就可以开始删除文件并放入垃圾箱了!
$ rmtrash file.txt
然后,我们可以在垃圾箱中找到删除的文件:
$ ls ~/.trash
四、小结
尽管linux本身不支持垃圾桶功能,但我们可以通过 Linux 环境变量或第三方软件实现该功能。通过这篇文章,我们可以了解到Linux的回收站是这样一种实现方式,Linux的专业性和严谨性使得回收站功能十分实用,反而可能对用户产生更大的帮助。