Я знаю, что многие программы используют цвет (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>
Это должно выделить совпадения, но иметь достаточно контекста, чтобы составить весь файл.