端末に色を正しく表示するには、gccパイプを減らしてください。

端末に色を正しく表示するには、gccパイプを減らしてください。

私は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コマンドではありません。どうすればいいですか?

メモ:

  • SSH経由でこのコンピュータに接続しました。TERM=xterm-256color
  • パイプを使用せずにless端末から色を取得できます。

答え1

リクエストに応じて回答として投稿しました。

ここには2つの質問があります。

  • デフォルトでは、gccカラーコードは出力が端末にある場合にのみ印刷されます。
  • デフォルトでは、less生の色文字は端末に送信されません。

gccオプションを渡すことで、カラーコードを強制的に印刷できます-fdiagnostics-color=always。これにより、解析コンパイラエラーに依存するさまざまなツールがクラッシュします。

あるいは、オプションを渡してlessカラーコードを端末に強制的に送信することもできます。後者は実際のANSIカラーコードのみを受け入れるので、より安全です。-r-R

結論として:

gcc -fdiagnostics-color=always a.c 2>&1 | less -R

関連情報