プログラムの出力(stdout)をファイルに保存したいのですが、それでもリアルタイムで画面に出力を表示できます。
LinuxとWindowsの両方のソリューションが必要です。
Linuxおよび同様のシステムの場合:
program | tee filename
tee
プログラムは、標準入力に入ったものをすべて標準出力(cat
など)に送信し、指定されたファイルに書き込みます。
同じ効果を得る別の方法は
program >filename 2>/dev/null &
tail -f filename
これにより、プログラムがバックグラウンドで実行され、標準出力がファイルにリダイレクトされます。次に、tail -f
を使用すると、ファイルに書き込まれているデータをリアルタイムで追跡できます(または、ほぼ1秒の遅延)。 2>/dev/null
は、標準エラーストリームを非表示にして、tail -f
の出力に干渉しないようにします。
Linux:command | tee logfile
Windows:cygwinをインストールしてから、次を実行します:command | tee logfile
Windowsの場合、これを行うことができます。
dir> directory.txt&typedirectory.txt
ここで、dir
をアプリケーションに置き換えます。
出力のスクロールが速すぎる場合は、次を使用してください。
dir> c:\ directory.txt&type c:\ directory.txt |もっと
ただし、これでファイルの内容がリアルタイムで表示されるとは思いません。プロセスが終了するまで待つ必要があります。
Windowsでは、 GnuWin32 バージョンをダウンロードすると、tee
を使用できます。これはLinuxアプリと同じで、 coreutilsパッケージ から取得されます。
ただし、注意点が1つあります。tee
には独自のリターンコードがあるため、パイプされたプロセスからのエラーに気付くことはありません( Linuxを使用している場合を除き、それを回避する方法 )。