Bir dizine olan sembolik bağlantıyı kaldırma

Önemli bir dizine sembolik bir bağlantım var. Dizini arkasında tutarken bu sembolik bağlantıdan kurtulmak istiyorum.

rmdenedim verm: cannot remove 'foo'yanıtını aldım. rmdir'i denedim vermdir: failed to remove 'foo' yanıtını aldım: Dizin boş değil Daha sonrarm -f,rm -rfvesudo rm -rf` ile ilerledim.

Sonra yedeklerimi bulmaya gittim.

Bebeği banyo suyuyla birlikte atmadan sembolik bağlantıdan kurtulmanın bir yolu var mı?

Çözüm
# this works
rm foo
# versus
rm foo/

Temel olarak, bir dizini silmesini değil, bir dosyayı silmesini söylemeniz gerekir. Sanırım rm ve rmdir arasındaki fark, C kütüphanesinin her birini ele alış biçimindeki farklılıklardan kaynaklanıyor.

Her halükarda, ilki çalışmalı, ikincisi ise foo'nun bir dizin olmasından şikayet etmelidir.

Yukarıdaki gibi çalışmazsa, izinlerinizi kontrol edin. Dosyaları kaldırmak için içeren dizine yazma iznine ihtiyacınız vardır.

Yorumlar (11)

"unlink" komutunu kullanın ve sonunda / olmadığından **emin olun

$ unlink mySymLink

unlink() bir ismi dosya sisteminden siler. Bu isim bir dosyanın son bağlantısıysa ve dosya hiçbir işlemde açık değilse, dosya silinir ve kullandığı alan yeniden kullanıma hazır hale getirilir. İsim bir dosyanın son bağlantısıysa, ancak herhangi bir işlem dosyayı hala açık tutuyorsa, dosya, ona atıfta bulunan son dosya tanımlayıcısı kapatılana kadar varlığını sürdürecektir.

Eğer doğru okuyorsam bunun sorunlu olabileceğini düşünüyorum.

Eğer isim sembolik bir bağlantıya atıfta bulunuyorsa bağlantı kaldırılır.

Eğer isim bir soket, fifo veya aygıta atıfta bulunuyorsa, bu isim kaldırılır ancak nesneyi açık tutan süreçler onu kullanmaya devam edebilir.

https://linux.die.net/man/2/unlink

Yorumlar (11)

Eğer rm bir sembolik bağlantıyı kaldıramıyorsa, belki de sembolik bağlantıyı içeren dizindeki izinlere bakmanız gerekir. Dizin girdilerini kaldırmak için, içeren dizinde yazma iznine ihtiyacınız vardır.

Yorumlar (0)