Глобальная раскраска терминала с помощью Regex

Глобальная раскраска терминала с помощью Regex

Я знаю, что многие программы используют цвет (vim, ack, color-ls и многие другие), но все равно во многих случаях приходится использовать черно-белый режим.

Существуют скрипты, которые окрашивают вывод на основе регулярных выражений (например, «сделать все, что соответствует 'dog', красным»), но их нужно вызывать с помощью конвейеров — например: "> cat myfile | color dog red», а для интерактивных объектов это бесполезно.

Мне нужно что-то, что перехватывает эмулятор терминала (или терминал, который действительно это делает) и раскрашивает все, что соответствует заданному регулярному выражению, независимо от оболочки или программы, которую я в данный момент использую. Если это работает и с ncurses, это было бы здорово. У меня слишком много монохромных программ, и было бы здорово, если бы я мог указать список ключевых слов для подсветки/раскрашивания при их появлении или вводе.

Я использую консоль Guake, которая, вероятно, использует GNOME Terminal, но не знаю, есть ли эта функция в GNOME.

решение1

Короткая версия:да, вы можете перенаправить вывод из оболочки, как и любую другую программу.

Оттуда вы можете использовать все, что вам нравится, например, скажите

$ bash | sed "$(echo -e "s@dog@\e[31mdog\e[0m@g; s@more here@more here@g;")"

Подумал, что добавлю свою «радугу». Наслаждайтесь:

for((b=0;$b<8;b++)); do echo -ne "\e[4${b}m4$b : "; \
  for((f=0;$f<8;f++)); do echo -ne "\e[3${f}m3${f}"; done; echo -e "\e[0m"; done

решение2

Я все еще ищу эмулятор терминала Linux с этой функцией, но для тех, кто читает это и использует macOS X:

  • ПолучатьiTerm2(это вам в любом случае понадобится, если вы много работаете с командной строкой в ​​OS X), перейдите в «Настройки > Профили > Дополнительно» и нажмите «Изменить» в разделе «Триггеры». Там вы можете добавить триггер с регулярным выражением, например, ^.*\[ERROR\].*$и задать действие «Выделить текст», а параметр — что-то вроде «Красный передний план».

решение3

Вероятно, существуют решения и получше, но вы можете придумать что-то простое с помощью expect:http://expect.nist.gov/Если вы предпочитаете избегать TCL, существуют библиотеки, доступные для многих других языков программирования/скриптов.

В основном TCL используется для автоматизации интерактивных программ, но их также можно сделать интерактивными.

Я бы дал вам какой-нибудь код для начала, но сам я им уже давно не пользовался.

решение4

Я почти уверен, что KDE Konsole (по крайней мере, версия KDE3) может это сделать, однако я не вижу поддержки в KDE4.

Тыможетсделайте что-нибудь с grep, например так:

grep -C 99999 --color <whatever>

Это должно выделить совпадения, но иметь достаточно контекста, чтобы составить весь файл.

Связанный контент