「stdoutとstderrをファイルにリダイレクトし、stderrをコンソールに表示する方法」失敗したソリューション

「stdoutとstderrをファイルにリダイレクトし、stderrをコンソールに表示する方法」失敗したソリューション

まず参考にしてくださいstdoutとstderrをファイルにリダイレクトし、stderrをコンソールに表示する方法

この解決策は私にとって驚くべきことでした。コマンドがbash -cに渡されると、スクリプトとコマンドを呼び出します。私はより使いやすく(そしてリダイレクトの誤字や転置を防ぐために)グローバルマクロ/関数を書いた。何度も使って楽しんできました。

それから魔法をかけた

nice make -k -j 1 configure-host 

autotoolsで準備したビルド/インストールを開始します。 Make 出力が収集されませんでした。 実際、3つのmakeジョブ(ホスト構成、すべて、インストール)のそれぞれは、マイログファイルに2文字だけを入力します。

各出力ファイルは、ASCII 0とキャリッジリターン(0x300a)の2文字で構成されています。 makeによって生成された行と行が必要です。

頭を叩いてみましたが、何が起こっているのか理解できません。 3つの関連事項:

  1. 私はMSYS2 / MinGW-W64(XP 32ビット)を実行しています。
  2. 作る少なくとも6つのFDを使用して複数のリダイレクトを実行するautotoolsスクリプトを呼び出します。
  3. これ../構成自動ツールの一部がうまく動作します。

単純リダイレクトに戻るとき

nice  make -k -j 1 configure-host &>logfile

私は(静かな端末を使用して)ログファイルから多くのstdoutとstderrを収集します。


これは私のマクロです。

CAPTURELOG () {
  log=$1; shift; rm -f ${LOGS}/${log}.log;
  bash -c "$@" 2>&1 >>$LOGS/${log}.log | tee --append $LOGS/${log}.log; }

これがその呼び出しです:

export LOGS=/g/GNU-GCC/toolchain-avr/logs/D20161122.T023341
export MAKE_JOBS=1
  ...
CAPTURELOG build_gcc.configure-host nice make -k -j $MAKE_JOBS configure-host

実行は次のとおりです。

+ CAPTURELOG build_gcc.make.configure-host nice make -k -j 1 configure-host
+ log=build_gcc.make.configure-host
+ shift
+ rm -f /g/GNU-GCC/toolchain-avr/logs/D20161122.T023341/build_gcc.make.configure-host.log
+ bash -c nice make -k -j 1 configure-host
+ tee --append /g/GNU-GCC/toolchain-avr/logs/D20161122.T023341/build_gcc.make.configure-host.log

関連情報