Bağlantının kendisini silmeden sembolik bağlantının hedefini nasıl silebilirim?


10

Ben sembolik bir bağlantı var ~/Desktop/test.txtişaret ~/rendu/test.txt.

SADECE yolunu biliyorum , sembolik bağı silmeden ~/Desktop/test.txthızlı bir şekilde silmek istiyorum ~/rendu/test.txt.

Nedenini bilmek isteyenler için: crypted.xxxMasaüstümde şifrelenmiş ve şifremi içeren bir dosyam var.

Şifrelenmiş dosyamı güncellemek istediğimde, şifresini çözdüm ve crypted.txtözel bir dizinde oluşturur. Bu yüzden pratik nedenlerden ötürü masaüstümdeki bu dosyaya bir bağlantı yapıyorum. Ama bana baktıktan sonra crypted.txt, bunu hızlı bir şekilde silmek istiyorum crypted.txt(ancak masaüstündeki bağlantıyı değil).


4
bekleyin, dosyayı silmek istediğinizde (sorunuzun önerdiği gibi) veya dosyanın içeriğini silmek (başlık sais olarak)
Jacob Vlijm

Dosyayı silin ve yanlış anladığınız için üzgünüm, sembolik bağlantıyı
koruyun

2
Bunun yerine özel bir şifre yöneticisi kullanmayı düşünebilirsiniz. Örneğin Keepass oldukça iyi ve depolarda.
evilsoup

Yanıtlar:


11

findişaretini bulmak için tuşunu kullanın ve ardından readlinkhedefin tam yolunu bulmak için tuşlarını kullanın rm:

find ~/Desktop/ -type l -name 'test.txt' -exec bash -c 'rm "$(readlink -f "$1")"' _ {} \;

Veya bağlantı adını zaten bildiğiniz gibi:

rm "$(readlink -f ~/Desktop/test.txt)"

4
Ancak göreli bağlantılara dikkat edin. Göreli bir sembolik bağlantı, bulunduğu dizine göre yorumlanır. Ancak rmkomutunuz onu kabuğun geçerli dizinine göre yorumlar. Bu nedenle, bu komutun sembolik bağlantının işaret ettiğinden farklı bir dosyayı silme olasılığı vardır.
kasperd

5
@kasperd ile -f -eveya -mtam yol döndürülür, hedef işaret bağlantısı göreceli bir yolu işaret etse bile, evet, bu veya için rm "$(readlink ~/Desktop/test.txt)"kullanıldığında endişe vericidir . -f -e-m
Kos

@kos Haklısın. Bu durumda, sadece herhangi bir yarış koşulu olabilirse endişelenmeniz gerekir.
kasperd

Alternatif olarak, bu durumda aynı şeyi yapan realpath kullanılabilir readlink -f(ancak hedefin kendisi bir bağlantı değilse de çalışır).
leftaroundabout

6

Basitçe kullanın:

printf "" > "$(readlink '/path/to/link')"

için temizlemek dosyası veya

rm "$(readlink '/path/to/link')"

için kaldırmak dosyayı.

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.