BASHスクリプト内でrm
を使用して、多くのファイルを削除しています。ファイルが存在しない場合があるため、多くのエラーが報告されます。このメッセージは必要ありません。私はrm
を静かにするコマンドをマニュアルページで検索しましたが、見つかった唯一のオプションは-f
です。選択はできますが、名前が合わないようですので、意図しない結果になるかもしれません。
-f
オプションはrm
を黙らせる正しい方法ですか?なぜ-q
と呼ばれないのですか?-f
の主な用途は、rm
自体を使用して削除されないファイルを強制的に削除することです(特別な場合として、存在しないファイルを「削除」し、エラーメッセージを抑制します) 。
また、単にエラーメッセージをリダイレクトすることもできます
$ rm file.txt 2> /dev/null
(またはオペレーティングシステムの同等)。 rm
を呼び出した直後に$?
の値を確認して、ファイルが実際に削除されたかどうかを確認できます。
はい、-f
はこれに最も適したオプションです。
-fは正しいフラグですが、テストオペレーターの場合はrmではありません
[ -f "$THEFILE" ] && rm "$THEFILE"
これにより、ファイルが存在し、通常のファイル(ディレクトリ、デバイスノードなどではない)になります。
\rm -f file
は、見つからないことを報告しません。
rm -f
が「他のこと」を行う限り、rm
が確認を求めてくる状況では、強制的に(-f
は--force
の短縮形)サイレント削除を行います。たとえば、書き込み可能なディレクトリから書き込みできないファイルを削除しようとした場合。