Многие программы, которые генерируют цветной вывод, обнаруживают, пишут ли они в TTY, и отключают цвета, если это не так. Это связано с тем, что цветовые коды раздражают, когда вы хотите захватить только текст, поэтому они пытаются автоматически «делать правильные вещи».
Самый простой способ получить вывод цвета из такой программы - сказать ей писать цвета, даже если она не подключена к TTY. Вам нужно будет прочитать документацию программы, чтобы узнать, есть ли у нее эта опция. (например, grep
имеет --color=always
возможность.)
Вы также можете использовать expect
скрипт unbuffer
для создания псевдо-tty, как это:
echo barney | unbuffer grep barney | sed -n 1,$\ p
less
может принимать цветной ввод текста (хорошо :) ... например:tree -C ~/ |less -R
илиls -lR --color=always . |less -R