Это является целью параметра ln
's' -f
: он удаляет существующие файлы назначения, если таковые имеются, перед созданием ссылки.
ln -sf /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file
создаст символическую ссылку, /path/to/recent/file
указывающую на /path/to/data/folder/month/date/hour/minute/file
, заменяя любой существующий файл или символическую ссылку на файл, если это необходимо (и работает нормально, если там уже ничего не существует).
Если каталог или символическая ссылка на каталог уже существует с целевым именем, внутри него будет создана символическая ссылка (так что в итоге вы получите /path/to/recent/file/file
в приведенном выше примере). -n
Опция, доступная в некоторых версиях ln
, будет заботиться о симлинках справочников для вас, заменяя их по мере необходимости:
ln -sfn /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file
POSIXln
не определяет, -n
поэтому вы не можете полагаться на это вообще. Большая часть ln
поведения определяется реализацией, поэтому вам действительно необходимо проверить специфику системы, которую вы используете. Если вы используете GNUln
, вы можете использовать -t
и -T
варианты тоже, чтобы сделать его поведение полностью предсказуемо в присутствии каталогов ( т.е. не в состоянии, а не создавать ссылку внутри существующего каталога с тем же именем).