Tidak ada cara untuk sistem yang benar-benar antipeluru. Dan menambahkan "Apakah Anda yakin?" petunjuk untuk hal-hal yang kontraproduktif dan mengarah ke "Tentu saja saya yakin." reaksi spontan.
Trik yang saya ambil dari sebuah buku beberapa tahun yang lalu adalah dengan melakukan ls -R blah*
terlebih dahulu lalu, lakukan rm -fr blah*
jika dan hanya jika daftar yang muncul mencapai apa yang saya inginkan.
Cukup mudah untuk melakukan ls
perintah terlebih dahulu, lalu ↑ , hapus ls -R
dan ganti dengan rm -fr
.
Pertanyaan terakhirnya adalah, "Jika informasi itu berharga bagi Anda, di mana cadangan Anda?"
A DEBUG
trap dapat ditulis untuk membatalkan perintah yang terlihat mencurigakan. Berikut ini, atau kode yang mirip dengannya, dapat ditambahkan ke ~/.bashrc
Anda :
shopt -s extdebug
checkcommand() {
if [[ $BASH_COMMAND = 'rm -r'*' *' ]]; then
echo "Suppressing rm -r command ending in a wildcard" >&2
return 1
fi
# check for other commands here, if you like
return 0
}
trap checkcommand DEBUG
Sesuaikan logika dengan selera.
(Saya sebenarnya tidak berharap pendekatan ini berguna -- terlalu banyak cara untuk mengacaukan perintah secara destruktif untuk menemukan mereka menguji satu per satu -- tetapi ini memberikan jawaban literal untuk pertanyaan tersebut).
Bisakah Anda melatih diri untuk menggunakan, katakanlah, rmrf
di tempat rm -rf
?
Jika demikian, fungsi bash ini akan memberi Anda kesempatan untuk melihat apa yang sebenarnya terjadi sebelum mengonfirmasi perintah:
rmrf() { echo rm -rf "[email protected]"; read -p "Proceed (y/N)? "; [ "${REPLY,,}" = y ] && rm -rf "[email protected]"; }
Untuk membuat fungsi ini permanen, tambahkan baris ini ke ~/.bashrc
file di setiap komputer yang Anda gunakan.
Perbandingan dengan rm
umum alias
Adalah umum untuk mendefinisikan sebuah alias:
alias rm='rm -i'
Ini memiliki dua batasan:
-
Jika Anda bergantung pada alias ini, maka Anda akan terkejut saat berada di mesin atau di lingkungan yang tidak memilikinya. Sebaliknya, mencoba menjalankan
rmrf
pada mesin tanpa fungsi itu akan mengembalikancommand not found
yang tidak berbahaya . -
Alias ini tidak membantu dalam kasus Anda karena
-f
opsi yang Anda berikan pada baris perintah menggantikan-i
opsi di alias.