如果不小心移动了后跟“/”的软链接会怎样?

如果不小心移动了后跟“/”的软链接会怎样?

我创建了一个到当前目录的软链接,

$ ln -s "$PWD" math

然后我想将其移动到另一个目录。

$ mv math/ ~/dirlinks/maths/

然后我意识到我应该

$ mv math ~/dirlinks/maths/

所以我在完成之前按 ctrl-c 取消该过程。

math我发现下面有一个dir ~/dirlinks/maths/,而且好像下面的文件.都被复制到了~/dirlinks/maths/math,因为我看到下面的文件~/dirlinks/maths/math也出现在下面.。但我不明白,因为它mv不是cp。当我跑步时发生了什么mv math/ ~/dirlinks/maths/

谢谢。

答案1

让我们看看您的第一个命令做了什么:它math在当前目录中创建了一个指向当前目录的绝对路径的符号链接。让我们仔细检查一下:

user@host:/free$ ls -al /free
total 4
drwxrwxrwt  2 root root   40 Oct 14 10:29 .
drwxr-xr-x 24 root root 4096 Oct  1 22:28 ..
user@host:/free$ ln -vs /free math
‘math’ -> ‘/free’
user@host:/free$ ls -al /free
total 4
drwxrwxrwt  2 root root    60 Oct 14 10:29 .
drwxr-xr-x 24 root root  4096 Oct  1 22:28 ..
lrwxrwxrwx  1 user users    5 Oct 14 10:29 math -> /free

现在,如果您添加一些文件$PWD并执行移动:

user@host:/free$ touch a b
user@host:/free$ mv -vi math/ /tmp/Q
‘math/’ -> ‘/tmp/Q’
‘math/math’ -> ‘/tmp/Q/math’
‘math/b’ -> ‘/tmp/Q/b’
‘math/a’ -> ‘/tmp/Q/a’
removed ‘math/math’
removed ‘math/b’
removed ‘math/a’
mv: cannot remove ‘math/’: No such file or directory

基本上它将把指向的整个目录移动math到目的地。由于它指向当前目录,因此它完全移动到您指定的位置。如果您碰巧位于目的地正上方的某个地方,则可能会导致有趣的循环问题。

相关内容