Unix 命令行上是否有“撤消”命令?

Unix 命令行上是否有“撤消”命令?

我感觉有一天我会需要它,就像我刚刚删除了一些不该删除的东西,或者重命名了某些东西却不记得它应该叫什么,等等。

答案1

不好。Linux 中没有神奇的撤销按钮。

答案2

不。

Unix 本身不提供撤销功能。其理念是,如果它消失了,它就消失了。如果它很重要,它就应该备份


您可以将文件移至临时“垃圾”目录,而不是删除它。某些桌面环境会使用“删除”命令将文件移至垃圾。但请注意,只有少数应用程序会使用它;其他应用程序只会删除该文件。

许多命令可以撤消,例如,可以通过将文件移回原位来撤消文件移动。删除或覆盖文件的命令很难撤消;其中一些可以通过 shell 设置来提高对意外数据丢失的防御能力。特别是:

  • 在命令行上,cpmv覆盖任何现有的目标文件,但您可以让它们提示:

    alias cp='cp -i'
    alias mv='mv -i'
    

    我推荐这两个别名,因为没有它们,cpmv可以做两项工作:复制/移动和删除。不是拥有cpmv删除文件更符合 unix 哲学(一个命令完成一项工作),而且不容易出错。(这与 完全不同rm -i,后者在执行工作之前要求确认 — 这种系统提示往往会触发自动响应,因此成为无用的烦恼。)

  • 您可以让>重定向操作符仅接受创建文件,这样您就必须写入>|foo以允许覆盖现有文件foo

    set -o noclobber
    

有一个保险丝自动保留旧版本副本的文件系统:复制文件系统,适用于大多数操作系统(*BSD、Linux、OS X、Solaris)。当然,这会占用大量资源。

如果您将文件移动到不同的目录并记住其名称(部分)但不记得其位置,则可以使用该locate命令来找到它。


防止此类事故的最佳方法是使用版本控制系统(cvs、bazaar、darcs、git、mercurial、subversion 等)。学习需要一点时间,但从中期和长期来看,回报非常丰厚。

答案3

没有任何“撤消”选项,只有当您使用垃圾箱功能时才有。

要恢复已删除的文件,实际上取决于您拥有哪个文件系统。

有:

它支持大多数主流文件系统。

高频振动筛

为了高频振动筛(OS X)有一些商业解决方案,例如:

阅读更多:从格式化的 HFS+ 分区恢复文件


完整列表请查看:


为了避免类似情况,请更频繁地进行备份,使用版本控制或阅读如何移至rm垃圾桶

相关内容