RM(1)

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

書式
rm [-f | -i] [-dPRrW] file ...

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

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

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

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

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

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

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

-r  -R と同じです。

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

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

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

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

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

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

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

互換性
rm は、 -f オプションが存在しないファイルに対するエラーのみをマスクする点が伝統的 実装と異なります。

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

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

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