better-rm — より安全な rm コマンド

Tool

概要

better-rm は、Unix/Linux 環境での誤削除を防ぐために設計された軽量な rm 代替ツールです。標準の rm と同等の引数互換性を保ちつつ、実際の削除処理は「ゴミ箱」へ移動する方式を採用します。重要なシステムディレクトリやプロジェクトディレクトリ(例: /, /home, /usr, .git など)への削除を検出して拒否し、ゴミ箱内では元のパス構造を保持するため復元が容易です。エイリアス経由での導入が推奨され、環境変数でゴミ箱の場所をカスタマイズできます。カラフルな出力と冗長モードで操作の可視化も行えます。

GitHub

リポジトリの統計情報

  • スター数: 125
  • フォーク数: 6
  • ウォッチャー数: 125
  • コミット数: 6
  • ファイル数: 2
  • メインの言語: Shell

主な特徴

  • ゴミ箱機構:削除はゴミ箱へ移動し復元可能にする
  • 重要パス保護:システムやプロジェクトの重要ディレクトリ削除を防止
  • rm 互換性:-r, -f, -i, -v など主要オプションをサポート
  • カスタマイズ:環境変数でゴミ箱の場所を指定、カラフルな出力で操作を可視化

技術的なポイント

better-rm はシンプルなシェルスクリプトで、主に以下の実装方針を取っています。まず入力された引数を解析し、-r(再帰)、-f(強制)、-i(対話)、-v(冗長)といったフラグを標準的な rm と同じ意味で扱います。削除対象ごとに絶対パスを解決し、あらかじめ定義された「保護リスト」(/, /home, /usr, .git 等)に該当する場合は操作を中止してユーザーに警告します。実際の削除は単純に mv でゴミ箱ディレクトリへ移動することで実現し、ゴミ箱内では元のルートからの相対パスを再現するディレクトリ構造を作るため、どこから削除されたファイルかが一目で分かります。

移動がファイルシステムを跨ぐ場合の扱いとしては、mv が失敗したら cp(または rsync)でコピー後に元を削除するフォールバックを提供すると想定されます(大容量ファイルや特殊ファイルは注意が必要)。ファイル権限、所有者、シンボリックリンクの扱いは POSIX のツールに依存するため、パーミッションや SELinux コンテキストを保持する必要がある環境では追加の考慮が必要です。タイムスタンプや衝突回避のためにファイル名にタイムスタンプやユニークIDを付加する戦略も取りえます。復元はゴミ箱内のパスを元の場所へ mv するだけで済む設計で、ゴミ箱の管理(自動削除や容量制限)は拡張機能として後から実装可能です。

スクリプトは軽量で依存が少ないため、ほとんどの Unix 系システムで動作しますが、エイリアスでの導入を推奨しており、/bin/rm を上書きしないことで問題発生時に元の rm を容易に利用できます。ログ出力や —dry-run モード、復元用のユーティリティ追加など、将来的な拡張余地も明確です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • better-rm: file

まとめ

シンプルで安全性重視の rm 代替。誤削除対策に有用。

リポジトリ情報: