为什么Linux的命令 rm 没有回收站呢?Trash-Cli:Linux 命令行回收站工具 (***)

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-clirm的命令语法并不完全相同,可能存在不兼容的地方。此外,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是为"负责任的人"设计的。

  • 21
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值