
NAS でエラーをリダイレクトする方法が見つかりません。
シェルは/bin/sh
、使用すると> mylogfile.log 2>&1
ターミナルにエラーが印刷されます。具体的なコマンドは
find /volume1/ | grep "totoro" > ~/totoro.log 2>&1
からのエラーが表示されますfind
。リダイレクトを機能させる方法はありますか?find
ログ ファイルにエラーを書き込むにはどうすればいいですか?
答え1
find /volume1/ | grep "totoro" > ~/totoro.log 2>&1
あなただけに2>&1
影響しgrep
、 には影響しませんfind
。以下のコマンドでは、最初のもの2>&1
が に影響しますfind
:
find /volume1/ 2>&1 | grep "totoro" > ~/totoro.log 2>&1 # probably wrong
find
しかし、これはからstdout とともに stderr を に送信します。からの stderr をフィルターしgrep
たくないでしょう。おそらく、合成コマンド全体の stdout と stderr をキャプチャしたいのでしょう。そうであれば、明示的なサブシェルでコマンドを実行し、その出力とエラー ストリームをリダイレクトします。grep
find
(find /volume1/ 2>&1 | grep "totoro") > ~/totoro.log 2>&1
答え2
「tee」コマンドを参照してください。このコマンドは標準入力から読み取り、標準出力とファイルに書き込みます。ここではこれが役立ちます。