2013-03-28 12 views
23

私はこれらの行だ:これらは、私はエラーメッセージを取得存在しない場合抑制シェルスクリプトのエラーメッセージ

rm tempfl.txt 
rm tempfl2.txt 

を:

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

のみこれらを抑制するための方法はありますファイルが存在する可能性があるため、常に表示されるとは限りません。

+0

ここをクリックしてください:http://stackoverflow.com/questions/12785533/command-not-found-message-is-redirected-too – ConcurrentHashMap

答えて

40

あなたは2つのオプションがあります。後者は、他のすべての警告メッセージを欠落しているという欠点を持っている

抑制rm警告

$ rm tempfl.txt 2> /dev/null 

リダイレクトスクリプトの出力/dev/null

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

にしますあなたのスクリプトによって生成されます。

+2

rm -fは慎重に使用してください。 – hetepeperfan

+0

良い点、ありがとう – kamituel

2

あなたは

上記の回答に追加
rm tempfl2.txt 2> /dev/null 
2

のように/ dev/nullにすべてのエラーメッセージをリダイレクトする必要があります。(許可拒否またはそのようないくつかのような)エラーメッセージを維持するために、おそらく良いアイデアです。

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

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

+0

ありがとう、これもうまくいった –

5

は、このコマンドを試してみてください。

rm -f tempfl.txt 

は、-fオプションは、このような役割を果たし:

-f, --force ignore nonexistent files, never prompt 

ファイルがない場合には、コマンドが非ゼロのエラーコードを報告しません。存在する。

+0

あなたの答えの詳細を教えてください。 – GraphicsMuncher

0

我々は成功終了状態を確保するために、出力誤差と|| trueを抑制するために2> /dev/nullを使用することができます。

rm foo 
=> rm: cannot remove ‘foo’: No such file or directory 

rm foo 2> /dev/null 
echo $? 
=> 1 

rm foo 2> /dev/null || true 
echo $? 
=> 0 

あなたは多分あなたはこれを必要とするなど、シェルスクリプトでメイクファイルをコマンドを使用している場合。