/bin/rm -f *
サブディレクトリを一覧表示し、現在のディレクトリで実行された回数を覚えていません。この問題を防ぐのに役立つ提案を提供できる人はいますか?実行しようとしたときにシステムに危険を警告させるにはどうすればよいですか/bin/rm -f *
?
ベストアンサー1
zsh
デフォルトでは、コマンドラインからフルワードで呼び出されるコマンドを実行しようとすると、確認メッセージが表示されますrm
(*
この機能はから継承されますが、デフォルトでは有効ではありません)。tcsh
tcsh
$ rm -rf *
zsh: sure you want to delete all the files in / [yn]?
Bashを使用する必要がある場合は、最新バージョンを使用してください。 and Trapを使用すると、同様のことがbash
できます。extdebug
DEBUG
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
シェルが行うように解析し、最初の引数がrm
or に拡張されていることを確認し、引用*/rm
符なしで引数が渡されたことを確認する必要があります*
が、実際には防弾的な方法では実行できません。