システムを完全に防弾する方法はありません。さらに「よろしいですか?」物事へのプロンプトは非生産的であり、「もちろん私は確信している」につながります.ひざまずく反応。
数年前の本から私が拾ったトリックは、最初に ls -R blah*
を行うことです 次に、 rm -fr blah*
を実行します 見つかったリストが私が望んでいたものにヒットした場合に限ります。
ls
を実行するのは簡単です 最初にコマンド、次に ↑ 、 ls -R
を削除します rm -fr
に置き換えます .
最後の質問は、「その情報があなたにとって価値があった場合、バックアップはどこにありますか?」
DEBUG
疑わしいと思われるコマンドをキャンセルするために、trap を書き込むことができます。以下、またはそれに類似したコードを ~/.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
好みに合わせてロジックを調整してください。
(実際には、このアプローチが有用であるとは思っていません。コマンドを破壊的に台無しにして、1 つずつテストしているのを見つける方法が多すぎます。しかし、質問に対する文字通りの答えが得られます)。
たとえば、rmrf
を使用できるようにトレーニングできますか? rm -rf
の代わりに ?
その場合、この bash 関数は、コマンドを確認する前に実際に何が起こるかを確認する機会を提供します:
rmrf() { echo rm -rf "[email protected]"; read -p "Proceed (y/N)? "; [ "${REPLY,,}" = y ] && rm -rf "[email protected]"; }
この関数を永続的にするには、この行を ~/.bashrc
に追加します
一般的な rm
との比較 エイリアス
エイリアスを定義するのが一般的です:
alias rm='rm -i'
これには 2 つの制限があります:
<オール>
このエイリアスに依存するようになると、それがないマシンまたは環境にいるときにショックを受けます。対照的に、rmrf
を実行しようとすると、 その機能のないマシンでは、無害な command not found
を返します .
-f
が コマンド ラインで指定したオプションは、-i
をオーバーライドします。 エイリアスのオプション。