🔖

rmの代わりにtrashを使ってCoding Agentに安全にファイルを削除させる

に公開
2026/04/29

LinuxやmacOSのターミナルでファイルを削除するとき rm コマンドを使います。特にCoding Agentは頻繁にrm を使ってファイルを削除しがちです。

rm は強力で、削除したファイルは基本的に復元できません。

特に rm -rf のようなコマンドは、誤操作すると重要なデータを一瞬で消してしまう危険があります。このコマンドをClaude CodeのようなCoding Agentに使わせたくない方も多いと思います。

rmを使わずに、Coding Agentにファイルやディレクトリを安全に削除させたい...!

今回の記事ではtrash コマンドについて簡単に説明します。

trashコマンドとは

trash コマンドを使うと、ファイルを削除する代わりにゴミ箱へ移動できます。GUIでの削除と同じ仕組みを使うため、後から復元が可能です。

そのため、rm の代替として非常に有用です。rmを無効化して、trash を使う運用にすることで、誤って重要なファイルを削除するリスクを減らせます。

trashのインストール

macOS

最近のmacOSでは標準で trash コマンドが利用可能です。

$ which trash
/usr/bin/trash

標準で入っているため、基本的にはインストールの必要はありません。

しかし、OSのバージョンが古い場合は入っていない可能性もあります。その場合はHomebrewでインストールできます。

brew install trash

インストールしたら指示に従ってパスを通しましょう。

echo 'export PATH="/opt/homebrew/opt/trash/bin:$PATH"' >> ~/.zshrc

ちなみに、homebrewに trash と trash-cli という2つのパッケージがありますが、macOSではインストール数の多い trash をインストールすればOKです。

Linux

sudo apt install trash-cli

Linuxでは trash-cli というパッケージ名のものがオススメです。インストール後は trash-put でコマンドが使えます。

READMEにあるように、Debian(Ubuntu), Arch, Fedoraなどの各ディストロにも対応しています。

基本的な使い方

使い方はすごく簡単です。

ファイルをゴミ箱へ移動したいときはこれだけ。

trash file.txt

ワイルドカードも使えるため、複数ファイルをまとめて削除することもできます。

trash *.log

ディレクトリもそのままゴミ箱に移動できます。

trash directory

rmをtrashに置き換える

安全性を高めるために、rm を trash に置き換えてみましょう。

例えば、シェルのエイリアスを設定します。

alias rm='trash'

これを .bashrc や .zshrc に書くことで、rm を実行したときに自動的に trash が使われます。

trashコマンドはディレクトリを削除するとき、-rオプションや-fオプションを付けずに使用できます。なので、Coding Agent向けに、オプションそのものを無視するように設定するのも良いでしょう。

以下のようなシェル関数をzshrcに書くと、使い勝手が良いと思います。

rm() {
  while [[ "$1" == -* ]]; do
    shift
  done
  trash "$@"
}

rmの無効化だけをしたいとき

置き換えるのが嫌な場合は、rm コマンドを無効化しつつ、ターミナルに出力させるのも手です。

rm() {
  echo "rmは無効化されています。trashを使用してください。" >&2
  return 1
}

エラーメッセージなので stderr に出すために>&2としています。また、return 1とすることで失敗のステータスを返すことができます。

このように書くことで、スクリプトの途中でrmがあっても、無効化されていることがわかるようになります。

ターミナルにエラーメッセージが出るため、Coding Agentもrmが無効化されている&trashを使えば良いことを認識できるようになります。

まとめ

Coding Agentが誤って重要なファイルを削除してしまうリスクを減らすために、trash コマンドの利用、すごくオススメです!

(普段使いでも便利!)

Discussion