すべてのコンパイル結果をファイルとして保存する必要があります。太字が多すぎてみんなundefined reference
見たいです。試してみましたが、ファイルにエラーがmakeall >& out
ありません。out
undefined reference
csh
を使用して実行する必要がありますmakeall
。
答え1
試してみましたmakeall |& tee out
か?これにより、画面とファイルのすべての内容が印刷されますout
。
答え2
あなたの意見によると、明らかな解決策が機能していないようです。試してみてくださいsh -c 'makeall >out 2>&1'
。フルパスを含めるためにそのセクションを変更するか、makeall
さまざまなフラグを追加する必要があるかもしれません。すべて一重引用符で囲まれていることを確認してください。
エラーが発生した場合はここに提供してください。
エラーはありませんが、出力ファイルでまだコンパイルエラーが発生していない場合は、スクリプトがmakeall
非常に奇妙なことをしていることはほぼ確実です。標準出力そして標準エラーファイル記述子。
答え3
makeall
スクリプト自体がstderrをターミナルデバイスまたはリダイレクトしている場合は、stderrを/dev/tty
リダイレクトしても役に立ちませんmakeall
。
cshのリダイレクトサポートは、Bourneやrcなどのシェルに比べて非常に限られているので、次のことを見るのが一般的です。
cmd >& /dev/null > /dev/tty
stderrだけをリダイレクトします(そしてstdout
以前と同じであると仮定するとttyでも)。
または:
(cmd1; cmd2 >& /dev/tty; cmd3) >& file.log
cmd2
ログファイルにリダイレクトしないでください。
これでリダイレクトが明示的に指定されているので、/dev/tty
唯一のオプションはファイル/dev/tty
に移動することですout
。
これには、makeall
コマンドの標準出力と標準エラーとして機能する疑似端末を使用できます。
これを行うには、少なくとも次の実装で使用できますscript
。util-linux
script -qec 'stty raw -echo; exec makeall' out >& /dev/null
出力+エラー(ファイルに書き込まれることに加えて)を表示するには、(ホスト端末を生モードに切り替えないように)>& /dev/null
に置き換えます。< /dev/null
script
out