У меня очень странная проблема с перемещением и переименованием каталогов и файлов с использованием mv я никогда раньше не испытывал. Самое странное, что это происходит как в Ubuntu, так и в Cygwin для Windows.

mv пытается создать жесткую ссылку вместо фактического перемещения или переименования файла или каталога.

Пример переименования каталога:

$ mkdir test
$ mv test test2
ln: ‘test’: hard link not allowed for directory

Пример переименования файла:

$ touch test
$ mv test test2
$ ll -i
131140 -rw-rw-r-- 2 user group    0 Nov 13 16:06 test
131140 -rw-rw-r-- 2 user group    0 Nov 13 16:06 test2

Очевидно, что mv только что создал жесткую ссылку, потому что оба файла имеют одинаковый номер инода.

Почему он это делает?

У меня также есть другая система с Debian, и mv работает так, как я ожидаю. Можно ли настроить это поведение где-нибудь в пользовательских точечных файлах? Если я переключаюсь на root в Ubuntu, mv работает нормально. Поэтому я подозреваю, что какая-то конфигурация пользователя, так как я использую те же файлы точек для Linux, как и для Cygwin.

1 ответ1

1

Так что причина была исключительно во мне. У меня был этот псевдоним в моих точечных файлах, который вызвал такое странное поведение: alias mv='ln -i'.

Причина была проста: когда я создавал "защищенные" псевдонимы cp , mv и ln с помощью interactive аргумента, я просто копировал и вставлял предыдущие псевдонимы. И в случае псевдонима ln я изменил содержимое псевдонима, но не его имя. Это должно быть ln='ln -i' , но в итоге получилось упомянутое ранее mv='ln -i' .

Я чувствую стыд. Извините за глупый вопрос, я сомневаюсь, что кто-то когда-либо испытывает ту же проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .