ターミナルでコマンドを実行する前に警告を設定する方法はありますか?

ターミナルでコマンドを実行する前に警告を設定する方法はありますか?

大量のデータを非常に効率的に破壊する能力に長けたターミナル コマンドがいくつかあります。たとえば、sudo rm -rf /*または ですrm -rf /*。これらの破壊的なコマンドが入力されるたびに警告が表示されるように設定したいと思います。次のようになります。

sudo rm -rf /*
Are you sure you want to remove all files from your root 
directory recursively? This operation will remove all files from the root 
directory, any mounted filesystems attached to it and essential operating 
system files. 
Are you sure you want to proceed? [Y/n]

rm -rf /*
Are you sure you want to remove all files owned by $USER 
recursively? This operation will remove all your files on the root 
filesystem and any filesystems mounted to it.
Are you sure you want to proceed? [Y/n]

これを実行するスクリプトをどのように記述すればよいでしょうか?

答え1

rm-iファイルを削除する前に毎回確認するオプションがあります。これはあなたが望んでいることではないと思います。たとえば、git リポジトリを再帰的に削除する場合、ファイルを削除する前に数百の確認応答が必要になることがよくあります。

rmおそらく、次のような単純なスクリプトがほしいと思います。

#!/bin/bash
if [ "$(ls -l $1 | wc -l)" = "1" ]; then
  rm $1 $@
else
  echo "You are going to delete these ($(ls -l $1 | wc -l)) files/directories via shell globbing" 
  ls $1
  read -p "Do you really want to delete these files? [y/n]" yn
  if [ $yn = [Yy] ]; then
    rm $1 $@
  fi
fi

注意: 「rm FILE ARGUMENTS」のようなスクリプトを使用する必要があります。

このスクリプトは、シェル グロブを使用して複数のファイル (ディレクトリ) が選択されているかどうかを確認しますが、ファイルが 1 つだけの場合はそのファイルを削除します。

関連情報