配信のために、プログラムの完全な出力をtxtファイルに出力するようにアドバイスされています。また、実行スクリプトに実装したコマンド「time」を使用して実行時間を出力する必要があります。
#!/bin/bash
time ./blur-effect 4k.png 4k_out16.png 16 15 &>> Output.txt
私が抱えている問題は、プログラムの出力がtxtファイルに正しく送られることですが、実行時間はターミナルに表示されていますが、事前にヒントやヘルプをありがとう、txtファイルにも出力する必要があります。
コマンドグループまたはサブシェルでコマンドをラップする場合は、希望どおりに機能するはずです。
{ time ./blur-effect 4k.png 4k_out16.png 16 15 ; } &>> Output.txt
または
(time ./blur-effect 4k.png 4k_out16.png 16 15) &>> Output.txt
Bashでは、time
は パイプラインのシェルキーワード であり、ストリームのリダイレクトを解釈して、時限コマンド(パイプライン)でのみ発生するようにします。また、よくある* nixユーティリティプログラムでもあります。
$ type -a time
time is a Shell keyword
time is /usr/bin/time
time
との間でストリームをリダイレクトしたい場合は、 steeldriverの回答で説明されているコマンドグループまたはサブシェル を使用するか、 time(1)
を呼び出します。 ユーティリティプログラムを明示的に:
/usr/bin/time COMMAND... &> LOGFILE
または、time
の完全なパスがわからない場合
time="$(which time)"
"$time" COMMAND... &> LOGFILE
PS:time(1)
コマンドの出力を、コマンドの標準エラー出力(デフォルト)に接続されていないファイルに保存できます。これにより、時限プログラムの標準エラー出力を、 -o
オプション。 -a
は、ファイルを上書きする代わりに、time
をそのファイルに追加します。
/usr/bin/time [-a] -o time.log COMMAND... >command-stdout.log 2>command-stderr.log
Wordのtime
シェルキーで同じ効果を得るには(通常、上書きする代わりに>>
リダイレクトの代わりに>
を使用して追加します):
{ time COMMAND... >command-stdout.log 2>command-stderr.log; } 2>time.log
または、時間ログを保存し、時間指定プログラムの標準エラー出力はそのままにしておきます。
{ time COMMAND... 2>&3; } 3>&2 2>time.log