Eu criei um link virtual para o diretório atual,
$ ln -s "$PWD" math
Eu então queria movê-lo para outro diretório.
$ mv math/ ~/dirlinks/maths/
então percebi que deveria
$ mv math ~/dirlinks/maths/
Então eu ctrl-c para cancelar o processo antes de terminar.
Descobri que há um diretório math
em ~/dirlinks/maths/
, e parece que os arquivos em .
são copiados para ~/dirlinks/maths/math
, porque vi os arquivos em ~/dirlinks/maths/math
também aparecerem em .
. Mas não entendo porque mv
não é cp
. O que aconteceu quando eu corro mv math/ ~/dirlinks/maths/
?
Obrigado.
Responder1
Vamos dar uma olhada no que seu primeiro comando fez: ele criou um link simbólico math
em seu diretório atual que aponta para o caminho absoluto do diretório atual. Vamos inspecionar um pouco mais de perto:
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
Agora, se você adicionar alguns arquivos $PWD
e realizar a movimentação:
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
Basicamente, ele move todo o diretório apontado por math
para o destino. Como aponta para o diretório atual, ele é completamente movido para onde você indicou. Se você estivesse em algum lugar diretamente acima do destino, isso poderia ter resultado em um problema de loop interessante.