Es gibt keine Möglichkeit, ein System vollständig kugelsicher zu machen. Und das Hinzufügen von "Sind Sie sicher?" Aufforderungen zu Dingen ist sowohl kontraproduktiv als auch führt zu "Natürlich bin ich mir sicher." reflexartige Reaktionen.
Ein Trick, den ich in den vergangenen Jahren aus einem Buch aufgeschnappt habe, ist, zuerst ls -R blah*
zu machen Führen Sie dann rm -fr blah*
aus wenn und nur wenn die Auflistung, die auftauchte, das traf, was ich treffen wollte.
Es ist ganz einfach, ls
auszuführen Befehl zuerst, dann ↑ , löschen Sie die ls -R
und durch rm -fr
ersetzen .
Die abschließende Frage lautet:„Wenn die Informationen für Sie wertvoll waren, wo ist Ihr Backup?“
Ein DEBUG
trap könnte geschrieben werden, um Befehle abzubrechen, die verdächtig aussehen. Der folgende oder ähnlicher Code kann Ihrem ~/.bashrc
hinzugefügt werden :
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
Passen Sie die Logik nach Belieben an.
(Ich erwarte nicht wirklich, dass dieser Ansatz nützlich ist – zu viele Möglichkeiten, einen Befehl destruktiv durcheinander zu bringen, um zu finden, dass sie einen nach dem anderen testen – aber er liefert eine wörtliche Antwort auf die Frage).
Können Sie sich selbst beibringen, beispielsweise rmrf
zu verwenden anstelle von rm -rf
?
Wenn ja, bietet Ihnen diese Bash-Funktion die Möglichkeit zu sehen, was tatsächlich passieren würde, bevor Sie den Befehl bestätigen:
rmrf() { echo rm -rf "[email protected]"; read -p "Proceed (y/N)? "; [ "${REPLY,,}" = y ] && rm -rf "[email protected]"; }
Um diese Funktion dauerhaft zu machen, fügen Sie diese Zeile zum ~/.bashrc
hinzu Datei auf jedem Computer, den Sie verwenden.
Vergleich mit dem üblichen rm
Pseudonym
Es ist üblich, einen Alias zu definieren:
alias rm='rm -i'
Dies hat zwei Einschränkungen:
-
Wenn Sie sich auf diesen Alias verlassen, werden Sie einen Schock erleben, wenn Sie sich auf einer Maschine oder in einer Umgebung befinden, die ihn nicht hat. Im Gegensatz dazu versuchen Sie,
rmrf
auszuführen auf einer Maschine ohne diese Funktion wird ein harmlosescommand not found
zurückgegeben . -
Dieser Alias ist in Ihrem Fall keine Hilfe, da die
-f
Option, die Sie in der Befehlszeile angeben, überschreibt-i
Option im Alias.