撤消 Linux 垃圾箱命令

cdb*_*cdb 26 linux terminal command-line undo

我们可以撤消在终端中完成的操作,例如通过 删除文件rm吗?

得到的解决方案:

  1. 别名
  2. 取消删除实用程序
  3. 备份实用程序
  4. 垃圾箱
  5. 版本控制 (FUSE)

Joh*_*n T 67

终端中的每个操作都没有通用的“撤消”。如果您希望在使用后恢复文件,rm则需要查看恢复软件。

防止您将来出错的一个选项是使用aliases 替代命令来删除文件。将它们添加到您的~/.bashrc并养成使用它们而不是rm.

  1. 别名 rmi='rm -i'

    如果您使用rmi,系统将提示您确认未来的删除。尽量避免养成y在发出rmi命令后立即按下的习惯,因为那样会破坏目的。

  2. 您还可以将trsh终端中命令删除的文件移动到回收站(在 KDE 和 Gnome 上):

    alias trsh='mv --target-directory="$HOME/.Trash"'
    
    Run Code Online (Sandbox Code Playgroud)

    如果您使用trsh,您将拥有有限的“取消删除”功能。当心

    trsh dir1/file1 dir2/file1
    
    Run Code Online (Sandbox Code Playgroud)

    仍可能导致不可恢复的数据丢失。

  • 将 `rm` 别名为 `rm -i` 的风险在于你习惯了它给你的安全网。然后你转到另一台没有那个别名的机器上...... (21认同)
  • 第二个别名非常非常聪明。+1。 (9认同)
  • +1 的答案比我的好得多 =) (3认同)
  • 垃圾(){ mv $@ ~/.Trash; } # bash 函数,而不是别名。恕我直言,更改 rm 的预期行为是一个坏主意。 (3认同)
  • 由于 Richard 和 Dentrasi 提到的原因,我更喜欢创建自定义函数或将 `rmi` -> `rm -i` 作为别名。简单地通过别名来妨碍现有程序确实是错误的。 (3认同)
  • 人们似乎对别名问题有点慌张。当我使用其他人的系统时,我首先想到的是我所有的小程序和快捷方式都没有了,所以这对我来说不是问题。但我会编辑。 (2认同)

The*_*eek 6

命令行没有回收站。

您可以尝试一些各种取消删除实用程序,但不能保证它们会起作用。


小智 6

如果您在运行 gui 时使用 KDE,则可以使用垃圾命令行。这是使用 KDE 垃圾工具删除/恢复的命令行实用程序。

  • 我认为“alias rm=trash”有潜在的危险,如果有一天你有机会使用别人的系统并忘记(或ssh)。习惯写“trash”而不是“rm”会更安全。 (2认同)

jos*_*chi 5

还有两个技术解决方案尚未命名:

  1. libtrash:一个动态库,可以预加载到你的 shell 中,它拦截删除/删除系统调用并将文件移动到垃圾文件夹(很像别名,但在预加载时适用于任何应用程序)。
  2. 版本控制文件系统。如果您删除(或编辑、复制或...)一个文件,您可以恢复到旧状态。这可以通过FUSE文件系统及其版本控制文件系统之一来完成。