Есть ли способ, чтобы текст передавался в голову, хвост, меньше и т. Д., Чтобы он был цветным?

26

Есть ли способ сохранить раскрашивание текста проходит через трубу |вhead , tail, lessи т.д.?

Тимофей Горшков
источник
Любая конкретная программа вывода? Это зависит от программы, отправляющей данные через канал. headи tailт. д. не те, кто удаляет цвета, это программа, генерирующая данные, которые обычно проверяют, идет ли вывод на консоль (цветной), в файл или канал (не цветной).
KurzedMetal

Ответы:

15

Я предполагаю, что вы по трубам lsи хотите сохранить цветовые коды терминала. Вы можете сказать ls --color=always(вместо значения по умолчанию--color=auto ), который сохранит коды, но это не гарантирует, что объект, к которому вы подключаетесь, знает, как их понимать.

Если вы используете glarkвместо grepнего будет пытаться отображать с цветами.

Если вы используете lessс -Rним будет пытаться отображать с цветами.

phogg
источник
6
Я по трубам git. Я обнаружил, что он имеет аналогичную конфигурацию (например git config color.diff always), которая сохраняет окраску.
Тимофей Горшков
1
@Errandir проблема с этой конфигурацией в том, что она сломает любой скрипт или команду, которые используют git diffвывод в качестве входных данных, потому что она всегда будет выводить управляющие коды ANSI.
KurzedMetal
@ Эррандир, спасибо! У меня нет скриптов, которые основаны на чистом выводе из git diff, так что это работает для меня! Спасибо !
Ашутош Джиндал
Я использовал это для grep: grep "string" file.txt | headчтобы убедиться, что результат от grep был окрашен, я просто изменил это наgrep "string" file.txt --color=always | head
Emil Stenström
13

Это зависит от программы, которая генерирует вывод в трубе.

headи tailт. д. не те, кто удаляет цвета, это программа, генерирующая данные, которые обычно проверяют, идет ли вывод на консоль (цветной), файл или канал (не цветной)

Я обнаружил еще один SU Q & A, показывающий, как лгать программам для вывода данных, как если бы они отправляли вывод на консоль (эмулируя консоль с помощью unbuffer)

KurzedMetal
источник
Есть ли способ сохранить раскраску в color=autoрежиме (чтобы программа думала, что вывод идет на консоль, а не на канал)?
Тимофей Горшков
@KurzedMetal Как программа, например head, tailи т. Д. Обнаруживает, что она передается другой программе (чтобы она могла генерировать данные без цветов и т. Д.).
Хорхе Букаран
@JorgeBucaran stackoverflow.com/a/7601564/236871
KurzedMetal