在终端中撤消命令?

时间:2015-07-27 01:28:56

标签: git terminal command

所以我使用终端在Mac上的文件夹中创建并移动一些文件。

我想将4个文本文件(Atom)从名为my_profile_project的目录移动到我的moodykhedr3.github.io文件夹(在我的计算机上,以便我之后提交并推送到git)。

显然,我做错了。发生了什么,它重命名了我试图移动到moodykhedr3.github.io的所有文件,这使得文件中的所有文本都相同。

我有一些HTML和一个CSS样式。真的需要回来。有什么建议?我想知道我是否可以撤消终端中的命令。

1 个答案:

答案 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