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.