pos*_*ist 20
抱歉不行。
xen*_*ide 11
不,在任何 Unix 中都没有神奇的撤销。Unix 假定您知道自己在做什么。对于撤消支持,请使用 VCS(您的文本编辑器可能也内置了它)。
大多数文件系统没有透明地执行此操作的能力。
mac 和 windows 上的时间机器和系统还原分别只是备份/更改控制系统。
命令行中没有撤消。但是,您可以将命令作为rm -i
和运行mv -i
。这将提示您“您确定吗?” 在他们执行命令之前提出问题。
也可以将它的别名添加到启动脚本(例如~/.bashrc
或/etc/bash.bashrc
):
alias remove='rm -i'
alias move='mv -i'
Run Code Online (Sandbox Code Playgroud)
编辑:根据下面的建议,我删除了给默认命令别名的建议。相反,它现在引入了新命令)。
Linux/Unix 系统没有取消删除的原因源于大多数文件系统存储其信息的方式。文件元信息全部存储在磁盘的前面,并引用磁盘其余部分的 inode。通常,大多数文件系统为此元区域中的文件分配 10 个块。前 7 个指的是前 7 个 inode。第 8 个和第 9 个转到 inode 列表(双向链接块),第 10 个转到列表列表(三重链接块)。这因文件系统而异(ext4、jfs、xfs 等),但这些块列表通常可以处理从 2GB 到几 TB 的任何文件大小。
但是因为所有这些信息都存储在磁盘的前面,所以当一个文件被擦除时,无法将磁盘上的 inode 引用到它们使用的元数据所属的位置。相比之下,FAT32 和 NTFS 实际上将一些头信息与文件本身一起存储,从而更容易识别一组块使用属于哪个文件(只要该空间尚未被新文件回收)。在 Linux 工作中,当你删除一些东西时,为了效率,它几乎总是首先被新数据立即覆盖。