Rm -rf ne yapar?


25

Ne gelmez rm -rfkaldır dosyaları veya dizinleri kullanıldığında mı?

-rVe -fseçenekleri birlikte nasıl çalışır?



16
@DanDascalescu Çünkü böyle bir soruyu cevaplamak için herhangi birisinin ilk uğrak yeri olması gereken man sayfasını okuyarak önemsizce cevaplandırılmıştır.
David Richerby

9
Deneyin ve görün. (Spoiler: yapma.)
imallett

3
Allah Allah tarafından ! Bu soru DevRobot'tan bir şaka olmalı! Man sayfalarına danışmadan bunu karma seviyene nasıl getirebilirsin? Şimdi ... sen insan mısın?
Cbhihe

2
Gerçekten de bir şaka gibi okur. Birisi sormaya çalıştığı gibi, "Yağmur H2O 'dan mı geliyor?" (İyi bir cevap şöyle olurdu: Normalde evet, ama gelecekte, insan bir kez Dünya'nın bitki örtüsünün yarısını
yıkacaksa

Yanıtlar:


52

Komut rm -rfaynıdır rm -r -f.

Gönderen rmbireyin adam sayfası (tip man rmbir terminal olarak görmek için) -ryapar:

remove directories and their contents recursively

Ve -fyapar:

ignore nonexistent files and arguments, never prompt

Yani kombinasyon halinde ikisini de yapıyorlar.

Aslında bu çok tehlikeli bir komuttur, çünkü seçtiğiniz dizindeki her şeyi tekrar tekrar kaldırır (veya seçtiğiniz dosyayı kaldırır) ve bunu sizden istemeden yapar.

Lütfen bu komutu dikkatli kullanın!


@ Paul, eğik çizgi ne yapar? Bu komutu sık sık kirleri çıkarmak ve eğik çizgi kullanmak için kullanıyorum.
Ahtapot

1
@Octopus, tek başına eğik çizgi kök dizinini gösterir. rm -rf /Teorik olarak, bilgisayarınızda yazma izni olan bir dizinde bulunan her dosyayı silecektir. Kökseniz, tüm sistemi yok etmek demektir. (Uygulamada, işe yaramadı çünkü GNU rm, rm -r /siz de söylemediğiniz sürece izin vermeyi reddeden özel bir davaya sahip --no-preserve-root.)
cjm

10
Yine de, rm -rf /düzgün şekilde yakalanıp yakalanmadığını görmeyi denemeyi önermiyorum .
cjm

2
@ mattburnett Bir VM'de de tehlikelidir: VM'de yerel olmayan bağlarınız olabilir. Özellikle, ana makine ile VM arasında dosya paylaşmak için ana makinenin dizinlerinden birini VM'ye yerleştirmenin oldukça yaygın olduğuna inanıyorum.
HVD

1
@ mattburnett Benim VM var. Karantinaya alınmış bir VM'm yok. Sadece bilinmeyen dosyaları çalıştırmam. :)
HVD

22

Önceki doğru cevaba ek olarak, nasıl balık tutulacağını öğretmek isterim:

Bir komutun nasıl çalıştığından, hangi seçeneklerden ve ne yaptığından emin değilseniz, bir terminal açın ve yazın

man <command>

Örneğin:

man rm

İçeri girdikten sonra, seçeneği arayabilirsiniz. Bir man sayfasının okunması çok uzun olabilir, bu yüzden terminal türünde:

/<pattern>

Örneğin, yapıyor:

/-f

Kolayca iniş yapabilirsiniz:

-f, --force
              ignore nonexistent files and arguments, never prompt

-R için:

-r, -R, --recursive
              remove directories and their contents recursively

n(Sonraki) ve N(önceki) düğmelerini kullanarak arama sonuçları arasında geçiş yapabilirsiniz .

Bonus:

Bir şey yapmanız gerekiyor ancak komut adını bilmiyorsanız, aproposman sayfalarında arama yapmak için kullanın :

apropos <pattern>

Örneğin:

apropos directory listing

8

rmkaldırmak için kısa. rBayrak kaldırma dizinleri ve bunların içerikleri ardışık ve etmektir faraçlar kuvvet ve herhangi onay istemlerini geçersiz kılar.


3
Kesinlikle konuşma r flag is to remove directories doğru değil ... dizinleri içeriğiyle birlikte kaldırır, yinelemeli bir işlemdir ... kelimelerinize göre, sadece dizinleri kaldırır, peki alt dizinler, altındaki dosyalar? dizin girdisi adı-inode eşleştirmesini içerdiğinden sadece bu ancak herhangi bir anlam ifade etmez ..
heemayl

Haklısın, cevabımı düzenleyeceğim.
Chris

1
-r dizinleri ve içeriklerini tekrar tekrar kaldırır .
Jim Balter

3

Daha önce de belirtildiği gibi, rm -rf <ARG>dosyaları tekrarlı bir şekilde zorla kaldırmak <ARG>, bir dizin ise (sadece iyi bir dosya olsa da) anlatılmak içindir.

-r(Özyinelemeli kaldırma) bütün mesele, rmeğer boş değillerse, dizinleri kaldıramazlar, çünkü sadece temel dizini rmkullanan ( unlink ) sistem çağrısı sadece boş dizinlerde çalışır. Böylece, -rbayrak ne yapar, derinlik ilk arama dizin içine inen ve ilk önce dosyaları kaldırma, ancak daha sonra dizin boş olduğunda - onu kaldıracaktır. Bu aynı etkiye bayrakla yapılan findkomutla ulaşılır -delete(filtrelemeyi siz belirlemediğinizde -type, ancak bu başka bir hikaye).

Gelince -f, iki şey yapar - biri dosyayı silmek isteyip istemediğinizi sormaz (örneğin, başka bir kullanıcının sahip olduğu bir dosyayı dizininizden kaldırırken, rm: remove write-protected regular empty file 'f1'?onay istemi göstermez ) ve yok sayar. var olmayan dosyalar. Mesela, var olmayan bir dosya adıyla, rm: cannot remove 'nonexistent': No such file or directoryhata almalısınız .

Ayrıca bakınız:

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.