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,
rmrfauszuführen auf einer Maschine ohne diese Funktion wird ein harmlosescommand not foundzurückgegeben . -
Dieser Alias ist in Ihrem Fall keine Hilfe, da die
-fOption, die Sie in der Befehlszeile angeben, überschreibt-iOption im Alias.