当我输入“mv file.txt ../”时文件发生了什么变化?

uno*_*nor 2 directory symlink rename files

我想将 'file.txt' 向上移动一个文件夹,但mv file.txt ../file.txt我没有输入mv file.txt ../.

现在文件不见了,我没有收到任何错误消息。这么看来一些行动已成功完成。但是这里发生了什么?

我有备份,所以至少没问题。但我想了解我做了什么,如果我改变了什么,或者这个文件是否神奇地消失了。

dep*_*uid 5

该文件已移动到您所在的实际父目录,而不是您遵循的符号链接的父目录。默认情况下,cd与遇到lsmv时的行为不同..cd只是沿着路径向上,有效地反向跟踪符号链接,而其他人则转到它们所在目录的实际父目录,无论您是如何到达那里的。

想象一下这样的目录树(~是主目录,shortcut是到 的符号链接maindir/subdir):

~
??? maindir/
?   ??? subdir/
?       ??? file.txt
??? shortcut -> maindir/subdir/
Run Code Online (Sandbox Code Playgroud)

如果你只是cd为了~/shortcut然后ls会显示file.txt,并且pwd会显示~/shortcut但是,虽然pwd根据您遵循的符号链接, 的输出是正确的,但您实际上(“物理上”,如果您愿意的话)在~/maindir/subdir. lsmv意识到这一点,因此mv file.txt ..将移至file.txt实际的父目录:~/maindir,而不是~像您预期的那样。

您可以cd通过使用-P开关来表现得像其他人一样。因此,如果您在最初mv从 ( ~/shortcut) 运行命令并运行的目录中cd -P ..,它将带您到实际的父目录(例如~/maindir),您将能够file.txt使用简单的ls file.txt. (您也可以使用cd -P ..进入实际的当前目录。)