70

私のシェルスクリプトでは、次の行を取得しました。

rm tempfl.txt
rm tempfl2.txt

これらが存在しない場合、次のエラー メッセージが表示されます。

rm: tempfl2.txt: No such file or directory
rm: tempfl.txt: No such file or directory

ファイルが存在する可能性があるため、常に表示されるわけではありませんが、これらのメッセージのみを抑制する方法はありますか?

4

6 に答える 6

97

次の 2 つのオプションがあります。

rm警告を抑制する

$ rm tempfl.txt 2> /dev/null

スクリプト出力をリダイレクトする/dev/null

$ ./myscript.sh 2> /dev/null

後者には、スクリプトによって生成される他のすべての警告メッセージが表示されないという欠点があります。

于 2013-03-28T09:59:48.723 に答える
76

command 2> /dev/null他の回答が示すように、エラー出力を捨てるために使用できますcommand

しかし、ここで何が起こっているのでしょうか?

>出力をリダイレクトするために使用される演算子です。2標準エラー出力ストリームへの参照です。つまり、2>エラー出力をリダイレクトします。

/dev/null提供された入力を飲み込むだけの「ヌルデバイス」です。この 2 つを組み合わせて、コマンドからの出力を効果的に捨てることができます。

完全な参照:

  • > /dev/null標準出力を捨てる
  • 1> /dev/null標準出力を捨てる
  • 2> /dev/nullstderrを捨てる
  • &> /dev/nullstdout stderrの両方を捨てる
于 2018-06-26T14:26:53.487 に答える
7

すべてのエラーメッセージを /dev/null のようにリダイレクトする必要があります

rm tempfl2.txt 2> /dev/null
于 2013-03-28T09:59:53.250 に答える
6

上記の回答に追加: エラー メッセージ (許可が拒否されたなど) を保持することをお勧めします。ファイルを削除する前に、ファイルの存在をテストするだけです。

[ -f file.txt ] && rm file.txt

これは、bash などの Bourne のようなシェルを想定しています。上記には、ディレクトリを削除しようとしないという追加の利点があります。何かrmを行うことはできません。

于 2013-03-28T10:09:20.137 に答える
5

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.

于 2014-02-19T14:50:02.390 に答える