“\” Adlı bir dosyayı veya dizini nasıl kaldırabilirim?


20

Bir Ubuntu makinesinde terminal kullanıyorum ve silmek istediğim bir dosya var. Dosyanın adı \(sadece ters eğik çizgi).

Şimdi genellikle yapardım

rm filename

Ancak bunu yaparsam rm \çok satırlı bir komut yazmaya çalıştığımı düşünüyor.

Bu dosyayı nasıl silebilirim? Sadece GUI dosya sistemini kullanabileceğimi biliyorum, ama bu çok verimli değil.

Peki, adlı dosyayı (terminalde) nasıl silebilirim \?


1
Neden böyle bir dosyanız var? ( codeBu yorumda buraya bir blok
koymama

7
Daha eğlenceli doğru hatırlarsam <BEL> adlı bir dosyayı, yani Ctrl-G'yi silmeye çalışıyor. Her şey bir do ls sizin kadar (a) sana klavye bip keşfetti görünmez dosyayı; ve (b) adında yalnızca bir yazdırılamayan karakter içeren bir dosyanın nasıl silineceğini belirledi.
Pieter Geerkens

1
Daha da önemlisi, "/" adlı bir dosyayı nasıl silebilirsiniz?
Curt

1
@Curt fsck. Ciddi anlamda. Adlı bir dosya /varsa, dosya sisteminiz bozuktur.
zwol

2
*Kendim adlı dosyayı her zaman sevdim ...
RBerteig

Yanıtlar:


48

Kullanım rm \\(başka ters eğik çizgi ile ters eğik çizgi kaçış). Bu da adlandırılan dizinler için, perinizi çalıştığını unutmayın \(kullanarak rmdirveya rmbirlikte -rbayrak).

Örnek:

> mkdir demosu
> cd demosu
> \\ 'ya dokunun
> ls -l
toplam 0
-rw ------- 1 hennes kullanıcısı 0 Tem 29 20:25 \
> rm \\
> ls -l
toplam 0

3
Ya da, aynı prensip altında, rm '\'(ama değil rm "\" ).
evilsoup

2
@evilsoup sadece bu konuda bazı ek açıklamalar sağlamak için, \ karakter çift tırnak sınırlandırılmış dizelerde bir kaçış karakteri olarak kullanılır. Diyen rm "\"ikinci tırnak işareti çıkış karakteri ile kullanılır (ve böylece çift tırnak karakteri kendisi gibi ayrıştırılır gibi bir kapanmamış dizesine ayrıştırılır değil bir dize sonu). Böylece, terminal dizeyi başka biriyle bitirene kadar bekleyecektir ". Burada çift tırnak kullanmak için eşdeğer yöntem rm "\\"(doğrudan her ikisine de eşittir rm '\'ve rm \\ daha önce onayladığınız gibi) olacaktır.
Atılım

15

Adlarında garip karakterlere sahip dosyaları el ile silmek için genel bir taktik

rm -i ./*

Bu, dizindeki her dosyanın silinip silinmeyeceğini seçmenizi ister.


3
Ya da bekar tek bir karakterdi. rm -i ./?
Hennes

1
Evet. ./* 'dan daha özel bir glob yazabiliyorsanız, özellikle yıkıcı bir şey yaparken her zaman iyi bir fikirdir.
zwol

4
./
Glob'unuzu

12

Ayrıca bir dosyanın inode'una başvurarak bağlantıyı kaldırabilirsiniz

linus ~/test $ touch \\
linus ~/test $ ls -li
total 0
15204561 -rw-r--r-- 1 pat sudo 0 Jul 29 23:03 \
linus ~/test $ find . -inum 15204561 -exec rm -v {} \;
removed `./\\'
linus ~/test $ ls -li
total 0
linus ~/test $ 

0

Lütfen önce dosyanın inode'unu kontrol edin. ls -li

137791 -rw-rw-r--. 1 svr svr 366 Mar 11 15:57

"\" inode "137791" dir ve daha sonra inode numarasıyla "\" silmek için find komutunu kullanın.

bulmak. -inum 137791 -exec rm -i {} \;

rm: "./ \" normal dosyasını kaldır? Evet

"\" daha sonra kaldırılacak.

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.