Ana dizinde ~ (tilde) adında bir dosya var


46

Sadece adlı bir dosya bulunduğunu fark ~benim de ~-Dizin.

$ ls -la ~
...
-rw-r-----  1 x1 x1  733962240 Mar  1 17:55 ~
...

Bir fikrin nasıl elimden mvya rmda?


İ-düğümü ile silmeyi deneyin.
— gronostaj

Yanıtlar:


55

Normal yollarla silinemeyen dosyalara gelince, neredeyse nihai çözüm:

ls -il 

İlk sütun, dosyaların inode sayısını gösterir.

find . -inum [inode-number] -exec rm -i {} \;

Bu, doğrulama sonrasında belirtilen inode numaralı dosyayı siler.


Bu çalıştı. Belki de rici'nin çözümü de iyidir, ama denemedim. Çok teşekkürler!
— scrrr

Evet, rici'nin cevabı da iyi. Ve bence daha iyi çünkü daha basit.
— Andrey Regentov

güzel, +1. Kullanmak -deleteyerine cevabınızı değiştirdim -exec, sonra kullandığınızı anladım ki rm -ibu iyi bir fikirdi, ben de geri aldım. Üzgünüm.
— terdon

Endişelenme. Birisi cevaplarımı kendi zamanına layık
— görüyorsa

Bu cevap benim için işe yaramadı. Ubuntu
— 14.04

46

Bu dosyaya ~/~(tırnak işaretleri olmadan) başvurabilmelisiniz çünkü tilde genişlemesi sadece tilde ( ~) sözcüğün en başında uygulanır.


17
ayrıca, klasöre gidip rm ./~de aynı nedenle
— Carlos Campderrós

@ CarlosCampderrós bunu bir cevap haline getirmeyi düşünüyor. ./~Kelimenin tam anlamıyla " ~geçerli dizinde adı verilen bir dosya veya klasör" anlamına geldiğinden , diğer yanıtlara kıyasla "en iyi" ve en basit çözüm olarak kabul ediyorum . Kaçış karakterleri veya inode referansları gibi hack yok.
— ADTC

@ ADTC: Cevabımın savunmasında, kullanmak CWD'nin değiştirilmesini gerektirmez ./~. Beş yıl sonra hafızam biraz bulanık, ancak bu yüzden ~/~normalden çok önermemin sebebi bu ./~: “Özellikle ~[OP's] ana dizinde yer alan bir dosya ”; "geçerli dizinde" değil.
— rici

@ rici Bu mantıklı ve soru bağlamında uygun olacaktır. Ancak, genel cevapları görmeyi severim ya da sorunun özel vakasına daha fazla açıklama yapmadan önce genel olarak konuşuruz. Bu benim savunmam: D
— ADTC

20

Alıntı yap ( rm '~') veya kaçış ( rm \~).


Daima bunlardan biri (örneğin $, örneğin ) veya --dosya adının argüman olarak yorumlanmasını önlemek için ekleyin : rm -- -iadlandırılmış dosyayı kaldırır -i; rm -- *Geçerli dizindeki tüm dosyaları silmek istediğinizde de kullanışlıdır : Yanlışlıkla rm -f *bir dosya böyle adlandırıldığından yanlışlıkla .


Hm, hayır, bu işe yaramadı gibi görünüyor .. Ben tek tırnak, kaçan ve backticks tırnaklar denedim .. o dosyayı almaz. Var olmadığını ya da ev dizini olarak yorumladığını
— söylüyor

@scrrr Kabuğunuz nedir?
— Daniel Beck

bash. Ancak sorun inode yolunu çözdü.
— scrrr

@scrrr Sorununuzu çözdüğüme sevindim, ama şimdi neden bash kaçanlarının sisteminizde benimkiyle aynı şekilde çalışmadığını bilmek istiyorum.
— Isaac Rabinovitch,

1
Dikkatli. --sadece aşağıdaki argümanların parametre olarak yorumlanmasını durdurur - kabuğun *burada olanı genişletmesini (örn. ) gerçekleştirmesini engellemez . (Diğer durumlar için bir alternatif olarak önerdiğini biliyorum, ama bir uyarı iyi olurdu.)
— Bob
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.