Sadece 'rm -rf' herhangi bir dosyayı siler mi?


16

Geçenlerde kaçtım rm -rf, rm -rf /ama hiçbir şey olmadı. Sadece böyle bir sonuç alıyorum:

terminal

Korktum çünkü bazı dosyaları silebileceğinden endişelendim, ama olmadı. Bunun dizinimdeki herhangi bir dosyayı sildiğinden emin olabilir misiniz?


36
Emin değilseniz (yaklaşık% 100) bir komut çalıştırmayın.
Güneş Mike

5
Asla anlamadığınız komutları yazmayın. Tek ihtiyacın olan bir. ya da a / ve bir sürü şeyi sileceksiniz.
Nelson

18
Potansiyel olarak tehlikeli komutları denemek istiyorsanız, bir sanal makine kurmayı düşünün.
musicman523

6
İstediğiniz her şeyi deneyin (verileriniz güvenli bir şekilde yedeklendiği sürece). Bu sadece yazılımdır ve bir şeyler ters giderse her zaman yeniden yükleyebilirsiniz. Kimsenin sizi bilgisayardan korkmak için eğitmesine izin vermeyin.
ocaklar

3
% 100 emin değilseniz kesinlikle bir komut çalıştırın. Öğrenmenin çok fazla yolu var ve aslında onları çalıştırmak bunlardan biri. Dikkatli olun emptor ve yedekleri, tabii ki, ve VM'leri ve tüm bunları kullanın. Ancak korkusuzca bir şey yapmamak, büyümenize yardımcı olmak için çok az şey yapacaktır. Ne zaman ekstra dikkatli olacağınız açık olmalıdır (yani, rmdiğer birçok komut için, örneğin tüm boru tabanlı metin düzenleme komutları için, bunları sık sık denemek, yapabileceğiniz en kolay / basittir. Birlikte adam sayfasını inceleyerek.
AnoE

Yanıtlar:


49

Hayır, rm -rfkomut için bağımsız değişken sağlamadığınız için hiçbir dosyayı silmez.


5
Ve -fhiçbir argüman olmadan çalıştırmak için bir hata değil. rm -r"eksik işlenen" ten şikayetçi olur, ancak bunu -fbastırır ve var olmayan dosyalar için hataları bastırır. (Örneğin, bir komut dosyası rm -rf /foo/bar/*, 2>/dev/nullhataları ezmek zorunda kalmadan zaten boş olabilecek bir dizini boşaltmak için kullanılabilir .)
Peter Cordes

34

Gönderen manuel sayfa :

rm belirtilen her dosyayı kaldırır.

Bu, bir dosya listesini aynı anda kaldırmak için kullanabileceğiniz anlamına gelir;

rm -rf test1.txt test2.txt

Neyse ki, yaptığınız tek şey boş bir dosya listesini geçmekti , bu yüzden hiçbir şey silmedi. Ayrıca, @SolarMike ne diyor : bir komutun ne yaptığını bilmiyorsanız, çalıştırmayın . macOS, son kullanıcıdan tüm tehlikeli (ancak potansiyel olarak güçlü) Unix işlemlerini 'gizlemek' için tasarlanmıştır.


7
FYI, -rdizinleri yinelemeli olarak silmediğiniz sürece bayrak gereksizdir. Sadece dosyalarsa, rmyeterlidir - -fzorlamak için her dosya için "emin misiniz" diye sormaz.
Tim

9
Ayrıca, -f yanlış kullandığınızda kullanım iletisinin görüntülenmemesine yol açar. Bu yüzden OP çalıştığında hiç çıktı yoktu rm -rf. Belirtilen dosyalar / dizinler olmadan 'rm -r' çalıştırsaydılar, bu kullanım mesajını JanNash ~ $ usage: rm [-f | -i] [-dPRrvW] file ... unlink file
Jan Nash

2
@barrycarter Bu tamamen doğru değil - yine de silmeye çalışacak /, sadece varolmayan dosyayı atlayacak xyz*(bir eşleşme olmaması nedeniyle genişlemeyecek).
kabarık

3
@barrycarter Bu davranış, kabuğunuzun globbing yapılandırmasına bağlıdır. En azından bash'ın macOS'ta varsayılanı, aslında belirtmeden bile siler ave bbenim için yapar -f. echo rm -f a b c*Gerçek komutları görmek için aynı komutları kullanın.
kabarık

2
@barrycarter ve fluffy: Ne olacağı, shell değişken nonomatch'ın ayarlanıp ayarlanmadığına bağlıdır .
Thomas Padron-McCarthy

13

Layman / Linux / Unix newbie için:

rm tek başına hiçbir şey yapmaz çünkü ondan ne kurtulacağını söylemedin.

man rm anlarsanız, bunların çoğunu açıklayabilir.

-r "alt klasörlere her şeyi dahil et" bölümünde olduğu gibi, özyinelemeli anlamına gelir

-f "onaylamamı istemeyin" modu

rm -rf(BU YAPMAYIN) kontrol etmeden (kök klasör) /altındaki her şeyi sil /(son macOS sürümlerinde SIP, bu şekilde macOS'u kaldırmanızı engelleyecektir, ancak diğer birçok şey silinecektir)

rm [some file name] sadece o dosyayı siler.

rm -rf /home/myuser/booksher şeyi silmek istiyorsunuz myuserbireyin booksklasörün yanı sıra klasörü.


6
Günümüzde rm -rf / --no-preserve-rootbacağınızı doğru şekilde vurmak için yapmanız gerekiyor .
Gallifreyan

1
@Gallifreyan Bacağınızı doğru şekilde vurmanın bir yolu var mı?
PascalVKooten

1
Bunun iyi çalıştığı söyleniyor. Başka hiçbir şey bilmiyorum :)
Gallifreyan

1
MacOS'ta @Gallifreyan? pastebin.com/aVAsNcKC aksini gösteriyor
nohillside

@Gallifreyan: find / -delete"çalışmalı" (yani aslında bir şeyleri silmeli, çalıştırmayınız.)
Peter Cordes

4

Hayır, ancak silmek istiyorsanız İşte bir örnek:

Terminal'i başlattıktan sonra (/ Applications / Utilities klasörünüzde) Masaüstü dizinine gitmek için cd ~ / Desktop yazın. Burada, bir daha asla görmek istemediğiniz MyFile.rtf adlı bir dosyanız varsa, şu komutu çalıştırabilirsiniz:

rm MyFile.rtf

Return tuşuna bastığınızda, dosya puf haline gelecektir! Gitmiş olacak, kızarmış ekmek, tarih. Geri alamazsınız.


Aslında rm dosyanın tüm referansını kaldırır, belgeleri doğru anlıyorsam her baytın üzerine yazarak dosyanın sabit diskini fırçalamaz.
NoBugs

@NoBugs Ama adalet içinde, tüm modern 'siler' bu şekilde çalışır, Windows dahil. Silme özelliği her baytın üzerine yazılıyorsa, bu şekilde ilan edilir (esas olarak daha uzun sürdüğü ve çoğu zaman gereksiz olduğu için).
Deli
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.