私のシェルスクリプトでは、次の行を取得しました。
rm tempfl.txt
rm tempfl2.txt
これらが存在しない場合、次のエラー メッセージが表示されます。
rm: tempfl2.txt: No such file or directory
rm: tempfl.txt: No such file or directory
ファイルが存在する可能性があるため、常に表示されるわけではありませんが、これらのメッセージのみを抑制する方法はありますか?
私のシェルスクリプトでは、次の行を取得しました。
rm tempfl.txt
rm tempfl2.txt
これらが存在しない場合、次のエラー メッセージが表示されます。
rm: tempfl2.txt: No such file or directory
rm: tempfl.txt: No such file or directory
ファイルが存在する可能性があるため、常に表示されるわけではありませんが、これらのメッセージのみを抑制する方法はありますか?
次の 2 つのオプションがあります。
rm
警告を抑制する
$ rm tempfl.txt 2> /dev/null
スクリプト出力をリダイレクトする/dev/null
$ ./myscript.sh 2> /dev/null
後者には、スクリプトによって生成される他のすべての警告メッセージが表示されないという欠点があります。
command 2> /dev/null
他の回答が示すように、エラー出力を捨てるために使用できますcommand
しかし、ここで何が起こっているのでしょうか?
>
出力をリダイレクトするために使用される演算子です。2
標準エラー出力ストリームへの参照です。つまり、2>
エラー出力をリダイレクトします。
/dev/null
提供された入力を飲み込むだけの「ヌルデバイス」です。この 2 つを組み合わせて、コマンドからの出力を効果的に捨てることができます。
完全な参照:
> /dev/null
標準出力を捨てる1> /dev/null
標準出力を捨てる2> /dev/null
stderrを捨てる&> /dev/null
stdout と stderrの両方を捨てるすべてのエラーメッセージを /dev/null のようにリダイレクトする必要があります
rm tempfl2.txt 2> /dev/null
上記の回答に追加: エラー メッセージ (許可が拒否されたなど) を保持することをお勧めします。ファイルを削除する前に、ファイルの存在をテストするだけです。
[ -f file.txt ] && rm file.txt
これは、bash などの Bourne のようなシェルを想定しています。上記には、ディレクトリを削除しようとしないという追加の利点があります。何かrm
を行うことはできません。
Try this command:
rm -f tempfl.txt
the -f option acts like this:
-f, --force ignore nonexistent files, never prompt
The command also doesn't report a non-zero error code in case the file doesn't exist.