Почему конечный слэш в ln -s имеет значение?

Допустим (гипотетически), что я хотел сделать символическую ссылку на папку "Мои документы" на рабочем столе. Я бы сделал это:

cd ~/Desktop
ln -s ~/Documents

который создаст символическую ссылку "Документы" на моем рабочем столе.

Однако, когда я делаю это (обратите внимание на косую черту после ~/Documents:

cd ~/Desktop
ln -s ~/Documents/

Я получил:

ln: ./: File exists

Как так? Почему в этом случае имеет значение косая черта и что вообще означает косая черта?

1 ответ

Решение

Как отмечено в комментариях, конечная косая черта зависит от приложения. На моей системе (CentOS 5) оба работали нормально.

В этом случае я бы сказал, что ln интерпретирует ~/Documents/ в качестве пути и с использованием имени файла по умолчанию . для ссылки на текущий каталог, для эффективного комбинированного пути ~/Documents/., Поскольку вы не указываете имя целевой ссылки, она выбирает ту, которая соответствует "заданному" имени файла, ., который уже существует.

Я получаю ошибку, аналогичную вашей, когда я указываю ~/Documents/. в явном виде.

Вы можете решить эту проблему, указав имя ссылки для явного создания. ln -s ~/Documents/ Documents должен работать на вас.

Другие вопросы по тегам