@DanDascalescu Karena itu dijawab sepele dengan membaca halaman manual, yang seharusnya menjadi tempat panggilan pertama siapa pun untuk menjawab pertanyaan seperti ini.
David Richerby
9
Cobalah dan lihatlah. (Spoiler: jangan.)
imallett
3
Astaga ! Pertanyaan ini pasti lelucon dari DevRobot! Bagaimana mungkin Anda bisa mencapai level karma Anda tanpa pernah membaca halaman manual. Sekarang ... apakah kamu manusia?!
Cbhihe
2
Benar-benar membaca seperti sebuah lelucon. Seolah-olah seseorang mencoba bertanya, "apakah hujan terbuat dari H2O?" (Jawaban yang bagus adalah: Biasanya ya, tetapi di masa depan, begitu manusia dihancurkan setengah dari flora di Bumi, 50% darinya akan berubah menjadi asam (seperti dalam hujan asam))
syntaxerror
Jawaban:
52
Perintahnya rm -rfsama dengan rm -r -f.
Dari rmhalaman manual (ketikkan man rmterminal untuk melihatnya) -rapakah:
remove directories and their contents recursively
Dan -fapakah:
ignore nonexistent files and arguments, never prompt
Jadi secara kombinasi mereka melakukan keduanya.
Sebenarnya itu adalah perintah yang sangat berbahaya karena secara rekursif akan menghapus semua yang ada dalam direktori yang Anda pilih (atau hanya menghapus file yang Anda pilih), dan itu akan melakukannya tanpa pernah meminta Anda.
@ Paul, apa yang akan dilakukan slash? Saya menggunakan perintah ini untuk menghapus dirs sering dan tanpa slash.
Octopus
1
@Octopus, slash dengan sendirinya menunjukkan direktori root. rm -rf /secara teoritis akan menghapus setiap file di komputer Anda yang berada di direktori tempat Anda memiliki izin menulis. Jika Anda root, itu berarti memusnahkan seluruh sistem. (Dalam praktiknya, itu tidak berhasil karena GNU rmmemiliki kasus khusus yang menolak untuk mengizinkan rm -r /kecuali Anda juga mengatakan --no-preserve-root.)
cjm
10
Semua sama, saya tidak menyarankan mencoba rm -rf /untuk melihat apakah itu tertangkap dengan benar.
cjm
2
@ mattburnett Ini berbahaya di VM juga: Anda mungkin memiliki mount yang tidak lokal ke VM. Secara khusus, saya percaya itu cukup umum untuk me-mount salah satu direktori mesin host pada VM untuk berbagi file antara host dan VM.
hvd
1
@ Mattburnett Saya punya VM. Saya tidak memiliki VM yang dikarantina. Saya hanya tidak menjalankan executable yang tidak diketahui. :)
hvd
22
Selain jawaban yang benar sebelumnya, saya ingin mengajari Anda cara memancing:
Ketika Anda tidak yakin tentang bagaimana perintah bekerja, opsi apa yang dimiliki dan apa fungsinya, buka terminal dan ketik
man <command>
Sebagai contoh:
man rm
Setelah di sana, Anda dapat mencari opsi. Halaman manual bisa sangat panjang untuk dibaca, jadi pada tipe terminal:
/<pattern>
Jadi misalnya, melakukan:
/-f
Anda dapat dengan mudah mendarat ke:
-f, --force
ignore nonexistent files and arguments, never prompt
Untuk -r lakukan:
-r, -R, --recursive
remove directories and their contents recursively
Anda dapat berpindah di antara hasil pencarian menggunakan n(berikutnya) dan N(sebelumnya).
Bonus:
Jika Anda perlu melakukan sesuatu, tetapi Anda tidak tahu nama perintahnya, gunakan aproposuntuk mencari di halaman manual:
rmkependekan dari remove. The rbendera ke direktori menghapus dan isinya secara rekursif dan fkekuatan berarti, dan itu menimpa setiap prompt konfirmasi.
Sebenarnya r flag is to remove directories tidak benar..itu menghapus direktori beserta isinya, itu adalah operasi berulang .. menurut kata-kata Anda, itu hanya akan menghapus direktori, bagaimana dengan subdir, file di bawahnya? karena entri direktori hanya berisi pemetaan nama-inode, ini hanya tidak masuk akal ..
heemayl
Anda benar, saya akan mengedit jawaban saya.
Chris
1
-r menghapus direktori dan isinya secara rekursif.
Jim Balter
3
Seperti yang telah disebutkan, rm -rf <ARG>dimaksudkan untuk secara paksa menghapus file secara rekursif, di mana <ARG>direktori (meskipun itu bisa menjadi file dengan baik).
Inti dari -r(penghapusan rekursif) adalah bahwa rmtidak dapat menghapus direktori jika tidak kosong, hanya karena panggilan sistem yang mendasarinya yang rmmenggunakan ( membatalkan tautan ) hanya beroperasi pada direktori kosong. Jadi, apa yang -rdilakukan flag, adalah pencarian mendalam-pertama turun ke direktori dan menghapus file terlebih dahulu, dan hanya saat direktori kosong - itu akan menghapusnya. Efek yang sama ini dicapai melalui findperintah dengan -deleteflag (ketika Anda tidak menentukan pemfilteran oleh -type, tapi itu cerita lain).
Adapun -f, ia melakukan dua hal - satu mencegah meminta apakah Anda ingin menghapus file atau tidak (seperti ketika Anda menghapus file yang dimiliki oleh pengguna lain dari dalam direktori Anda, itu tidak akan menampilkan rm: remove write-protected regular empty file 'f1'?konfirmasi konfirmasi), dan mengabaikan file tidak ada. Jadi misalnya, dengan nama file yang tidak ada, Anda harus mendapatkan rm: cannot remove 'nonexistent': No such file or directorykesalahan.
Jawaban:
Perintahnya
rm -rf
sama denganrm -r -f
.Dari
rm
halaman manual (ketikkanman rm
terminal untuk melihatnya)-r
apakah:Dan
-f
apakah:Jadi secara kombinasi mereka melakukan keduanya.
Sebenarnya itu adalah perintah yang sangat berbahaya karena secara rekursif akan menghapus semua yang ada dalam direktori yang Anda pilih (atau hanya menghapus file yang Anda pilih), dan itu akan melakukannya tanpa pernah meminta Anda.
Silakan gunakan perintah ini dengan hati-hati!
sumber
rm -rf /
secara teoritis akan menghapus setiap file di komputer Anda yang berada di direktori tempat Anda memiliki izin menulis. Jika Anda root, itu berarti memusnahkan seluruh sistem. (Dalam praktiknya, itu tidak berhasil karena GNUrm
memiliki kasus khusus yang menolak untuk mengizinkanrm -r /
kecuali Anda juga mengatakan--no-preserve-root
.)rm -rf /
untuk melihat apakah itu tertangkap dengan benar.Selain jawaban yang benar sebelumnya, saya ingin mengajari Anda cara memancing:
Ketika Anda tidak yakin tentang bagaimana perintah bekerja, opsi apa yang dimiliki dan apa fungsinya, buka terminal dan ketik
Sebagai contoh:
Setelah di sana, Anda dapat mencari opsi. Halaman manual bisa sangat panjang untuk dibaca, jadi pada tipe terminal:
Jadi misalnya, melakukan:
Anda dapat dengan mudah mendarat ke:
Untuk -r lakukan:
Anda dapat berpindah di antara hasil pencarian menggunakan
Bonus:n
(berikutnya) danN
(sebelumnya).Jika Anda perlu melakukan sesuatu, tetapi Anda tidak tahu nama perintahnya, gunakan
apropos
untuk mencari di halaman manual:Sebagai contoh:
sumber
rm
kependekan dari remove. Ther
bendera ke direktori menghapus dan isinya secara rekursif danf
kekuatan berarti, dan itu menimpa setiap prompt konfirmasi.sumber
r flag is to remove directories
tidak benar..itu menghapus direktori beserta isinya, itu adalah operasi berulang .. menurut kata-kata Anda, itu hanya akan menghapus direktori, bagaimana dengan subdir, file di bawahnya? karena entri direktori hanya berisi pemetaan nama-inode, ini hanya tidak masuk akal ..Seperti yang telah disebutkan,
rm -rf <ARG>
dimaksudkan untuk secara paksa menghapus file secara rekursif, di mana<ARG>
direktori (meskipun itu bisa menjadi file dengan baik).Inti dari
-r
(penghapusan rekursif) adalah bahwarm
tidak dapat menghapus direktori jika tidak kosong, hanya karena panggilan sistem yang mendasarinya yangrm
menggunakan ( membatalkan tautan ) hanya beroperasi pada direktori kosong. Jadi, apa yang-r
dilakukan flag, adalah pencarian mendalam-pertama turun ke direktori dan menghapus file terlebih dahulu, dan hanya saat direktori kosong - itu akan menghapusnya. Efek yang sama ini dicapai melaluifind
perintah dengan-delete
flag (ketika Anda tidak menentukan pemfilteran oleh-type
, tapi itu cerita lain).Adapun
-f
, ia melakukan dua hal - satu mencegah meminta apakah Anda ingin menghapus file atau tidak (seperti ketika Anda menghapus file yang dimiliki oleh pengguna lain dari dalam direktori Anda, itu tidak akan menampilkanrm: remove write-protected regular empty file 'f1'?
konfirmasi konfirmasi), dan mengabaikan file tidak ada. Jadi misalnya, dengan nama file yang tidak ada, Anda harus mendapatkanrm: cannot remove 'nonexistent': No such file or directory
kesalahan.Lihat juga:
sumber