Gibi bir bağlantınız olduğunda:
link -> foo/bar
ve bunu değiştirmek istiyorum:
link -> new/target
Dikkate alınması gereken iki durum vardır:
foo/bar
bir dizin değil veya mevcut değil veya arama erişiminiz yok foo
. Sonra
ln -s new/target link
link
zaten var olduğundan başarısız olacak , ancak standardı kullanarak bunun üstesinden gelebilirsiniz:
ln -fs new/target link
foo/bar
Bir dizindir (ve arama iznine sahip foo
olduğunu belirlemek için muktedir foo/bar
bir dizindir). Bu durumda ne zaman:
ln -s new/target link
veya
ln -fs new/target link
Bu target
, link
dizinin içinde yeni bir sembolik bağlantı oluşturmak olarak anlaşılır ( link
bir klasördür, çünkü dizinin bir bağlantısıdır foo/bar
). Yani aslında bir tane yaratacaksınız:
foo/bar/target -> new/target
Bunun üstesinden gelmek için GNU ln
, -T
link adının her zaman link adı olarak kabul edilebileceği ve içinde link (ler) yaratacak bir dizin olarak görülmeyeceği bir seçeneğe sahiptir . Öyleyse GNU ile ln
:
ln -fsT new/target link
çalışacak. Daha önce olduğu gibi, orijinal link
sembolik bağı kaldırır ve new/target
hedef olarak yeniden yaratır (ve işlem sahibi ve sahibi olarak abid ve aynen).
GNU’nun ln
da bir -n
seçeneği var. Gerçekte -T
ne zaman link
gerçek bir dizin olduğu gibi çalışır , bu durumda o dizinde bir link oluşturacaktır (bir hatayla başarısız olmak yerine).
Taşınabilir olarak, en iyi seçeneğiniz önce bağlantıyı kaldırmak ve sonra yeniden oluşturmaktır:
rm -f link && ln -s new/target link
Çoğu sistemde, sembolik bağlantılar üzerindeki izinler göz ardı edilir ve genellikle buna sabitlenir rwxrwxrwx
.
Sembolik bağlantı izinlerinin önemli olduğu sistemlerde (hedefini çözebilmek için bir sembolik bağlantı için okuma iznine ihtiyaç duyduğunuz OS / X gibi), genellikle bunları değiştirmenin bir yolu vardır ( chmod -h
OS / X'te).
Mülkiyet, yukarıda olduğu gibi, çoğu sistemde sembolik bağlantıda belirtilen dosyaya erişim ile ilgili olmamakla birlikte, ana dizinin veya kotaların bitiyle başka bir alaka düzeyine sahip olabilir t
... ) ve onu değiştirmek için standart bir komut vardır:
chown -h user[:group] the-link
chgrp -h group the-link