はじめに
rm
コマンドを実行すると、ゴミ箱を経由せず直接ファイルやフォルダが削除されてしまいます。間違えて削除してしまったということを防ぐために、ゴミ箱を用意し rm
コマンドを実行する際は、ゴミ箱に移動するようにしてみました。
実装と使い方
.bashrc
に以下のコードを追加して下さい(.bashrc
に追加せずに シェルスクリプトとしてファイルを追加しても構いません(~/bin/
など))。
function rm_wrap (){
if [ ! -e ~/.trash ]; then
mkdir ~/.trash
fi
if expr "$1" : "^-" >/dev/null 2>&1; then
echo "This is rm_wrap: Do not use any options."
return 1
fi
date=`date +%y%m%d-%R:%S`
mv -t ~/.trash -f "$@" --suffix $date
}
function clean (){
ionice -c 3 -p $$
echo -n "clean : ゴミ箱を空にしますか? (y/n)"
read answer
case $answer in
y)
\rm -rf ~/.trash/*
\rm -rf ~/.trash/.*
;;
n)
;;
*)
;;
esac
}
ゴミ箱内に同一のファイルまたはディレクトリが存在している場合には、名前の最後に日付と時刻を付与する設定にしています。clean
コマンドでゴミ箱内のファイルを全て削除します。ionice
コマンドで I/O の優先度を下げていますが、無くても構いません。また、.bashrc
に以下のエイリアスを追加して下さい。
alias rm=rm_wrap
最後にsource .bashrc
コマンドを実行して下さい。これで rm
コマンドを実行したときは、rm_wrap
コマンドが呼び出されゴミ箱に移動してくれるようになります。通常の rm
コマンドを使いたいときは先頭に "\" を付けて実行して下さい(\rm)。
最後に
間違えて rm
コマンドを実行してしまい、大事なファイルを削除してしまった経験がありました。そのようなことを防ぐためにも、ゴミ箱機能を持った rm
コマンドを使うのが便利かと思いました。