CUI環境のLinuxでごみ箱を利用する方法

CUI環境のLinuxでごみ箱を利用する方法

CUI(Character User Interface)環境のLinuxには、デフォルトではごみ箱機能が搭載されていないため、rmコマンドを使ってファイルやディレクトリを削除すると完全にデータが削除されてしまいますが、Windowsなどと同じようにごみ箱があればなぁとお思いの方も多いでしょう。

そこでここでは、RedHat系のLinuxでごみ箱機能を利用できるようにする方法として、以下の2つの方法を紹介します。

  • ごみ箱機能を実装できるツールtrash-cliをインストールする方法
  • ファイルやディレクトリを削除したときに、指定したディレクトリに移動する関数を作成する方法

この記事は、以下の環境での動作結果を基にしています。他のソフトウェアやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
AlmaLinux9.4

trash-cliをインストールする方法

trash-cliは、CUI環境でごみ箱機能を実装できるツールで、EPELリポジトリからインストールできます。(UbuntuなどのDebian系Linuxでは、標準のリポジトリからインストールできるようです。)

# dnf install epel-release
# dnf install trash-cli

EPEL(Extra Packages for Enterprise Linux)は、RedHat系Linuxで標準リポジトリにないパッケージをインストールしたいときに利用されることが多いリポジトリです。

trash-cliの使い方は、次のとおりです。

ファイルやディレクトリの削除

ファイルやディレクトリを削除するときは、trash-putコマンドで削除したいファイルやディレクトリを指定します。(複数のファイルを削除したいときは、スペースで区切って記述します。)

$ trash-put sample.txt

rmコマンドを実行したときに、trash-putコマンドが実行されるようにしたいときは、~/.bashrc に以下のようにエイリアスを設定しておくとよいでしょう。

$ vim ~/.bashrc
alias rm='trash-put'
$ source ~/.bashrc

ごみ箱の中身を確認

ごみ箱の中身を確認するときは、trash-listコマンドを実行することで、ごみ箱に入っているファイルやディレクトリと削除された日付を確認できます。

$ trash-list
2024-05-22 09:39:51 /home/tarou/sample.txt
2024-05-22 09:40:04 /home/tarou/test

ごみ箱からファイルを復元

ごみ箱からファイルを復元するときは、trash-restoreコマンドを実行することで、ごみ箱内のファイルやディレクトリが一覧表示され、一番左側の番号で復元するファイルやディレクトリを指定することで、元の場所に復元されます。

$ trash-restore
0 2024-05-22 09:39:51 /home/tarou/sample.txt
1 2024-05-22 09:40:04 /home/tarou/test
What file to restore [0..1]:

ごみ箱のファイルを削除

ごみ箱内の特定のファイルを削除するときは、trash-rmコマンドで削除できます。

$ trash-rm /home/tarou/sample.txt

また、ごみ箱内のデータをすべて削除して、ごみ箱を空にするときはtrash-emptyコマンドを実行します。

$ trash-empty

自作関数で対応する方法

ファイルやディレクトリを削除したときに、所定のディレクトリに移動させるという関数を作成して、シェルの設定ファイル「.bashrc」に定義しておくことで、簡易的なごみ箱として利用する問う方法もあります。

$ vim ~.bashrc

function gomibako (){
  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 (){
  echo -n "clean : ゴミ箱を空にしますか? (y/n)"
  read answer
  case $answer in
   y)
     \rm -rf ~/.trash/*
     \rm -rf ~/.trash/.*
   ;;
   n)
   ;;
   *)
   ;;
  esac
}
alias rm=gomibako

上の設定を「.bashrc」ファイルに追記したら、以下のコマンドで設定を適用します。

$ source .bashrc

以上で、rmコマンドを実行したときにファイルやディレクトリが削除されずに、ユーザーのホームディレクトリの「.trash」ディレクトリに移動されるようになります。また、cleanコマンドを実行することで「.trash」ディレクトリ内のデータを空にできます。

なお、自作関数は簡易的な方法のため、trash-cliのようにごみ箱に移動したファイルやディレクトリを元の場所に戻すといった操作はできず、使い勝手も劣る部分があるため、特別な事情がない限りはtrash-cliをインストールする方法をおすすめします。

あとがき

ちなみに、GNOMEなどのグラフィカル環境では、Windowsと同じようにごみ箱機能が搭載されており、ファイルマネージャーアプリなどからファイルやディレクトリを削除すると、ごみ箱に移動され、削除したファイルやディレクトリをごみ箱から元に戻すことができます。