大量のデータを非常に効率的に破壊する能力に長けたターミナル コマンドがいくつかあります。たとえば、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 つだけの場合はそのファイルを削除します。