Como uma resposta conforme solicitado.
Existem dois problemas aqui:
- Por padrão,
gcc
imprime códigos de cores somente quando a saída é um terminal. - Por padrão,
less
não envia caracteres de cor bruta para o terminal.
Você pode forçar o gcc
a imprimir códigos de cores passando a opção -fdiagnostics-color=always
. Tenha em atenção que isto irá quebrar várias ferramentas que dependem da análise de erros do compilador.
Você pode forçar o less
a enviar códigos de cores para o terminal, passando as opções -r
ou -R
. Este último é mais seguro, uma vez que só permite códigos para cores ANSI reais.
Resumindo:
gcc -fdiagnostics-color=always a.c 2>&1 | less -R