私は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