web-dev-qa-db-ja.com

コンソールをファイルにリダイレクト/保存して、画面に表示したままにするにはどうすればよいですか?

プログラムの出力(stdout)をファイルに保存したいのですが、それでもリアルタイムで画面に出力を表示できます。

LinuxとWindowsの両方のソリューションが必要です。

2
sorin

Linuxでは、teeユーティリティを使用できます。

Windowsでは、PowerShellにはteecmdlet が含まれています。 cmdの場合、 separatetility をダウンロードしてインストールする必要があります。

4
blueadept

Linuxおよび同様のシステムの場合:

program | tee filename

teeプログラムは、標準入力に入ったものをすべて標準出力(catなど)に送信し、指定されたファイルに書き込みます。

同じ効果を得る別の方法は

program >filename 2>/dev/null &
tail -f filename

これにより、プログラムがバックグラウンドで実行され、標準出力がファイルにリダイレクトされます。次に、tail -fを使用すると、ファイルに書き込まれているデータをリアルタイムで追跡できます(または、ほぼ1秒の遅延)。 2>/dev/nullは、標準エラーストリームを非表示にして、tail -fの出力に干渉しないようにします。

1
David Z

Linux:command | tee logfile

Windows:cygwinをインストールしてから、次を実行します:command | tee logfile

1
MikeyB

Windowsの場合、これを行うことができます。

dir> directory.txt&typedirectory.txt

ここで、dirをアプリケーションに置き換えます。

出力のスクロールが速すぎる場合は、次を使用してください。

dir> c:\ directory.txt&type c:\ directory.txt |もっと

ただし、これでファイルの内容がリアルタイムで表示されるとは思いません。プロセスが終了するまで待つ必要があります。

0
ChrisF

Windowsでは、 GnuWin32 バージョンをダウンロードすると、teeを使用できます。これはLinuxアプリと同じで、 coreutilsパッケージ から取得されます。

ただし、注意点が1つあります。teeには独自のリターンコードがあるため、パイプされたプロセスからのエラーに気付くことはありません( Linuxを使用している場合を除き、それを回避する方法 )。

0
Pat