Pelancaran rm-safely, pembungkus shell yang direka untuk mencegah pemadaman fail secara tidak sengaja pada macOS, telah mencetuskan perbincangan hangat dalam komuniti pembangun mengenai pertukaran antara keselamatan dan kebolehpindahan sistem. Alat ini menggantikan arahan rm
standard dengan versi yang lebih selamat yang memindahkan fail ke tong sampah berbanding memadamkannya secara kekal.
Kaedah Pemasangan:
- Melalui curl:
curl -fsSL https://raw.githubusercontent.com/zdk/rm-safely/main/rm-safely | bash -s install
- Melalui homebrew:
brew install zdk/tools/rm-safely
Masalah Ingatan Otot
Kebimbangan paling ketara yang dibangkitkan oleh pembangun berpusat pada potensi bahaya mewujudkan tabiat keselamatan palsu. Apabila pengguna menjadi terbiasa dengan arahan rm yang selamat pada sistem tempatan mereka, mereka mungkin mengembangkan tabiat pemadaman yang cuai yang boleh terbukti membawa malapetaka apabila bekerja pada pelayan jauh atau sistem tanpa pembungkus keselamatan yang dipasang. Ini mewujudkan paradoks di mana alat yang direka untuk meningkatkan keselamatan sebenarnya mungkin menjadikan pengguna lebih terdedah dalam persekitaran yang berbeza.
Komuniti telah mengenal pasti ini sebagai sebahagian daripada corak yang lebih luas dengan alat keselamatan - ia boleh mengurangkan perhatian dan kewaspadaan pengguna, yang sering kali merupakan faktor paling penting dalam mencegah kesilapan.
Melangkaui rm: Punca Sebenar
Menariknya, perbincangan mendedahkan bahawa rm
mungkin bukan ancaman terbesar kepada keselamatan fail. Ramai pembangun melaporkan bahawa majoriti kehilangan fail mereka secara tidak sengaja datang daripada penggunaan arahan mv
dan cp
secara cuai, yang boleh menimpa fail sedia ada secara senyap. Operasi ini sering menyebabkan lebih banyak kehilangan data daripada arahan pemadaman kerana ia berlaku tanpa amaran dan boleh merosakkan fail penting dengan menggantikan kandungannya.
Sekurang-kurangnya bagi saya, lebih 90% pemadaman fail yang tidak disengajakan adalah disebabkan oleh mv dan cp berbanding rm. Bersikap cuai dengan mereka boleh dengan mudah berakhir dengan menimpa kandungan fail dengan yang lain.
Pelaksanaan GNU bagi arahan ini menawarkan pilihan keselamatan seperti flag --no-clobber
, --backup
, dan --update
, tetapi ini tidak diterima pakai secara meluas atau di-alias secara lalai.
Pendekatan Alternatif dan Penyelesaian Sedia Ada
Perbincangan komuniti menyerlahkan banyak alternatif sedia ada kepada rm-safely, menunjukkan ini adalah ruang masalah yang telah diterokai dengan baik. Alat seperti trash-cli, trash-rs, dan rip2 menawarkan fungsi yang serupa merentas sistem operasi yang berbeza. Sesetengah pembangun lebih suka kaedah perlindungan yang lebih komprehensif, seperti penyelesaian peringkat sistem fail seperti snapshot btrfs dengan snapper, yang melindungi daripada semua jenis kesilapan sistem fail, bukan hanya pemadaman.
Beberapa pengguna menyebut lebih suka arahan khusus dengan nama yang berbeza berbanding mengalias arahan sedia ada, menggunakan alat dengan nama seperti trash
, recycle
, atau j
(untuk navigasi direktori) untuk mengelakkan kekeliruan dengan arahan Unix standard.
Alat Alternatif yang Disebut:
- trash-cli: Utiliti tong sampah merentas platform
- trash-rs: Alat berasaskan Rust yang menyokong Windows, macOS, dan Linux
- rip2: Alat pemadaman alternatif dengan konsep tanah perkuburan
- btrfs snapshots dengan snapper: Perlindungan peringkat sistem fail
Kebimbangan Pelaksanaan Teknikal
Dari sudut pandangan teknikal, sesetengah pembangun mengkritik pendekatan rm-safely yang menggabungkan berbilang fungsi ke dalam satu boleh laku, dengan hujah ia melanggar prinsip reka bentuk Unix. Alat ini termasuk fungsi simpan, pulih, dan senarai semuanya dalam antara muka arahan rm, yang sesetengah pihak lihat sebagai mencampurkan terlalu banyak tujuan ke dalam satu alat.
Selain itu, pengkaji teknikal mencatatkan isu dengan pengendalian ralat, khususnya penindasan output stderr yang boleh menyembunyikan masalah sebenar atau memberikan pengalaman pengguna yang tidak membantu.
Pengajaran yang lebih luas daripada perbincangan ini nampaknya ialah walaupun alat keselamatan mempunyai tempatnya, perlindungan paling berkesan terhadap kehilangan data kekal sebagai gabungan tabiat berhati-hati, sandaran yang betul, sistem kawalan versi seperti git, dan strategi sandaran yang komprehensif berbanding bergantung semata-mata pada pembungkus keselamatan baris arahan.
Rujukan: rm-safely