Есть ли способ сохранить раскрашивание текста проходит через трубу |
вhead
, tail
, less
и т.д.?
Есть ли способ сохранить раскрашивание текста проходит через трубу |
вhead
, tail
, less
и т.д.?
Ответы:
Я предполагаю, что вы по трубам ls
и хотите сохранить цветовые коды терминала. Вы можете сказать ls --color=always
(вместо значения по умолчанию--color=auto
), который сохранит коды, но это не гарантирует, что объект, к которому вы подключаетесь, знает, как их понимать.
Если вы используете glark
вместо grep
него будет пытаться отображать с цветами.
Если вы используете less
с -R
ним будет пытаться отображать с цветами.
git
. Я обнаружил, что он имеет аналогичную конфигурацию (например git config color.diff always
), которая сохраняет окраску.
git diff
вывод в качестве входных данных, потому что она всегда будет выводить управляющие коды ANSI.
grep "string" file.txt | head
чтобы убедиться, что результат от grep был окрашен, я просто изменил это наgrep "string" file.txt --color=always | head
Это зависит от программы, которая генерирует вывод в трубе.
head
и tail
т. д. не те, кто удаляет цвета, это программа, генерирующая данные, которые обычно проверяют, идет ли вывод на консоль (цветной), файл или канал (не цветной)
Я обнаружил еще один SU Q & A, показывающий, как лгать программам для вывода данных, как если бы они отправляли вывод на консоль (эмулируя консоль с помощью unbuffer
)
color=auto
режиме (чтобы программа думала, что вывод идет на консоль, а не на канал)?
head
, tail
и т. Д. Обнаруживает, что она передается другой программе (чтобы она могла генерировать данные без цветов и т. Д.).
head
иtail
т. д. не те, кто удаляет цвета, это программа, генерирующая данные, которые обычно проверяют, идет ли вывод на консоль (цветной), в файл или канал (не цветной).