Neden böyle bir bağlantı oluşturun: ln -nsf?


42

Bu ne işe yarıyor?

ln -nsf

ln -sSabit bir bağlantı değil sembolik bir bağlantı oluşturduğunu biliyorum , bu da onu silebileceğiniz anlamına gelir ve bağlantı kurduğu düşüncesini silmez. Ama diğer şeyler ne anlama geliyor? (-nf)

Güncelleme: tamam ... bu yüzden komut satırından bu şeyleri bulabileceğinizi hatırladım. İşte yazarak öğrendiklerim 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

Ancak bu, bunun ne anlama geldiği konusunda net değil. Neden böyle bir yumuşak / sym bağlantısı oluşturmak isteyeyim?


1
Kullanmasanız bile -s, orijinal dosyayı silmeden bağlantıyı silebilirsiniz. Sabit bağlantılar, dosyanın link sayısını artırır, böylece yalnızca linklerden birini sildiğinizde silinmez.
Amok

Sert bir link ile sembolik bir link arasındaki fark bu değil. Sabit bir bağlantı, diskte aynı baytlara (inode) işaret eder. Yumuşak bir link dosya adına göre başka bir dosyaya işaret eder .
Greg Hewgill

Man sayfaları da var. yani koşan adam. Ya da erkek adam, bu yardım sistemini öğrenmek için. Man sayfalarını çevrimiçi olarak da alabilirsiniz ...
Peter Cordes

Yanıtlar:


43

BSD man sayfasından:

 -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.

32

-nseçeneği (birlikte -f) güçleri lnbir dizine sembolik bir bağlantı güncellemek için. Bu ne anlama geliyor?

2 rehberiniz olduğunu varsayalım

  • foo
  • bar

ve mevcut bir sembolik bağ

  • baz -> çubuk

Şimdi baz yerine foo işaret edecek şekilde güncellemek istiyorum . eğer sadece yaparsan

ln -sf foo baz

alırdın

  • baz / foo -> foo
  • baz -> bar (değişmemiş) ve böylece
  • bar / foo -> foo

eklersen -n

ln -sfn foo baz

ne istersen onu alırsın.

  • baz -> foo

'Terefiyatsızlık' şu anlama geliyor: mevcut bir bağlantıyı çözmeyin ve yeni bağlantıyı bu dizinin içine yerleştirmeyin, yalnızca güncelleyin.


2
Şimdiye kadarki en yararlı cevap.
kobejohn

1

İşte tüm seçenekler burada. Burada -n ve -f'yi bulacaksınız.

 -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

Bu tür şeyleri bulmak için "man ln" yazabilirsiniz:

   -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

20
Bunun ne anlama geldiğini hala tam olarak anlamadım
Andrew

-1

-f, --force varolan hedef dosyaları kaldır

-n, --no-dereference normal bir dosyaymış gibi bir dizine bağ olan hedef muamelesi


-5

-f , komutunuzun hedefi varolan bir dosyaysa, kaldırılmalı ve yeni link ile değiştirilmelidir. (Unix'ten etkilenen sistemlerde "dosya" nın dizinleri, bağlantıları, boruları vb. İçerebileceğini unutmayın)

-n değiştirir -f, belirttiğiniz hedef varolan sembolik bağ ise, o gerektiğini söyleyerek değil kaldırılabilir.


3
Açıklamanız -nyanlış. -fkendi başına bir dizine bir bağlantı yerine geçmez. Bir dizinin linkini değiştirirken -n, mevcut linke bir dizin yerine normal bir dosya gibi davranmak gerekir.
Brian
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.