Что произойдет, если случайно переместить мягкую ссылку, за которой следует «/»?

Что произойдет, если случайно переместить мягкую ссылку, за которой следует «/»?

Я создал мягкую ссылку на текущий каталог,

$ ln -s "$PWD" math

Затем я захотел переместить его в другой каталог.

$ mv math/ ~/dirlinks/maths/

Затем я понял, что мне следует

$ mv math ~/dirlinks/maths/

Поэтому я нажимаю ctrl-c, чтобы отменить процесс до его завершения.

Я обнаружил, что есть каталог mathпод ~/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в место назначения. Поскольку он указывает на текущий каталог, он полностью перемещается туда, куда вы ему сказали. Если бы вы оказались где-то прямо над местом назначения, это могло бы привести к интересной проблеме зацикливания.

Связанный контент