Tentang bahaya 'rm'

click fraud protection

Bahkan jika Anda baru mengenal Terminal, saya harap seseorang memberi Anda nasihat berharga ini:

Menjadi sangat hati-hati saat menggunakan rm perintah untuk menghapus file dan folder!

Alat penghapusan file dan folder Unix rm adalah salah satu perintah paling berbahaya di sekitar. Lagi pula, tidak ada yang suka menghapus file berharga secara tidak sengaja. Hari ini, saya akan menunjukkan kepada Anda betapa berbahayanya hal itu dan memandu Anda melalui beberapa teknik yang akan membantu Anda mengatasinya dengan aman.

Kenapa rm berpotensi berbahaya?

Ada dua alasan utama mengapa Anda harus menghormati dan takut rm memerintah. Pertama, saat Anda menghapus item dengan rm itu hilang selamanya setelah Anda menekan Return. Anda tidak dapat mengeluarkannya dari tempat sampah jika Anda berubah pikiran. Ya, ada kemungkinan (sedikit) Anda dapat memulihkan sebagian atau semua file yang terhapus menggunakan program pihak ketiga, seperti $90 dari SubRosaSoft Penyelamatan File. (Untuk meningkatkan peluang Anda memulihkan file, Anda harus berhenti menggunakan Mac dan segera menjalankan utilitas pemulihan file. Semakin lama Anda menggunakan Mac setelah melakukan kesalahan, semakin sedikit kesempatan Anda untuk memulihkan data.) Tapi hadapi saja, setelah Anda

rm sesuatu, itu mungkin hilang untuk selamanya. Hasta la vista, data!

Bahaya kedua dengan rm adalah bahwa, menjadi perintah Unix, itu cukup literal, dan itu akan melakukan persis apa yang diminta—bahkan jika permintaan itu berarti penghancuran sistem itu sendiri rm sedang berjalan. Maksudnya itu apa? Itu artinya rm sangat kuat, dengan kemampuan untuk menghapus file dari mana saja di mesin Anda, dan satu kesalahan ketik kecil dapat menyebabkan konsekuensi negatif yang sangat besar. Pertimbangkan contoh berikut:

PERINGATAN: Tolong jangan mencoba perintah yang tercantum dalam contoh berikut. Itu akan berhasil HAL YANG SANGAT BURUK ke mesin Anda. Benar-benar. Sungguh, sangat buruk. Jangan coba ini di rumah. Jangan coba ini di komputer teman. Jangan mencoba periode ini. Anda telah diperingatkan.

Asumsikan Anda sedang mengerjakan sesuatu di Terminal di folder rumah Anda, dan Anda ingat bahwa istri Anda ingin Anda menghapus sesuatu dari folder Dokumennya. Dia tidak lagi membutuhkan folder Dokumen Kerjanya, karena dia baru saja berganti majikan. Menjadi tipe orang yang malas dan efisien, Anda menyadari bahwa Anda dapat melakukan ini langsung dari Terminal, bahkan tanpa mengubah direktori. Jadi Anda mengetik:

sudo rm -rf /Pengguna/pasangan/Dokumen/Dokumen Kerja

(Itu -rf bendera berarti "secara rekursif ( R ) melintasi folder, menghapus semua file dan sub-folder," dan "memaksa ( F ) penghapusan, mengabaikan izin.” Anda harus menggunakan kedua opsi ini, bersama dengan sudo, untuk menghapus folder dari direktori pengguna lain.)

Kedengarannya seperti ide yang bagus, tetapi segera setelah Anda menekan Return, Anda melakukan tindakan yang sangat cepat dan sangat menyakitkan—Anda baru saja menghapus secara permanen memiliki Folder dokumen, beserta semua yang ada di dalamnya! Astaga! Tentu saja, Anda memiliki cadangan terbaru (kan?!), jadi ini hanya ketidaknyamanan kecil dan bukan bencana besar. Tapi bagaimana ini bisa terjadi, dan bagaimana Anda bisa mencegahnya di masa depan?

Apa yang telah terjadi?

Dalam contoh di atas, hanya ada satu karakter yang hilang—satu garis miring terbalik—dan itulah yang menyebabkan kehancuran. Di Terminal, jika Anda mereferensikan file atau folder dengan nama yang menyertakan spasi, Anda harus sertakan namanya dalam tanda kutip, atau letakkan garis miring terbalik sebelum spasi, seperti ini:

	"/Pengguna/pasangan/Dokumen/Dokumen Kerja" /Pengguna/pasangan/Dokumen/Dokumen Kerja	

Masalahnya adalah Terminal melihat ruang dalam perintah asli Anda, dan menafsirkannya sebagai pembatas—yaitu, sesuatu yang digunakan untuk memisahkan argumen pada baris perintah. Dan rm perintah menerima banyak file pada satu baris input, seperti pada rm file1 file2 file3. Akibatnya, lajang Anda rm perintah sebenarnya adalah dua perintah:

	rm -rf /Pengguna/pasangan/Dokumen/Pekerjaan rm -rf Dokumen	

Sekarang, yang pertama rm akan gagal, dengan asumsi pasangan Anda tidak memiliki folder bernama Kerja di folder Dokumennya. Namun, itu tidak menyebabkan pesan kesalahan apa pun, juga tidak rm berhenti berjalan hanya karena tidak dapat menemukan file atau folder yang Anda rujuk. Sebaliknya, ia memperhatikan ruang, dan berpikir, "Ah, ini folder lain yang harus saya hapus."

Karena Anda sedang bekerja di folder rumah Anda, dan folder Dokumen adalah folder tingkat teratas di dalam direktori itu, file rm perintah dengan senang hati melakukan penawaran Anda dan menghapusnya, seperti yang Anda minta. Poof. Semua hilang. Anda tidak benar-benar membutuhkan disertasi Anda, bukan? Dan sejak rm berjalan tanpa umpan balik atau peringatan apa pun, Anda tidak akan tahu ada yang salah sampai semuanya terlambat. Dan semua karena Anda meninggalkan backslash sederhana.

Catatan: Dalam contoh yang saya berikan, Anda hanya akan kehilangan folder Documents jika Anda bekerja di direktori home Anda—atau jika Anda memiliki folder bernama Documents di folder lain tempat Anda bekerja. Namun, menurut saya Anda dapat dengan mudah menggeneralisasi kerusakan yang dapat Anda timbulkan dengan kesalahan sederhana.

Pencegahan Bencana 101

Untungnya, ada beberapa langkah mudah yang dapat Anda ambil untuk menyelamatkan diri dari bencana tersebut. Yang pertama, tentu saja, adalah sangat berhati-hati saat menggunakan rm, terutama dengan R (rekursif) dan F pilihan (terpaksa). Tetapi bahkan dengan sangat hati-hati, kita semua membuat kesalahan—hampir setiap orang yang saya kenal, termasuk saya sendiri, telah membuat setidaknya satu kesalahan bodoh dengan rm. Jadi di luar akal sehat, apa lagi yang bisa Anda lakukan?

Solusi Teraman

Kurang dari tidak menggunakan rm sama sekali, solusi terbaik berikutnya adalah selalu menggunakan rm -i. Itu -Saya option adalah singkatan dari interactive, dan memaksa Anda untuk secara manual menerima setiap penghapusan. Misalnya, jika Anda ingin menghapus semua file dengan nama yang diawali dengan "MyPic", Anda akan melakukan ini:

	$ rm -i MyPic* hapus MyPic1.jpg? y menghapus MyPic2.jpg? y menghapus MyPic3.jpg? y menghapus MyPic4.jpg? y	

Ini benar-benar cara paling aman untuk digunakan rm, tetapi ini bisa sangat membosankan—pertimbangkan direktori dengan 150 file di dalamnya yang ingin Anda buang. Namun, ada solusi lain yang memberikan tingkat keamanan tertentu.

Solusi yang Tidak Cukup Aman

Anda juga dapat menggunakan kemampuan shell untuk menerapkan argumen dari perintah sebelumnya ke perintah saat ini. Jadi, bukan hanya berlari rm pada folder, pertama lakukan ls untuk melihat apakah Anda mendapatkan apa yang Anda harapkan. Lalu beri tahu rm untuk menggunakan argumen dari ls perintah saat dijalankan.

Misalnya, jika Anda ingin menghapus semua file dengan nama yang diawali dengan "MyPic", Anda dapat melakukan ini:

	$ ls MyPic* MyPic1.jpg MyPic2.jpg MyPic3.jpg $ rm !$	

Itu !$ bagian dari perintah ini memberi tahu Shell untuk mengambil argumen ( Gambarku* ) dari perintah terakhir, dan gunakan dengan perintah saat ini. Dalam contoh ini, itu artinya rm akan mendapatkan Gambarku* argumen dari ls. Dengan menggunakan ls perintah pertama, Anda dapat melihat dengan tepat apa rm perintah akan menghapus. Jika ls keluaran tidak benar, atau membuat kesalahan, maka Anda akan melihatnya sebelum menghapus file.

Anda juga bisa menggunakan gema perintah sebagai "dry run" untuk penghapusan Anda. Daripada hanya berlari rm MyPic*, coba sebagai gema rm MyPic* Pertama. Output akan menunjukkan kepada Anda apa yang diperluas rm perintah akan terlihat seperti:

	$ echo rm MyPic* rm MyPic1.jpg MyPic2.jpg MyPic3.jpg	

Jika semuanya terlihat benar, tekan panah atas (untuk mengambil perintah terakhir), lalu gerakkan kursor ke kiri dan hapus kata tersebut gema.

Opsi lain yang mungkin Anda pertimbangkan adalah tidak menggunakan rm sama sekali. Sebagai gantinya, gunakan perintah pindahkan, mv. Buat folder "untuk menghapus" khusus di suatu tempat di sistem Anda, dan gunakan mv untuk meletakkan semuanya di sana terlebih dahulu. Kemudian, Anda dapat melihat melalui direktori "hapus" saat Anda punya waktu, dan gunakan rm hanya di dalam direktori itu—atau periksa dari Finder dan gunakan saja tempat sampah Finder. Jadi untuk mereplikasi contoh MyPic di atas, Anda cukup melakukan ini:

$ mv MyPic* ~/myuser/dump_dir/

Ini akan memindahkan semua file yang dimulai dengan MyPic ke folder dump_dir Anda, dari mana Anda dapat melihatnya nanti di waktu luang Anda, hanya untuk memastikan hanya file yang tepat yang dipindahkan. Setelah Anda yakin file yang tepat telah dipindahkan, Anda kemudian dapat menghapus file tersebut.

Tangani dengan hati-hati

Penggunaan pribadi saya rm sangat tergantung pada situasinya, tetapi saya menggunakan beberapa kombinasi dari solusi di atas dengan berbagai cara. Salah satu aturan utama saya adalah saya mencoba untuk tidak pernah menggabungkan R Dan F bendera dengan wildcard (tanda bintang). Terlalu banyak yang bisa salah. Jika saya harus melakukan sesuatu seperti itu, saya lebih cenderung menggunakannya mv sebagai gantinya, atau ls untuk memastikan saya menghapus apa yang saya maksudkan.

Saya juga akan menggunakan Saya beralih ketika saya menggunakan wildcard dalam direktori; dengan begitu, saya dapat memastikan bahwa saya menghapus apa yang ingin saya hapus.

Pada akhirnya, terserah Anda seberapa baik Anda melindungi diri sendiri saat menggunakan rm —Ini adalah alat yang sangat kuat, dan (terutama bila digunakan dengan sudo dan opsi rekursif dan paksa) dapat menyebabkan kerusakan besar pada sistem Anda dengan tergesa-gesa. Tidak ada yang akan membuktikan nilai cadangan yang baik dan terkini lebih cepat daripada yang salah arah rm -rf. Seperti yang dipelajari Spider-Man dengan sangat terkenal: "Dengan kekuatan besar, datanglah tanggung jawab yang besar."

Catatan: Artikel ini telah diedit pada pukul 9:30 Waktu Pasifik pada hari Jumat, 9 Desember. Pengeditan dilakukan untuk gaya dan konten; tidak ada perubahan yang dilakukan pada instruksi Unix…

  • Apr 19, 2023
  • 72
  • 0
instagram story viewer