Есть ли способ сохранить раскрашивание текста проходит через трубу |
вhead
, tail
, less
и т.д.?
linux
pipe
gnome-terminal
Тимофей Горшков
источник
источник
head
иtail
т. д. не те, кто удаляет цвета, это программа, генерирующая данные, которые обычно проверяют, идет ли вывод на консоль (цветной), в файл или канал (не цветной).Ответы:
Я предполагаю, что вы по трубам
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
и т. Д. Обнаруживает, что она передается другой программе (чтобы она могла генерировать данные без цветов и т. Д.).