「rm」および「rm -i」スクリプトの作成

「rm」および「rm -i」スクリプトの作成

3つ以上のファイルが削除されるたびに、デフォルトで呼び出されるスクリプトを作成したいと思いますrm -i。初期化ファイルに入ることを知っていますが、うまく動作しないようです。

これまで:

if [$file -ge 3]; then
  rm -i 
  exit 0 
else
  rm
exit 1

答え1

@Timの回答で提供されている機能は、bashを実行しているすべてのシステムで機能します。しかし、GNUはrmすでにあなたのニーズに合ったオプションを提供しています(man rm)。

   -I     prompt  once  before  removing more than three
          files, or  when  removing  recursively.   Less
          intrusive  than -i, while still giving protec‐
          tion against most mistakes

したがって、GNUがある場合rm(Linuxを実行している場合はそうです)、次の行を次の行に追加するだけです/.bashrc

alias rm='rm -I'

3つ以上のファイルを削除するとメッセージが表示されますが、各ファイルを確認するように求められません。ジョブを確認すると、すべてのファイルが削除されます。

答え2

これは私にとって効果的でした。次の行をあなたの行に追加してください~/.bashrc

rm() {
   if [ "$#" -ge 3 ]; then
        command rm -i "$@"
   else
        command rm "$@"
   fi
}

これにより、実行されるたびに呼び出されるrm代わりに呼び出される関数が生成されます。/bin/rmrm

"$#"渡された引数の数に拡張されます。

答え3

簡潔でありながら移植可能なアプローチは次のとおりです。

rm() {
  command rm $([ ${#} -gt 3 ] && echo \-i) "$@"
}

rmただし、セマンティクスを変更しないことをお勧めします。返信するもっと学ぶ。

関連情報