CSHとすべての出力(エラーを含む)をファイルに

CSHとすべての出力(エラーを含む)をファイルに

すべてのコンパイル結果をファイルとして保存する必要があります。太字が多すぎてみんなundefined reference見たいです。試してみましたが、ファイルにエラーがmakeall >& outありません。outundefined 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コマンドの標準出力と標準エラーとして機能する疑似端末を使用できます。

これを行うには、少なくとも次の実装で使用できますscriptutil-linux

script -qec 'stty raw -echo; exec makeall' out >& /dev/null

出力+エラー(ファイルに書き込まれることに加えて)を表示するには、(ホスト端末を生モードに切り替えないように)>& /dev/nullに置き換えます。< /dev/nullscriptout

関連情報