/bin/rm -f * 実行を無効にするには?

/bin/rm -f * 実行を無効にするには?

/bin/rm -f *サブディレクトリを一覧表示し、現在のディレクトリで実行された回数を覚えていません。この問題を防ぐのに役立つ提案を提供できる人はいますか?実行しようとしたときにシステムに危険を警告させるにはどうすればよいですか/bin/rm -f *

ベストアンサー1

zshデフォルトでは、コマンドラインからフルワードで呼び出されるコマンドを実行しようとすると、確認メッセージが表示されますrm*この機能はから継承されますが、デフォルトでは有効ではありません)。tcshtcsh

$ rm -rf *
zsh: sure you want to delete all the files in / [yn]?

Bashを使用する必要がある場合は、最新バージョンを使用してください。 and Trapを使用すると、同様のことがbashできます。extdebugDEBUG

shopt -s extdebug
check_for_rm_star() {
  case $1 in
    (rm*[\ /]"* "* | rm*[\ /]\*)
      read -p "check_for_rm_star: Are you sure? " -n1 answer < /dev/tty > /dev/tty
      echo > /dev/tty
      [[ $answer == [yY] ]]
  esac
}
trap 'check_for_rm_star "$BASH_COMMAND"' DEBUG

rm *これは、andの最も一般的なケースでは機能しますが、rm "*"orでは機能しない単純なアプローチですが、/bin/rm *アイデア: $(rm *)を得ることができます。理想的には、$BASH_COMMANDシェルが行うように解析し、最初の引数がrmor に拡張されていることを確認し、引用*/rm符なしで引数が渡されたことを確認する必要があります*が、実際には防弾的な方法では実行できません。

おすすめ記事