OS X'te bir sembolik bağlantı nasıl değiştirilir?


21

Bir sembolik bağın işaret ettiği yeri silmeden ve yeni bir tane oluşturmadan (ile ln -s "/path/to/point/to" "/path/where/symlink/is") nasıl değiştirebilirim?

Bunu Java'nın "Geçerli" symlinkine yapmaya çalıştığımda, Java bile çalışmaz (en azından komut satırından, 'Segmentasyon Hatası' dedi) ama Time ile eski "Current" işaretini geri yüklediğimde normale döndü Makine (ama daha sonra /Applications/Utilities/Java Preferences.appmevcut java sürümünü değiştirmek için yine de kullanmalıyım öğrendim ).

Yanıtlar:


8
mkdir /path/where/newsymlink
ln -s /path/to/point/to /path/where/newsymlink/is
mv /path/where/newsymlink/is /path/where/symlink/
rmdir /path/where/newsymlink

Ancak, Java Tercihleri ​​yardımcı programı yalnızca sembolik bir bağlantıdan daha fazlasını değiştirir; Java sürümünün değiştirildiğinden emin olmak için bunu kullanmalısınız.


mv komutu sadece yeniden adlandırmak olmaz ..?
mk12

.. Bunu denedim, yeni symlink'i eskisinin işaret ettiği klasöre taşır.
mk12

İlk komut, istediğiniz yeri gösteren symlink'i yapar ve ikinci komut, mevcut işaretçiyi eski yere, işaretçiyi yeni yere değiştirir. MV atomiktir, bu yüzden sembolik işaret her zaman mevcut olacaktır.
mark4o

.. Ama yine de çalışmıyor .. yeni işaretçiyi eskisinin işaret ettiği klasöre taşır.
mk12

/path/where/symlink/isdeğiştirdiğiniz sembolik bağlantıdır. Bu komutları kullanmak, onu işaret edecek şekilde değiştirecektir /path/to/point/to. Orijinal bağlantının işaret ettiği klasöre hiç dokunulmaz.
mark4o

30
ln -hfs newlocation existinglink

veya

ln -nfs newlocation existinglink

mevcut bağlantıyı yeniden konumlandırmaya yönlendirecek

(-n ve -h işlem sırasında aynıdır)

'Man ln'den

-h target_file veya target_dir sembolik bir bağsa, onu takip etmeyin. Bu, bir dizine işaret edebilecek bir sembolik bağın yerini almak için -f seçeneğiyle en kullanışlıdır.

-f Hedef dosya zaten varsa, bağlantının oluşabilmesi için bağlantısını kaldırın. (-F seçeneği, önceki -i seçeneklerini geçersiz kılar.)

-s Sembolik bir bağlantı oluştur


-nfsVersiyon Linux üzerinde de çalışır, bu yüzden kimse umurunda eğer daha taşınabilir.
Cromax

10

Deneyin:

unlink /path/to/current/link
ln -s /path/to/target /path/to/symbolic/link

1
Mavericks'le 2013 MacBook
Pro'mda

1

Ln komutu bağlantıları değiştirmenize izin vermez, yalnızca yenilerini oluşturur.


0

Bağlantıyı değiştirmeden önce ve sonra bağlantılardaki ve hedeflerdeki izinleri karşılaştırdınız mı? Çalışması için sadece uygun chown ve chmod komutlarını takip etmeniz gerekebilir.


Nasıl değiştireceğimi bile bilmiyorum, hayır. Ve chown ve chmod'un ne yaptığını bilmiyorum.
mk12

2
chown bir dosyanın ve / veya dizinin sahipliğini değiştirir. chmod bir dosya ve / veya dizinin izinlerini değiştirir. Bunlar hemen hemen her unix platformunda standarttır. Burada her birini açıklamak için çok fazla ayrıntı, bu yüzden öğreticiler için her googling öneriyoruz. Komutun gerçek kılavuzunu okumak için "man chown" veya "man chmod" da yapabilirsiniz (kılavuzdan çıkmak için q tuşuna basın).
churnd
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.