私はこのようなコマンドを実行しています:パイプ全体のstderrをファイルにリダイレクトする方法は?
mycmd1 | mycmd2 | mycmd3 | lp
ではなく、各コマンドのためにそれを繰り返すの全体のパイプ用のファイルに標準エラー出力をリダイレクトする方法はありますか?言うことです
、私はむしろこれをやって回避したい:
mycmd1 2>/myfile | mycmd2 2>/myfile | mycmd3 2>/myfile | lp 2>/myfile
私はこのようなコマンドを実行しています:パイプ全体のstderrをファイルにリダイレクトする方法は?
mycmd1 | mycmd2 | mycmd3 | lp
ではなく、各コマンドのためにそれを繰り返すの全体のパイプ用のファイルに標準エラー出力をリダイレクトする方法はありますか?言うことです
、私はむしろこれをやって回避したい:
mycmd1 2>/myfile | mycmd2 2>/myfile | mycmd3 2>/myfile | lp 2>/myfile
どちらか
{ mycmd1 | mycmd2 | mycmd3 | lp; } 2>> logfile
または
(mycmd1 | mycmd2 | mycmd3 | lp) 2>> logfile
が動作します。 (最初のバージョンには、シェルに応じて起動時間がわずかに(〜1ms)あるかもしれません)。
私は次のことを試みたが、動作しているようです:
(mycmd1 | mycmd2 | mycmd3 | lp) 2>>/var/log/mylogfile.log
私は追加したいので、私は>>
を使用毎回上書きするのではなく、ログファイルに保存します。
'{...; } 'は、サブシェルを作成しないのでより優れています。 – janos
なぜサブシェルは望ましくないのですか? – springloaded