RM(1) | FreeBSD General Commands Manual | RM(1) |
名称
rm, unlink — ディレクトリエントリを削除する書式
rm | [ -f | -i][ -dIPRrvWx] file ... |
unlink | file |
解説
rm ユーティリティは、コマンド行で指定されたディレクトリでないタイプのファイルを削除することを試みます。ファイルのパーミッションに書き込み許可がなく、標準入力デバイスが端末であるなら、ユーザは、確認のために (標準エラー出力で) プロンプトが出されます。オプションは、次の通りです:
- -d
- 他のタイプのファイルと同様にディレクトリを削除することを試みます。
- -f
- ファイルのパーミッションにかかわらず、確認のためのプロンプトを出さずに、ファイルを削除することを試みます。ファイルが存在しなくても、診断メッセージを表示せず、またはエラーを反映する終了ステータスを修正しません。 -f オプションは、それ以前の -i オプションを上書きします。
- -i
- ファイルのパーミッション、または標準入力デバイスが端末であるかどうかにかかわらず、各ファイルを削除することを試みる前に、確認を要求します。 -i オプションは、それ以前の -f オプションを上書きします。
- -I
- 4 つ以上のファイルが削除されるか、またはディレクトリが再帰的に削除されているなら、もう一度確認を要求します。これは、誤りからほとんど同じレベルの保護をさらに提供する、 -i よりはるかに煩わしくないオプションです。
- -P
-
ファイルを削除する前に、通常ファイルに上書きします。ファイルは、ファイルが削除される前に、最初にバイトのパターン 0xff、次に 0x00 そして、次に再び 0xff で 3 度上書きされます。複数のリンクがあるファイルは、上書きも削除もされませんが、警告が発行されます。
-f オプションが指定されるなら、複数のリンクがあるファイルも上書きされ、削除されます。警告は、発行されません。
読み込み専用のファイルにこのフラグを指定することで、 rm は、エラーメッセージを生成して終了します。ファイルは、削除も上書きもされません。
注意: -P フラグは、セキュリティ機能と見なされていません ( 「バグ」を参照)。
- -R
- file 引数として指定したディレクトリを再帰的に削除します。 -R オプションは、 -d オプションの意味も含みます。 -i オプションが指定されるなら、(ディレクトリを削除する試みが行われる前と同様に) 各ディレクトリの内容が処理される前に、ユーザは、確認のためのプロンプトが出されます。ユーザが肯定的に答えないなら、そのディレクトリをルートとするファイル階層は、スキップされます。
- -r
- -R と同等です。
- -v
- ファイルが削除されるとき、それらを表示して、ファイルを削除しているとき、冗長にします。
- -W
- 指定されたファイルを削除を復活することを試みます。現在、union ファイルシステム ( undelete(2) 参照) のホワイトアウトによってカバーされているファイルを修復するためだけにこのオプションを使用することができます。
- -x
- 階層構造を削除するとき、マウントポイントと交差しません。
rm は、シンボリックリンクを削除するときリンクは、削除しますが、リンクが参照しているファイルは、削除しません。
ファイル /, . または .. を削除する試みは、エラーとなります。
ユーティリティが unlink として呼び出されるとき、ディレクトリであってはならない 1 つの引数だけが指定されます。渡された引数で unlink(2) 操作を実行するこの単純な操作のモードでオプションを提供できません。
終了ステータス
rm ユーティリティは、指定されたファイルまたはファイル階層がすべて削除されたなら、または -f オプションが指定され、既存のファイルまたはファイル階層がすべて削除されたなら、 0 で終了します。エラーが起きたなら、 rm は、値で >0 で終了します。注
rm コマンドは、その引数を解析するために、その時点でフラグオプションの処理を停止する、‘--
’オプションを受け付けることができる、
getopt(3) を使用します。これによって、ダッシュ (‘-’) で始まるファイル名の削除ができます。例えば:
rm -- -filename
絶対または相対パスの参照を使用することによって同じ振る舞いをもたらすことができます。例えば:
rm /home/user/-filename
rm ./-filename
-P が -f とともに指定されるとき、ファイルは、たとえハードリンクがあったとしても上書きされ、削除されます。
使用例
foobar ディレクトリ階層内に含まれているすべてのファイルを再帰的に削除します:
$ rm -rf foobar
これらのコマンドのいずれも、ファイル -f を削除します:
$ rm -- -f $ rm ./-f
互換性
rm ユーティリティは、 -f オプションのみがさまざまなエラーを隠す代わりに、存在しないファイルを削除する試みを隠す点において歴史的な実装と異なります。 -v オプションは、標準ではなく、スクリプトでの使用は、推奨されません。また、歴史的な BSD 実装は、標準エラー出力ではなく、標準出力でプロンプトが出されました。
規格
rm コマンドは、 IEEE Std 1003.2 (“POSIX.2”) に適合しています。単純化された unlink は、 Version 2 of the Single UNIX Specification (“SUSv2”) に適合しています。
歴史
rm コマンドは、 Version 1 AT&T UNIX で登場しました。バグ
-P オプションは、データが既存のオフセットに書き込まれるとき、基本的な記憶域がファイルブロックを上書きすると仮定します。ファイルシステムとその裏打ちの格納を含むいくつかのファクタが、この仮定を破るかもしれません。これは、含んでいますが、wear レベリング (leveling) アルゴリズムを使用している Flash メディアか、または裏打ちデータ格納がジャーナリングなどを行うとき、 Copy-On-Write 戦略 (例えば、スナップショットが使用されているとき、ZFS または UFS) を使用するファイルシステムを制限しません。さらに、通常ファイルだけが上書きされ、他のタイプのファイルは、そうではありません。April 25, 2013 | FreeBSD |