Trash-Cli:Linux 上的命令行回收站工具 https://zhuanlan.zhihu.com/p/44948578
为什么Linux的命令 rm 没有回收站呢? https://www.zhihu.com/question/373651127/answer/2611281467
Linux的命令 rm 为何没有回收站 https://baijiahao.baidu.com/s?id=1740283151825723880
------------------------------------------------------------
关联参考:
恢复 Linux 上已删除的文件:extundelete (***) https://blog.csdn.net/ken2232/article/details/1369656
错误::extundelete 、ext4magic (***) https://blog.csdn.net/ken2232/article/details/137047380
------------------------------------------------------------
rm 属于内核命令,嵌入内核的命令?
追求的是:快速、源码简短实现。不可能将回收站应用程序级的庞大源码嵌入其中。内核代码有高速、简短、精炼等等的要求。
Trash-Cli 实质上就是应用程序级的命令,
追求的是:高效、实用,源码比 rm 要庞大的多。为了追求高效和实用,源码庞大,有时也是可以接受的。
小结:使用 Trash-Cli 提供的删除命令,优点:简单,方便,高效,安全。
缺点:命令名太长,需要用户自己设置简短的别名来取代原来的长命令名。
对于应用程序级的命令来说,取名太简短时,就会与操作系统的命令,或其他 app的命令发生重名冲突。
要点:
Linux 默认:
- rm :删除的文件,是不会进入回收站的。windows 采用命令行删除的文件,也不会进入回收站。
- gui : 从gui 图形界面删除的文件,才会进入回收站。
1. 不要使用 rm 命令,除非必须
虽然也有人弄了一个这样的工具,但不知道是否有问题?
coderofsalvation / undelete-for-linux https://github.com/coderofsalvation/undelete-for-linux
而 Trash-Cli 存在于发行版的官方仓库里,可靠性更高吧 ?
2. 命令说明:
trash-list 可以列出在回收站中所有的文件,包括在 gui下删除的文件。
trash-restore 恢复回收站文件,只能恢复由 trash-put 删除的文件。
trash-put 把文件或目录移动到回收站。
注 1:使用别名:del ,在 linux下没有这个命令,不冲突?
注 2:Trash-Cli 一般的主流发行版,官方仓库都支持了 ?
3. 要习惯于使用:回收站,需要第一次后悔药 !!
但却尽可能地避免使用恢复工具这种第二次后悔药。第二次后悔药,许多人会将它交给专业的人员去做。
由于不可抗拒力造成的,而不应该是由于人为原因的不得不吃第二次后悔药,才是良性的 ?
不使用后悔药时,假如要恢复被删除的文件,可能就麻烦了。
extundelete : 可以恢复文件名,但这个文件太旧了,在最新发行版上使用可能有问题。需要下载适合的旧发行版,或者其他方法。
PhotoRec : 恢复回来的文件名,是某种序列号;但具有更强的恢复能力,并且官方现在还在更新。一般在正常使用的电脑上,恢复回来的文件太多了,不知道哪一个才是自己想要的?
R-Linux : 很好用的,免费版只能恢复 根目录下被删除的文件。
其他:???
4. 使用 Trash-Cli,使得删除操作更加的简单、方便,为什么不使用它呢?
但有一个问题,就是命令太长了;如果短的话,很容易与 OS的其他命令发生冲突。
需要自己来设置简短的别名。
~/.bashrc
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A' << 操作系统默认的别名
alias l='trash-put'
alias del='trash-put' << 自己加的别名
注:只要设置删除的别名,就可以了。恢复操作、也可以在 gui 图形界面下进行。
5. 不论是 windows,linux,官方都只提供了从回收站进行恢复的功能。
至于在回收站清空之后的恢复功能,那都是第三方提供的?
在正常使用的情况下,吃一次后悔药、就可以了;如果还要再吃一次,那是用户自己的问题了 ?
总之就是:使用回收站,后悔的时间,可能最短 ?痛感最小 ?
一个好的习惯,可以节省很多的时间和生命,可以收获愉快的心情。
------------------------------------------------------------
Trash-Cli:Linux 上的命令行回收站工具 https://zhuanlan.zhihu.com/p/44948578
如果在命令行使用 rm 命令进行删除操作,那么你是不可能在回收站中找到任何被删除了的文件或目录的。所以,在执行 rm 命令前请一定要三思。
Trash-Cli 是什么
trash-cli 是一个命令行回收站工具,并且符合 FreeDesktop.org 的 垃圾(trash)规范。它能够存储每一个垃圾文件的名字、原始路径、删除日期和权限。
摘录:为什么Linux的命令 rm 没有回收站呢?
https://www.zhihu.com/question/373651127/answer/2611281467
如果你在Windows命令行下执行del、rmdir命令,它同样会绕过回收站,直接删掉文件,这就是命令行工具的特点。
介绍一个命令行工具,就可以很轻松的解决rm绕开"回收站"的问题,给rm加一个类似Windows回收站的功能。
sudo apt install trash-cli
使用
trash-cli
提供了如下命令:
trash-put 把文件或目录移动到回收站
trash-empty 清空回收站
trash-list 列出回收站文件
trash-restore 恢复回收站文件
trash-rm 删除回收站文件
移动文件到回收站:
$ trash-put xxx
注:即使 xxx是只读的目录或文件,也可以删除。
删除回收站中 n 天前被回收的文件:
$ trash-empty <days>
文件在哪?与桌面版的回收站,是同一个
还有一个问题需要回答,执行trash-cli
命令后,被删除的文件放在哪了?
被删除后的文件存放在下面路径,如果删错了,也可以自行移出:
~/.local/share/Trash/
定别名
或许,有的同学觉得每次执行trash-cli
命令比较麻烦,还是觉得rm
更加简单、好记忆。
这样的话,可以通过设定别名的方式,给trash-cli
设定一个rm
的别名,这样,每次执行rm
,实际执行trash-cli
的命令:
$ alias rm="trash-put"
注:alias del="trash-put" << 这样似乎就与 win OS的习惯一样了吧 ?
但是,官方并不建议这样使用,因为,trash-cli
和rm
的命令语法并不完全相同,可能存在不兼容的地方。此外,shell的alias
只在交互界面有效,使用脚本运行时无效。
另外,如果你如果怕习惯性的执行rm
命令造成误操作,你可以给 rm 设置一个别名来提醒你不要使用它:
alias rm='echo "This is not the command you are looking for."; false'
如果你真的要用 rm,那就在 rm 前加上斜杠来取消别名:
\rm file-without-hope
Linux的命令 rm 为何没有回收站
https://baijiahao.baidu.com/s?id=1740283151825723880
对于经常和电脑打交道的小伙伴们对于Linux,应该是比较熟悉的,在使用的过程中会发现Linux的命令,没有回收站,这是为什么呢?
命令行程序是工具,旨在实现核心功能。在Linux中,命令rm没有回收站。在Windows中,命令del也没有回收站,图形化应用是产品,旨在考虑用户需求。在Windows中,文件管理器支持回收站功能。在Linux中,文件管理器(比如PCManFM、Nautilus等等)同样具有回收站,由XDG规范定义。一般来说,我们输入rm指令期望是立刻得到空间,大概相当于Windows的按住shift再删除。
回收站能帮你挽救误删的文件,万一将来你要执行的是一个重要指令,例如部署测试代码,如果你平时养成了无脑按 Enter 习惯的话,结果很有可能会是灾难性,例如把测试代码部署到真实环境下,所以不是 Linux 不能做回收站,而是相反,能有无数种做回收站的方法。
rm 是基础命令,回收站对应的基础命令是mv 或者cp然后rm,本质上是把文件移到一个固定的不显眼的地方,是比rm更高一级的封装。
linux 中的很多命令都是非常基础命令,它只实现单一功能,不会过多的为用户考虑,回收站的功能应该属于更高一级,不是和rm这种属于同一级的。当你删除你自己的文件时, 因为这个文件是你的, 所以你应该知道自己在做什么,你要为你的行为负责,所以, 简单来说, Linux是为"负责任的人"设计的。