所以我使用终端在Mac上的文件夹中创建并移动一些文件。
我想将4个文本文件(Atom)从名为my_profile_project
的目录移动到我的moodykhedr3.github.io
文件夹(在我的计算机上,以便我之后提交并推送到git)。
显然,我做错了。发生了什么,它重命名了我试图移动到moodykhedr3.github.io
的所有文件,这使得文件中的所有文本都相同。
我有一些HTML和一个CSS样式。真的需要回来。有什么建议?我想知道我是否可以撤消终端中的命令。
答案 0 :(得分:2)
BLUF:是的,但非常困难,而不是内置功能。</ p>
让我们通过查看mv:
的手册页来分解发生的事情由于重命名(2)调用不适用于文件系统,因此mv使用 CP(1) 和rm(1)完成此举。效果相当于:
rm -f destination_path && \ cp -pRP source_file destination && \ rm -rf source_file
我们知道cp工作正常,你有目标文件。我相信您的目标是获取原始文件,因此它是您要撤消的最后一个文件。
因此对于rm - rm实用程序删除符号链接,而不删除链接引用的文件。这就是rm文档说
的原因请注意,如果您使用rm删除文件,通常可以使用 恢复该文件的内容。如果你想要更多的保证 内容真的无法恢复,请考虑使用shred。
从文档中我们发现rm实际上调用了unlink(1)或unlink(2)
当实用程序被称为unlink时,只有一个参数,必须 不 是一个目录,可能会提供。此SIM卡中不提供任何选项 操作模式,对操作执行unlink(2)操作 通过论证。
因此,取消联系:
unlink()从文件系统中删除名称。如果那个名字是 最后一个链接到一个文件,没有进程打开该文件的文件是 已删除,并且正在使用的空间可供重复使用。如果 name是文件的最后一个链接,但任何进程仍然拥有该文件 打开文件将保持存在,直到最后一个文件描述符 提到它已经关闭。
如果名称引用了符号链接,则链接将被删除。
如果名称引用套接字,fifo或设备的名称是 已删除,但打开对象的进程可能会继续使用 它
根据这种理解 - 您希望在重用该空间之前将文件重新链接到inode编号。这并不容易。这是一个类似讨论的链接。如果您成功完成此操作,您将拥有两个文件,即您移动到的文件和原始文件。
https://serverfault.com/questions/168909/relinking-a-deleted-file