web-dev-qa-db-ja.com

Linux:StdoutとStderrをリダイレクトします

Stdoutをファイルに書き込みたいだけでなく、stdoutとstderrを印刷します。私はティーを使ってみました:

prog | tee stdout.txt
 _

しかし、これにより、印刷されたSTDERRとSTDOUTが誤ってインターリーブされ、すなわち正しい出力がある場合

OUT1 ERR1
OUT2 ERR2
OUT3 ERR3
OUT4 ERR4
 _

tEEを使用すると、それらを順番に印刷することができます。

ERR1 ERR2
OUT1
OUT2 
OUT3 ERR3 
OUT4
ERR4
 _

STDOUTとSTDERRの両方を画面に印刷する方法はあり、また印刷出力を吸い上げることなくSTDOUTをファイルに書き込むことですか。

3
Lie Ryan

Stdoutをファイルに転送してから、テールを使用してファイルの内容を書き込むと表示されます。つまり、2つの端末が開いている必要があります。

端末1:

prog > stdout.txt

端子2:

tail -f stdout.txt

したがって、ターミナル2では、Stdout.txtに書き込まれ、ターミナル1でStdDerrが表示されるため、STDOUTの内容が表示されます。 STDOUTとSTDERRの両方をファイルに転送することもでき、同じことを実行できます。その場合はprog >& outerr.txtを使用する必要があります。 (これはTCSHに取り組みますが、あなたもbashでそれをすることができます。)

1
blahbaa