Чтобы труба разноцветная, чтобы меньше:
diff $file1 $file2 | colordiff | less -r
Чтобы сделать его более читабельным, ограничив его одним экраном:
diff -uw $file1 $file2 | colordiff | less -r
И, чтобы меньше отображалось, если есть только один контент на экране:
diff -uw $file1 $file2 | tee /dev/stderr | colordiff | less -r -F
-F вызывает немедленное закрытие при меньшем количестве страниц, если экран содержит менее одного экрана. Канал к stderr объясняется тем, что при меньшем закрытии вы теряете выходные данные - при передаче по трубопроводу на stderr он получает выходные данные, даже если меньше не отображает.
Альтернативный (и, мне кажется, лучший) способ - просто использовать -X, чтобы не допустить менее четкой очистки экрана:
diff -uw $file1 $file2 | colordiff | less -r -X -F
Это хорошо работает для меня, но может быть специфичным для bash. Colordiff не является встроенным, но легко устанавливается.
less -RM +Gg
: superuser.com/questions/64972/…