2016-11-02 4 views
0

は、どのように、まだ画面上に表示されたファイルとの両方のSTDOUT & STDERRにSTDEERをリダイレクトするには?ティー(CSH/tcshシェル)

ウェブ上で多くの方法が見つかりましたが、csh/tcshシェルでは機能しません。 しかし、私のコマンドは "bashシェル"では実行できません。

私は以下のようなものを知っている:

(コマンド>を/ dev/null)> &たSTDERR.log

をしかし、これは画面表示をマスクします。

+0

しかし、STDERRとSTDERRの両方ではなく、STDERRをファイルにリダイレクトしたいだけです。 – user3867146

+0

私の謝罪、私は誤解しました。 – Carpetsmoker

答えて

0

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.txthttp://www.perl.com/doc/FMTEYEWTK/versus/csh.whynotは(t)はcshの引用、リダイレクト、条件、およびエイリアスの荒削りのいくつかについてのいくつかのまともな情報を持っています。ただし、特定のバグに関する情報の一部は古くなっています。