49
ls -l --color=auto | tee output.log

Без трубы / тройника она цветная. Как я могу сделать так, чтобы он оставался цветным при использовании tee (можно раскрашивать только на экране, меня не волнуют цвета в журналах).

2 ответа2

72

Просто вставьте unbuffer перед любой командой, чтобы заставить его думать, что он записывает в интерактивный вывод, даже если он фактически транслируется в другой исполняемый файл. Это сохранит цвет в случае ls .

Например

unbuffer ls -l --color=auto | tee output.log

Если он еще не установлен, в Ubuntu и других дистрибутивах Debian-ish Linux вы можете установить unbuffer , выполнив.

sudo apt-get install expect-dev
9

Используйте опцию ls --color=always

--color=auto не будет выводить цвета на конвейер - по понятным причинам.

На главной странице написано следующее:

При --color = auto цветовые коды выводятся, только если стандартный вывод подключен к терминалу (tty).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .