Apakah hanya 'rm -rf' menghapus file apa pun?


16

Baru-baru ini saya berlari rm -rf, tidak rm -rf /, tetapi tidak ada yang terjadi. Saya hanya mendapatkan hasil seperti ini:

Terminal

Saya takut karena saya khawatir itu bisa menghapus beberapa file, tetapi tidak. Pastikan saja, dapatkah ini menghapus file dari direktori saya?


36
Jika Anda tidak yakin (pasti 100%) maka jangan jalankan perintah.
Solar Mike

5
Jangan pernah mengetik perintah yang tidak Anda mengerti. Yang Anda butuhkan adalah a. atau / dan Anda akan menghapus BANYAK hal.
Nelson

18
Jika Anda ingin bereksperimen dengan perintah yang berpotensi berbahaya, pertimbangkan untuk menginstal mesin virtual.
musicman523

6
Eksperimen semua yang Anda inginkan (selama data Anda dicadangkan dengan aman). Ini hanya perangkat lunak dan Anda selalu dapat menginstal ulang jika terjadi kesalahan. Jangan biarkan siapa pun melatih Anda untuk takut pada komputer.
hobbs

3
Benar-benar menjalankan perintah jika Anda tidak yakin 100%. Hanya ada begitu banyak cara untuk belajar, dan sebenarnya menjalankannya adalah salah satunya. Caveat emptor dan memiliki cadangan, jelas, dan memang menggunakan VM dan semua itu. Tetapi tidak kehabisan sesuatu karena rasa takut tidak akan banyak membantu Anda tumbuh. Seharusnya jelas ketika harus ekstra hati-hati (yaitu, rm), tetapi untuk banyak / sebagian besar perintah lainnya, misalnya semua perintah manipulasi teks berbasis pipa, hanya sering mencoba itu adalah yang termudah / paling sederhana yang dapat Anda lakukan. Bersama dengan mempelajari halaman manual, jelas.
AnoE

Jawaban:


49

Tidak, rm -rftidak akan menghapus file apa pun karena Anda tidak memberikan argumen pada perintah.


5
Dan karena -f, itu bukan kesalahan untuk menjalankannya tanpa argumen. rm -rakan mengeluh tentang "operan yang hilang", tetapi -fmenekan itu, dan juga menekan kesalahan untuk file yang tidak ada. (Jadi misalnya skrip dapat digunakan rm -rf /foo/bar/*untuk mengosongkan direktori yang mungkin sudah kosong, tanpa harus 2>/dev/nullmenghapus kesalahan.)
Peter Cordes

34

Dari halaman manual :

rm menghapus setiap file yang ditentukan.

Ini berarti Anda dapat menggunakannya untuk menghapus daftar file sekaligus, misalnya dengan

rm -rf test1.txt test2.txt

Untungnya, yang Anda lakukan hanyalah memberikan daftar file kosong , sehingga tidak menghapus apa pun. Juga, apa yang dikatakan @SolarMike : jika Anda tidak tahu apa yang dilakukan perintah, jangan jalankan . macOS dirancang untuk 'menyembunyikan' semua operasi Unix yang berbahaya (tetapi berpotensi kuat) dari pengguna akhir.


7
FYI -rflag tidak diperlukan kecuali Anda menghapus direktori secara rekursif. Jika itu hanya file, rmsudah cukup - -funtuk memaksa jangan meminta Anda "apakah Anda yakin" untuk setiap file.
Tim S.

9
Juga, -f mengarah ke pesan penggunaan yang tidak ditampilkan ketika Anda menggunakannya dengan salah. Inilah sebabnya mengapa tidak ada output sama sekali ketika OP berjalan rm -rf. Jika mereka menjalankan 'rm -r' tanpa file / direktori yang ditentukan, mereka akan mendapatkan pesan penggunaan ini: JanNash ~ $ usage: rm [-f | -i] [-dPRrvW] file ... unlink file
Jan Nash

2
@barrycarter Itu sama sekali tidak benar - masih akan mencoba untuk menghapus /, itu hanya akan melewatkan file tidak ada xyz*(yang tidak akan berkembang karena kurangnya kecocokan).
mengembang

3
@barrycarter Perilaku itu tergantung pada konfigurasi globbing shell Anda. Setidaknya dalam standar bash pada macOS, itu sebenarnya menghapus adan bbagi saya - bahkan tanpa menentukan -f. Lakukan perintah yang sama dengan echo rm -f a b c*sebaliknya untuk melihat perilaku yang sebenarnya.
lembut

2
@barrycarter dan mengembang: Apa yang terjadi tergantung pada apakah nonomatch variabel shell disetel atau tidak.
Thomas Padron-McCarthy

13

Untuk pemula, awam / Linux / Unix:

rm sendiri tidak melakukan apa-apa karena Anda belum mengatakan apa yang harus disingkirkan.

man rm dapat menjelaskan sebagian besar dari ini, jika Anda memahaminya.

-r berarti rekursif, seperti pada "sertakan semuanya dalam subfolder"

-f berarti mode paksa, "jangan tanya saya untuk mengonfirmasi"

rm -rf(JANGAN LAKUKAN INI)/ akan mengatakan hapus semua yang ada di bawah /(folder root) tanpa memeriksa (pada versi macOS terbaru SIP akan mencegah Anda menghapus macOS sendiri dengan ini, tetapi banyak hal lain akan terhapus)

rm [some file name] hanya akan menghapus file itu.

rm -rf /home/myuser/booksakan menghapus segala sesuatu dalam myuser's booksfolder, serta folder.


6
Saat ini yang perlu Anda lakukan rm -rf / --no-preserve-rootuntuk menembak kaki Anda dengan benar.
Gallifreyan

1
@Gallifreyan Apakah ada cara untuk menembak kaki Anda dengan benar?
PascalVKooten

1
Yang ini dikatakan bekerja dengan baik. Saya tidak tahu yang lain :)
Gallifreyan

1
@Gallifreyan di macOS? pastebin.com/aVAsNcKC mengindikasikan sebaliknya
nohillside

@ Galifreyan: find / -deleteharus "bekerja" (yaitu benar-benar menghapus sesuatu, jadi jangan jalankan itu.)
Peter Cordes

4

Tidak, tetapi jika Anda ingin menghapus, Berikut ini contohnya:

Setelah Anda meluncurkan Terminal (di folder / Aplikasi / Utilitas Anda) ketik cd ~ / Desktop untuk menavigasi ke direktori Desktop. Jika Anda memiliki file di sini bernama MyFile.rtf yang Anda tidak pernah ingin melihatnya lagi, Anda dapat menjalankan perintah ini:

rm MyFile.rtf

Ketika Anda menekan Return, file akan menjadi sia-sia! Ini akan hilang, bersulang, sejarah. Anda tidak bisa mendapatkannya kembali.


Sebenarnya rm menghapus semua referensi file, tidak menggosok hard drive file dengan menimpa setiap byte, jika saya memahami dokumentasi dengan benar.
NoBugs

@NoBugs Tetapi dalam keadilan ini adalah bagaimana semua 'penghapusan' modern bekerja, termasuk Windows. Jika fitur hapus menimpa setiap byte maka itu akan diiklankan seperti itu (terutama karena itu memakan waktu lebih lama dan tidak perlu sebagian besar waktu).
Gila
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.