私はgccでファイルをコンパイルしています(実際には作成していますが、気にしないでください)。これにより、色付きのエラーメッセージがstderrに送信されます。私もです:
gcc a.c 2>&1 | less
しかし、私が得るのは次のような行です:
a.c: In function <E2><80><98>whatever(int)<E2><80><99>:
a.c:11:10: warning: etc etc
つまり、色ではなく数値のエスケープコードが表示されます。
SUの この答え のアドバイスに従ってみましたが、うまくいきませんでした。または、ls --color | less
は機能しますが、上記のgccコマンドは機能しません。私は何をすべきか?
ノート:
TERM=xterm-256color
で接続していますless
を経由せずに、ターミナルの色を取得します。要求に応じて回答として投稿します。
ここには2つの問題があります。
gcc
は、出力が端末である場合にのみカラーコードを印刷します。less
は未加工のカラー文字を端末に送信しません。オプション-fdiagnostics-color=always
を渡すことで、gcc
に強制的にカラーコードを印刷させることができます。これにより、コンパイラエラーの解析に依存するさまざまなツールが機能しなくなることに注意してください。
オプション-r
または-R
を渡すことにより、less
に強制的にカラーコードを端末に送信させることができます。後者は、実際のANSI色のコードのみを許可するため、より安全です。
要約すると:
gcc -fdiagnostics-color=always a.c 2>&1 | less -R