は、どのように、まだ画面上に表示されたファイルとの両方のSTDOUT & STDERRにSTDEERをリダイレクトするには?ティー(CSH/tcshシェル)
ウェブ上で多くの方法が見つかりましたが、csh/tcshシェルでは機能しません。 しかし、私のコマンドは "bashシェル"では実行できません。
私は以下のようなものを知っている:
(コマンド>を/ dev/null)> &たSTDERR.log
をしかし、これは画面表示をマスクします。
は、どのように、まだ画面上に表示されたファイルとの両方のSTDOUT & STDERRにSTDEERをリダイレクトするには?ティー(CSH/tcshシェル)
ウェブ上で多くの方法が見つかりましたが、csh/tcshシェルでは機能しません。 しかし、私のコマンドは "bashシェル"では実行できません。
私は以下のようなものを知っている:
(コマンド>を/ dev/null)> &たSTDERR.log
をしかし、これは画面表示をマスクします。
tcsh
のIOリダイレクションオプションは、同時に、または単に標準出力stdoutとstderrをリダイレクトしています。
stdoutを/dev/tty
にリダイレクトし、stderrをstdoutに、そしてtee
にリダイレクトする方法もあります。
% (command > /dev/tty) |& tee stderr.log
これは、他の場所にパイプするスクリプトで使用されても、常にコンソールに書き込まれることに注意してください。
あなたはtcshの中から他のシェルを呼び出すことができるので、できることに言及する価値があります。
ボーン互換のシェルはstdoutをパイプすることしかできませんが、ファイルディスクリプタを操作する構文を持っています.3番目のファイルディスクリプタを一時記憶域として使用してstdoutとstderrをスワップできます。シーケンス3>&2 2>&1 1>&3 3>&-
は、これを実現し、ファイルディスクリプタ3
$ (command 3>&2 2>&1 1>&3 3>&- | tee stderr.log) 3>&2 2>&1 1>&3 3>&-
バッシュ、あなたは元<(...)
または宛先>(...)
などのコマンドを使用することができますzshのサポートプロセス置換、のようないくつかの他のシェルを閉じます。
$ command 2> >(tee stderr.log)
あなたが暴言を気にしない場合は、http://www.grymoire.com/unix/CshTop10.txtとhttp://www.perl.com/doc/FMTEYEWTK/versus/csh.whynotは(t)はcshの引用、リダイレクト、条件、およびエイリアスの荒削りのいくつかについてのいくつかのまともな情報を持っています。ただし、特定のバグに関する情報の一部は古くなっています。
しかし、STDERRとSTDERRの両方ではなく、STDERRをファイルにリダイレクトしたいだけです。 – user3867146
私の謝罪、私は誤解しました。 – Carpetsmoker