Bash: цветная копия / паста

12

Как и у всех, у меня есть несколько цветных выводов в моем bash. Я хочу сохранить раскрашенный синтаксис, например, при копировании выдержки в редактор HTML. Есть ли способ справиться с этим?

Благодарю.

AketO
источник

Ответы:

17

Если говорить о цветовом выходе некоторых утилит командной строки , как ls, grep, cmake, git diffи т.д., пожалуйста , обратите внимание, что он не имеет никакого отношения к GNU Bash.

В любом случае, есть несколько инструментов для преобразования вывода, раскрашенного с помощью escape-последовательностей ANSI, в HTML:

  • aha из одноименной упаковки
  • ansi2htmlиз HTML :: PerANS модуль FromANSI (не упакован в репозиторий Ubuntu, может быть установлен из CPAN)
  • ansi2html.shпо pixelb (не упаковано, скачать с git)

Использовать их все довольно просто: они читают escape-последовательности терминала stdinи помещают HTML в stdout. Но обратите внимание: большинство утилит не окрашивают вывод, если он не идет к терминалу. Вы должны заказать их для получения цветного вывода в явном виде. Е. г .:

$ ls --color=always | aha | xsel -i -b

xsel -i -b здесь будет скопировать HTML в буфер обмена.

Дмитрий Александров
источник
Это ( aha) работало прекрасно; Большое спасибо!
ShreevatsaR
2
ага - гениально! Это почти идеально подходит для меня. Чтобы иметь возможность копировать отформатированный текст, я адаптировался для маршрутизации в tmp, открытия в браузере, а затем просто скопировал / вставил, как для других сайтов: git -c color.ui=always diff | aha > /tmp/diff.html && firefox /tmp/diff.html ... и да, я знаю, что OP хотел HTML, но многие из нас будут спотыкаться, желая форматирование вообще.
мудрец