Para canalizar diff colorido para menos:
diff $file1 $file2 | colordiff | less -r
Para torná-lo mais legível, limitando-o a uma única tela:
diff -uw $file1 $file2 | colordiff | less -r
E, para fazer com que menos não seja exibido se houver apenas uma tela com conteúdo:
diff -uw $file1 $file2 | tee /dev/stderr | colordiff | less -r -F
O -F faz com que menos feche imediatamente se houver menos de uma tela com conteúdo, o canal para stderr ocorre porque quando menos fecha você perde a saída - ao canalizar para stderr, ele obtém saída mesmo que menos não seja exibido.
Uma maneira alternativa (e, na minha opinião, melhor) é usar apenas -X para evitar menos limpeza da tela:
diff -uw $file1 $file2 | colordiff | less -r -X -F
Isso funciona bem para mim, mas pode ser específico para o bash. O colordiff não é um built-in, mas é facilmente instalado.
less -RM +Gg
: superuser.com/questions/64972/…