CUI(Character User Interface)環境のLinuxには、デフォルトではごみ箱機能が搭載されていないため、rmコマンドを使ってファイルやディレクトリを削除すると完全にデータが削除されてしまいますが、Windowsなどと同じようにごみ箱があればなぁとお思いの方も多いでしょう。
そこでここでは、RedHat系のLinuxでごみ箱機能を利用できるようにする方法として、以下の2つの方法を紹介します。
- ごみ箱機能を実装できるツールtrash-cliをインストールする方法
- ファイルやディレクトリを削除したときに、指定したディレクトリに移動する関数を作成する方法
目次
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と同じようにごみ箱機能が搭載されており、ファイルマネージャーアプリなどからファイルやディレクトリを削除すると、ごみ箱に移動され、削除したファイルやディレクトリをごみ箱から元に戻すことができます。