bash では、 を呼び出すと、foo
そのコマンドからの出力が stdout に表示されます。
を呼び出すと、foo > output
そのコマンドからの出力がすべて指定されたファイル (この場合は「output」) にリダイレクトされます。
出力をファイルにリダイレクトしてstdout に表示する方法はありますか?
ベストアンサー1
必要なコマンドの名前はtee
:
foo | tee output.file
たとえば、stdout のみを気にする場合は次のようにします。
ls -a | tee output.file
stderr を含める場合は、次のようにします。
program [arguments...] 2>&1 | tee outfile
2>&1
チャネル 2 (stderr/標準エラー) をチャネル 1 (stdout/標準出力) にリダイレクトし、両方が stdout として書き込まれるようにします。また、コマンドの時点で指定された出力ファイルにも送信されますtee
。
さらに、ログ ファイルに追加する場合は、tee -a
次のように使用します。
program [arguments...] 2>&1 | tee -a outfile