コピーにファイルがない場合は、開発者にnullを送信する代わりにエラーを表示しません。

コピーにファイルがない場合は、開発者にnullを送信する代わりにエラーを表示しません。

存在しないファイルをcpとして処理しようとすると、スクリプトでエラーが発生しないようにしたいと思います。しかし、権限の欠如などの他のエラーについては、エラーメッセージを印刷したいと思います。これはdev / nullにメッセージを送信できないことを意味します。スクリプトでこれを実行できる他のソリューションは何ですか?

1つのオプションは、コピー前にファイルが存在することを確認するためにifステートメントを使用することですが、このアプローチはやや混乱しているようです。ファイル名に*を追加すると、欲しいものが得られると思います。奇妙な方法のように見えますが。私が望むものを得ることができるコマンドライン引数や他の方法はありますか?

ベストアンサー1

あなたは次のようになります:

{ command <doesntexist cp doesntexist 2>&3 ; } 3>&2 2>/dev/null

サブシェルでは短くすることができます...

( <file cp file ... 2>&3 ) 3>&2 2>/dev/null

しかし、まだ遠いようです...

[ -r file ] && cp file ...

これらのファイルはすべて読み取り可能なテストファイルです。ディレクトリでは機能しません。

しかし...

[ -e file ] && cp file ...

...できます...

おすすめ記事