36

Что это делает?

ln -nsf

Я знаю, что ln -s создает символическую ссылку, а не жесткую ссылку, что означает, что вы можете удалить ее, и это не удалит мысль, на которую она ссылается. Но что означают другие вещи? (-NF)

Обновление: хорошо ... так что я вспомнил, что вы можете найти этот материал из командной строки. Вот что я узнал, набрав ln --help:

-f, --force                 remove existing destination files
-n, --no-dereference        treat destination that is a symlink to a
                            directory as if it were a normal file

Но это все еще не очень ясно для меня, каковы последствия этого. Зачем мне создавать ссылку на софт / сим так?

6 ответов6

40

Со страницы руководства BSD:

 -f    If the target file already exists, then unlink it so that the link
           may occur.  (The -f option overrides any previous -i options.)

 -n    If the target_file or target_dir is a symbolic link, do not follow
           it.  This is most useful with the -f option, to replace a symlink
           which may point to a directory.
22

опция -n (вместе с -f) заставляет ln обновить символическую ссылку на каталог. что это значит?

Предположим, у вас есть 2 каталога

  • Foo
  • бар

и существующая символическая ссылка

  • баз -> бар

теперь вы хотите обновить базу, чтобы указывать на foo . если вы просто делаете

ln -sf foo baz

ты бы получил

  • Баз / Фу -> Фу
  • Баз -> Бар (без изменений), и, таким образом,
  • bar / foo -> foo

если вы добавите -n

ln -sfn foo baz

Вы получаете то, что хотите.

  • Баз -> Фу

Вот что означает «отсутствие разыменования»: не разрешайте существующую ссылку и не помещайте новую ссылку в этот каталог, а просто обновляйте ее.

1

Вот все варианты для ln. Здесь вы найдете -n и -f.

 -F    If the target file already exists and is a directory, then remove
       it so that the link may occur.
       The -F option should be used with either -f or -i options.  If
       none is specified, -f is implied.
       The -F option is a no-op unless -s option is specified.

 -h    If the target_file or target_dir is a symbolic link, do not
       follow it.  This is most useful with the -f option, to replace 
       a symlink which may point to a directory.

 -f    If the target file already exists, then unlink it so that the
       link may occur.  (The -f option overrides any previous -i options.)

 -i    Cause ln to write a prompt to standard error if the target file
       exists.  If the response from the standard input begins with the
       character `y' or `Y', then unlink the target file so that the link
       may occur.  Otherwise, do not attempt the link.  (The -i option
       overrides any previous -f options.)

 -n    Same as -h, for compatibility with other ln implementations.

 -s    Create a symbolic link.

 -v    Cause ln to be verbose, showing files as they are processed.
-1

Вы можете набрать "man ln", чтобы найти такие вещи:

   -f, --force
          remove existing destination files

   -n, --no-dereference
          treat destination that is a symlink to a directory as if it were
          a normal file
-1

-f, --force удалить существующие файлы назначения

-n, --no-dereference обрабатывать назначение, которое является символической ссылкой на каталог, как если бы это был обычный файл

-5

-f говорит, что если целью вашей команды является существующий файл, он должен быть удален и заменен новой ссылкой. (Обратите внимание, что в Unix-системах "file" может включать в себя каталоги, ссылки, каналы и т.д.)

-n изменяет -f, говоря, что если указанная вами цель является существующей символической ссылкой, ее не следует удалять.

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