Perbedaan antara rmdir dan rm -r

9

Saya biasanya menghapus direktori dengan menggunakan rm :

rm -r myDir

Namun saya mengetahui perintah lain, rmdir , yang sepertinya melakukan pekerjaan dengan baik:

rmdir myDir

Apa perbedaan antara kedua perintah ini dan kapan masing-masing harus digunakan?

Joe
sumber
2
Apakah rmdir Anda berfungsi jika ada file di subdirektori?
Jeff Schaller
1
Lihat juga panggilan sistem eponymous rmdir(2)yang hanya dapat menghapus direktori kosong.
David Foerster
4
Omong-omong, ada prosedur "benar" untuk menggunakan rm -r: (1) Ketik perintah, tetapi jangan masukkan (2) Angkat tangan Anda dari keyboard (3) Hitung hingga lima (4) Tekan ENTER. Saya sudah mulai melakukan sesuatu seperti ini dengan semua perintah berbahaya, untuk memberi saya kesempatan untuk melihat apa yang saya lakukan, pastikan saya mengetik semuanya dengan benar, memikirkan apakah ada konsekuensi yang tidak terduga, dll. Kadang-kadang ini menuntun saya untuk menghapus perintah saya dan melakukan beberapa pemeriksaan tambahan terlebih dahulu, misalnya.
ajb
3
@ajb rm -rf ~ /*- bersihkan direktori home saya. Atau tunggu, mungkin bersihkan sistem. Selalu baik untuk memeriksa ulang;).
Tom Carpenter
1
@ajb Perhatikan itu rmdirdan rm -rdua
utas

Jawaban:

14

rm -rmenghapus direktori dan semua isinya; rmdirhanya akan menghapus direktori jika direktori kosong. Saya suka menggunakan yang berikut ini untuk menghapus direktori dan semua isinya:

rm -rf <directory_to_be_removed>
Scott Kayser
sumber
17
Perhatikan, bahwa Anda biasanya tidak boleh menggunakannya -fjika tidak perlu. Ini berguna untuk digunakan -rfsetiap saat, tetapi menonaktifkan (hampir) semua pemeriksaan keamanan.
allo
5
-1 untuk rekomendasi yang tidak tepat dari -fbendera rm yang dapat memiliki konsekuensi yang tidak terduga dan tidak dapat dikembalikan
cat
Jadi rmdiradil rm -d?
Stan Strum
@StanStrum -dbukan pilihan standar untuk rm.
Kusalananda
@ kucing rmPerintah secara umum mungkin memiliki konsekuensi ini. The -fbendera berguna ketika berjalan di bawah set -edalam naskah. Saya setuju bahwa menggunakan tanpa berpikir tidak perlu .
Kusalananda
1

Anda harus menggunakan rm -rketika ingin menghapus direktori dan semua isinya secara rekursif, atau ketika target mungkin direktori atau file dan Anda ingin menghapusnya terlepas dari apa itu.

Anda harus menggunakan rmdirketika ingin menghapus direktori kosong.

The rmdirPerintah ini berguna karena menolak untuk menghapus direktori yang tidak kosong dan file. Ini berfungsi sebagai tangkapan keamanan dalam situasi di mana Anda mungkin ingin benar-benar yakin bahwa apa yang Anda hapus adalah direktori dan bahwa direktori tersebut kosong sebelum menghapusnya (misalnya dalam skrip) dan ingin memperlakukannya sebagai kondisi kesalahan jika tidak.

Kusalananda
sumber