No hay forma de un sistema totalmente a prueba de balas. Y añadiendo "¿Estás seguro?" indicaciones a las cosas es contraproducente y conduce a "Por supuesto que estoy seguro". reacciones instintivas.
Un truco que aprendí de un libro hace años es hacer primero ls -R blah* luego, haz rm -fr blah* si y sólo si la lista que aparece da en el blanco que yo quería.
Es bastante fácil hacer el ls comando primero, luego ↑ , elimine el ls -R y reemplazar con rm -fr .
La pregunta final es:"Si la información fue valiosa para usted, ¿dónde está su copia de seguridad?"
Un DEBUG trap podría escribirse para cancelar comandos que parecen sospechosos. Se puede agregar lo siguiente, o un código similar, a su ~/.bashrc :
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
Ajusta la lógica al gusto.
(En realidad, no espero que este enfoque sea útil, demasiadas formas de estropear un comando destructivamente para encontrarlas probando una por una, pero proporciona una respuesta literal a la pregunta).
¿Puedes entrenarte para usar, digamos, rmrf en lugar de rm -rf ?
Si es así, esta función bash le brindará la oportunidad de ver lo que realmente sucedería antes de confirmar el comando:
rmrf() { echo rm -rf "example@unixlinux.online"; read -p "Proceed (y/N)? "; [ "${REPLY,,}" = y ] && rm -rf "example@unixlinux.online"; }
Para hacer que esta función sea permanente, agregue esta línea al ~/.bashrc archivo en cada computadora que use.
Comparación con el común rm alias
Es común definir un alias:
alias rm='rm -i'
Esto tiene dos limitaciones:
-
Si llega a depender de este alias, se sorprenderá cuando esté en una máquina o en un entorno que no lo tenga. Por el contrario, intentar ejecutar
rmrfen una máquina sin esa función devolverá un inofensivocommand not found. -
Este alias no es de ayuda en su caso porque el
-fopción que proporciona en la línea de comando anula el-iopción en el alias.