web-dev-qa-db-ja.com

ファイルが見つからなかったことをrmが報告しないようにする方法は?

BASHスクリプト内でrmを使用して、多くのファイルを削除しています。ファイルが存在しない場合があるため、多くのエラーが報告されます。このメッセージは必要ありません。私はrmを静かにするコマンドをマニュアルページで検索しましたが、見つかった唯一のオプションは-fです。選択はできますが、名前が合わないようですので、意図しない結果になるかもしれません。

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

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

また、単にエラーメッセージをリダイレクトすることもできます

$ rm file.txt 2> /dev/null

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

186
chepner

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

62
Satya

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

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

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

22
technosaurus

\rm -f fileは、見つからないことを報告しません。

10
vimdude

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

4
Idelic