3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Linux にゴミ箱を用意し、rm コマンドでゴミ箱に移動するようにする

Posted at

はじめに

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 コマンドを使うのが便利かと思いました。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?