web-dev-qa-db-ja.com

Bashでファイルが見つからないときにcpコマンドを静かにする方法は?

調べました map cpが、quietオプションが見つからないため、cpは「No such file or directory」を報告しません。

cpがファイルのコピーを試みたが失敗した場合、このエラーを出力しないようにするにはどうすればよいですか?

22
Village

さて、誰もが/dev/nullはエラーの表示を防ぎますが、別の方法があります。ファイルが存在するかどうかをテストし、存在する場合は、cpコマンドを実行します。

[[ -e f.txt ]] && cp f.txt ff.txt

この場合、最初のテストが失敗すると、cpは実行されず、エラーも発生しません。

30
jaypal singh

エラーメッセージのみを抑制したい場合:

cp original.txt copy.txt 2>/dev/null

ボットを抑制したい場合は、エラーメッセージと終了コードで次を使用します。

cp original.txt copy.txt 2>/dev/null || :
13
askmish

一般的な解決策は、stderrをbitbucketにリダイレクトすることです。

 cp old_file new_file 2>>/dev/null

そうすると、スクリプト内のバグが隠されます。つまり、さまざまな状況で静かに失敗します。私が使う >> のではなく >代わりにログファイルを使用する必要がある場合のリダイレクト。

6
rici

[〜#〜] stderr [〜#〜] に出力されるエラーと同様に、/dev/nullにリダイレクトします。

cp a b 2> /dev/null
2
sschuberth

リダイレクト:

cp ... 2>/dev/null
1
konsolebox
rsync -avzh --ignore-missing-args /path/to/source /path/to/destination

ignore-missing-args:無視されるエラーは、存在しないソースファイルに関連するエラーです。

0
Upen