RM(1)

名称
rm, unlink - ディレクトリエントリの削除

書式
rm [-dfiIPRrvW] file ... unlink file

解説
rm は、 コマンドラインから指定された非ディレクトリタイプのファイルを削除します。 指定されたファイルに書き込みパーミッションがなく、 標準入力がターミナルだった場合、 削除を実行してよいかどうかの確認を (標準エラー出力を使って) 求めます。

オプションとしては以下のものがあります:

-d  ディレクトリも、他のタイプのファイルと同様に削除します。本オプション なしに file としてディレクトリを指定した場合、エラーになります。

-f  ファイルのパーミッションに関わらす、確認せずにファイルの 削除を行います。 ファイルが存在しない場合にもエラーメッセージは表示せず、終了ステータス もエラーを返しません。 -f オプション以前に書かれた -i オプションを無視します。

-i  ファイルのパーミッションや標準入力がターミナルであるかどうかに関わらず、 指定された各ファイルを削除する前に、確認を求めるようになります。 -i オプション以前に書かれた -f オプションを無視します。

-I  3 個より多いファイルの削除、またはディレクトリの再帰的な削除をしようとした場合には、 一度確認を求めるようになります。 このオプションは -i ほど煩わしくはありませんが、誤りの防止に対してはほぼ同じ程度の効果があります。

-P  ファイルを削除する前に上書きします。まず 0xff のバイトパターンで、次に 0x00 で、そして最後にもう一度 0xff で上書きし、削除します。

-R  引数 file として指定したディレクトリを再帰的に削除します。 -R オプションは、暗黙のうちに -d オプションが指定されたものとします。 -i オプションが指定されているときには、最初にディレクトリを 削除する/しないの確認が求められ、さらに奥のディレクトリについても 各ディレクトリの中身の削除に移る前に確認が求められます。 確認に対して削除すると答えなかった場合には、それ以下のディレクトリは スキップされます。

-r  -R と同じです。

-v  ファイルを削除するときに冗長になり、削除する時ファイルを表示します。

-W  削除したファイルを回復しようとします。 現在このオプションは、 ホワイトアウトされたファイルを回復するためにのみ使用可能です。

rm は、シンボリックリンクを削除するときリンクは削除しますが、 リンクが参照しているファイルは削除しません。

ファイル “”. と “..” を削除しようとするとエラーになります。

本ユーティリティが unlink として呼ばれた場合、非ディレクトリの単一引数のみが指定可能です。 この単純モード動作では、オプションは指定不可であり、渡された引数に対し unlink(2) 動作を実行します。

指定したファイルをすべて削除した場合か、 -f オプションが指定され、存在するファイルがすべて削除された場合に 0 を返します。 エラーが起きた場合は 0 より大きな値を返します。

注
rm は引数をパースするために getopt(3) を使用します。getopt は ‘--’ 引数を受け付けます。これはフラグオプションの読み込みを終了させます。 それゆえ、ダッシュ (‘-’) で始まるファイルを削除できます。 例えば:
    rm -- -filename
絶対もしくは相対参照を用いることで同様の効果が得られます。 例えば:
    rm /home/user/-filename
    rm ./-filename

関連項目
chflags(1), rmdir(1), undelete(2), unlink(2), fts(3), getopt(3), symlink(7)

バグ
-P オプションではファイルシステムが固定ブロック長であると仮定されます。 UFS は固定長ファイルシステムですが、LFS はそうではありません。 さらに、通常ファイルは上書きされますが、それ以外の種類のファイルは 上書きされません。

互換性
rm は、 -f オプションが存在しないファイルに対するエラーのみをマスクする点が伝統的 実装と異なります。 -v は標準ではありませんし、スクリプト中での使用はお勧めしません。

また、伝統的 BSD 実装では標準エラー出力ではなく標準出力に確認が出力されていました。

規格
rm コマンドは、 p1003.2 互換です。

単純化された unlink は susv2 準拠です。

歴史
rm コマンドは AT&T UNIX から登場しました。