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