İlk konu:
Senden alıntı:
Kreasyonlar ve silme işlemleri iyi sonuç verir. Ancak güncellemeler çalışmıyor. Bu komutu uyguladıktan sonra sembolik bağlantı geçersiz hale gelir.
Verilen dizin yapısındaki problem:
~ / komut dosyaları / test / ~ / komut dosyaları / test / remote_loc / ~ / komut dosyaları / test / remote_loc / site1 / ~ / komut dosyaları / test / remote_loc / site1 / stuff1.txt ~ / komut dosyaları / test / remote_loc / site2 / ~ / scriptler /test/remote_loc/site2/stuff2.txt ~ / komut dosyaları / test / remote_loc / site2 / ~ / komut dosyaları / test / remote_loc / site3 / stuff3.txt
ve komutu kullanarak:
ln -s /remote_loc/site1 test_link
$ PWD'nizde veya mevcut çalışma dizinde sembolik bir bağlantı oluşturduğundan veya / remote_loc / site1 adresindeki / veya kök dizininde olmayan bir dosyaya işaret ediyor.
PWD'niz ~ / scripts / içindeyse, bunu kullanmalıydınız:
ln -s remote_loc/site1 test_link
Aksi gibi tam mutlak yolu kullanabilirdi:
ln -s /home/yourusername/remote_loc/site1 test_link
İkinci sayı:
Senden alıntı:
Burada okudum ve orada bir sembolik bağlantının güncellenmesinin / geçersiz kılınmasının mümkün olmadığını. Yani internette çelişkili bilgiler var. Kim haklı? Bir link link güncellenebilir / geçersiz kılınabilirse, bunu nasıl başarabilirim?
"Kim haklıdır" sorunuzu yanıtlamak için tam olarak ne okuduğunuzdan veya nasıl anlaşıldığından emin değilim. Ancak, aşağıdakiler temizlemeye yardımcı olmalıdır:
- Ne güncellenebilir ve
- Uygun anahtarlar kullanmadan ne güncellenemez.
Sembolik bağların, dizin olmayan hedeflerle güncellenmesi.
ln -sf:
-f veya --force varolan hedef dosyaları kaldırır, Bu bir bağlantının hedefini veya hedefini güncellemek için kullanılır.
Örnek:
ln -sf /tmp/test /tmp/test.link; ls -go /tmp |grep test
-rw-r--r-- 1 0 Jun 8 17:19 test
lrwxrwxrwx 1 9 Jun 8 17:27 test.link -> /tmp/test
Ancak, görebileceğiniz gibi, mutlak yollar ln
argümanlardaysa , mutlak yolu verecektir . Mevcut çalışma dizini, bağlantının üst dizinden farklı olduğunda tam yol verilmesi gerekir.
Göreceli Yollar:
ln -sfr:
-r veya --relative, bağlantının konumuna göre sembolik bağlantılar oluşturur.
Örnek:
ln -sfr /tmp/test /tmp/test.link ; ls -go /tmp| grep test
-rw-r--r-- 1 0 Jun 8 17:19 test
lrwxrwxrwx 1 4 Jun 8 17:27 test.link -> test
Ancak, hedef bir dizinse, bir dizine bağlantı güncellemek işe yaramaz.
Örnek:
ln -sf /tmp/testdir /tmp/testdir.link ; ls -go /tmp |grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 7 Jun 8 17:47 testdir.link -> testdir
Gördüğünüz gibi, ln
yukarıdaki argümanında -r seçeneği olmadan verilen mutlak yol adlarını kullanmanıza rağmen , sembolik link hala linke göre.
Dizinlere Bağlantıları Güncelle:
ln -sfrn:
-n veya --no-dereference, bir dizine sembolik bir link ise, LINK_NAME uygulamasını normal bir dosya olarak kabul eder.
Örnek:
ln -sfn /tmp/testdir /tmp/testdir.link; ls -go /tmp| grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 12 Jun 8 17:48 testdir.link -> /tmp/testdir
Şununla karşılaştırıldığı gibi:
ln -sfnr /tmp/testdir /tmp/testdir.link; ls -go /tmp| grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 7 Jun 8 17:48 testdir.link -> testdir
unlink
yerine kullanmanızı öneririmrm
. İleunlink
size yanlışlıkla yanlış anahtarları kullanarak bir kaynak dizindeki tüm dosyaları kaybetmek asla riske.