190

rmBASHスクリプト内で多くのファイルを削除するために使用しています。ファイルが存在しない場合があるため、多くのエラーが報告されます。このメッセージは必要ありません。rm静かにするコマンドをmanページで検索しましたが、見つけた唯一のオプションは-f、「存在しないファイルを無視し、プロンプトを表示しない」という説明から正しい選択のようですが、名前が合わないようです。 、だから私はそれが意図しない結果をもたらすかもしれないと心配しています。

  • -fオプションは沈黙する正しい方法ですかrm?なぜ呼ばれないの-qですか?
  • このオプションは他に何かしますか?
4

6 に答える 6

248

の主な用途は、それ自体-fでは削除されないファイルを強制的に削除することrmです(特別な場合として、存在しないファイルを「削除」して、エラーメッセージを抑制します)。

を使用してエラーメッセージをリダイレクトすることもできます

$ rm file.txt 2> /dev/null

(またはオペレーティングシステムの同等のもの)。$? 呼び出し直後のの値をチェックしてrm、ファイルが実際に削除されたかどうかを確認できます。

于 2012-04-20T16:58:13.953 に答える
83

はい、-fこれに最も適したオプションです。

于 2012-04-20T13:45:58.953 に答える
33

-fは正しいフラグですが、テストオペレーターの場合、rmではありません

[ -f "$THEFILE" ] && rm "$THEFILE"

これにより、ファイルが存在し、通常のファイル(ディレクトリ、デバイスノードなどではない)であることが保証されます。

于 2013-06-12T20:47:49.570 に答える
17

\rm -f file見つからないことを報告することはありません。

于 2012-10-24T16:55:04.333 に答える
6

rm -f「その他のこと」を行う限り、確認を求められる状況では、サイレント削除を強制します(-f省略形)。たとえば、自分が書き込み可能なディレクトリから自分が書き込みできないファイルを削除しようとした場合です。--forcerm

于 2012-04-20T16:51:23.080 に答える
-10

cshellでも同じ問題が発生しました。私が持っていた唯一の解決策は、スクリプトの「rm」の前のパターンに一致するダミーファイルを作成することでした。

于 2014-05-28T17:53:22.620 に答える