任意のコマンドをシェル(bash)で実行した時に、
標準出力と標準エラー出力を別々のファイルに書き出して、
さらにコンソールに表示するコマンドの書き方はありますでしょうか?
実現したい事
--------------------
標準出力はstdout.txtに保存
標準エラー出力はerror.txtに保存
さらにコンソールには
標準出力とエラー出力の両方を表示したい。
--------------------
参考情報
■標準出力をファイルとコンソールに出力し、
エラー出力を別のファイルに書き出すコマンド
$コマンド 2>erro.txt | tee stdout.txt
■標準出力とエラー出力を同一のファイルに書き出し
、コンソールにも表示させる方法
$コマンド 2>&1 | tee same.txt
ここまでは分かったのですが、上記の方法を実現する方法
が分かりません。
シェルスクリプトのデバックに標準出力とエラー出力を
分けてファイルに書き出す事ができれば便利かと思いメールしました。
■下記の過去データを参考にしたのですが良い方法が思いつきませんでした。
http://search.luky.org/vine-users.6/msg05076.html
以上、
From: tack <ta...@myrealbox.com>
Date: Tue, 23 Mar 2004 00:01:54 +0900
> 実現したい事
> --------------------
> 標準出力はstdout.txtに保存
> 標準エラー出力はerror.txtに保存
> さらにコンソールには
> 標準出力とエラー出力の両方を表示したい。
> --------------------
「コンソール」は本当のコンソール(/dev/console)なのですか?
それとも、プログラムを実行する端末(tty/pty) のことでしょうか?
後者だとして、とりあえず
$ mkfifo p_stdout
$ mkfifo p_stderr
$ tee stdout.txt < p_stdout &
$ tee stderr.txt < p_stderr &
$ コマンド 1> p_stdout 2> p_stderr
$ rm p_std???
で、できました。
一つのコマンドにパイプが複数必要なら、最初から mkfifo で明
示的に(named-)パイプを作ってあげればいいのではないかと。
スマートじゃない気がするけど、他に思いつきませんでした。
なお、FIFO は一つだけ作れば、もう一方はシェルのパイプで十
分です。
--
SEKINE Tatsuo:
tse...@sdri.co.jp System Design & Research Inst. Co.,Ltd.
tse...@isoternet.org ISOTERNET ASSOCIATION JAPAN
tse...@ylug.org Yokohama Linux Users Group
教えて頂いた、mkfifoコマンドを使用した所、
下記の実現したい機能ができました。ありがとうございます。
>> 実現したい事
>> --------------------
>> 標準出力はstdout.txtに保存
>> 標準エラー出力はerror.txtに保存
>> さらにコンソールには
>> 標準出力とエラー出力の両方を表示したい。
>> --------------------
Tue, 23 Mar 2004 01:38:20 +0900
---
>「コンソール」は本当のコンソール(/dev/console)なのですか?
>それとも、プログラムを実行する端末(tty/pty) のことでしょうか?
「コンソール」と記述していたのは、プログラムを実行する
端末(tty/pty)です。
> $ mkfifo p_stdout
> $ mkfifo p_stderr
> $ tee stdout.txt < p_stdout &
> $ tee stderr.txt < p_stderr &
> $ コマンド 1> p_stdout 2> p_stderr
> $ rm p_std???
>
>で、できました。
>
>一つのコマンドにパイプが複数必要なら、最初から mkfifo で明
>示的に(named-)パイプを作ってあげればいいのではないかと。
>
>なお、FIFO は一つだけ作れば、もう一方はシェルのパイプで十
>分です。
こちらも試してみた所、上手く行きました。
mkfifoコマンドはじめて使用しました、
色々と応用してみたいと思います。
以上、