STDOUT и STDERR могут использовать различные цвета под XTerm / Konsole?

Вы могли составить список слов и сделать поток для каждого слова искавшим в Google.
Тогда каждый поток создаст новый поток для каждой ссылки, которую он находит на странице.
Каждый поток должен записать то, что он находит в базе данных. Когда каждый поток заканчивает читать страницу, он завершается.
И там у Вас есть очень большая база данных ссылок в Вашей базе данных.

33
задан DinGODzilla 19 November 2009 в 15:00
поделиться

4 ответа

Я не вижу, чтобы эмулятор терминала мог сделайте это.

Интерфейс между эмулятором терминала и оболочкой / приложением осуществляется через псевдотерминал, где эмулятор терминала находится на главной стороне, а оболочка / приложение - на другой. Оболочка / приложение имеют как stdout, так и stderr, подключенные к одному и тому же pty, поэтому, когда эмулятор терминала читает из pty для вывода оболочки / приложения, он больше не может сказать, что было записано в stdout, а какое в stderr.

необходимо использовать одно из решений, которое перехватывает данные между приложением и ведомым устройством и вставляет управляющие коды для управления выводом терминала colo (u) r.

5
ответ дан 27 November 2019 в 17:58
поделиться

Вот небольшой сценарий Awk, который напечатает все, что вы ему передаете, красным.

#! /usr/bin/awk -f
{printf("%c[%dm%s%c[0m\n",0x1B,31,$0,0x1B);fflush()}

Он просто печатает каждую строку, которую он получает на stdin внутри необходимые escape-коды, чтобы отобразить его красным. За ним следует escape-код для сброса терминала.

(Если вам нужен другой цвет, измените 31)

Сохраните его в colr.awk , выполните chmod a + x , и используйте его так:

$ my_program | ./colr.awk

У него есть недостаток, заключающийся в том, что строки могут отображаться не по порядку, потому что stderr идет прямо в консоль, а stdout сначала проходит дополнительный процесс.

4
ответ дан 27 November 2019 в 17:58
поделиться

Я думаю, вам следует использовать стандартные escape-последовательности в stderr. Взгляните на это .

2
ответ дан 27 November 2019 в 17:58
поделиться

Hilite сделает это. Это легкое решение, но вы должны вызывать его для каждой команды, например. хилит gcc myprog.c . Более радикальный подход встроен в мою экспериментальную оболочку Gush , которая показывает stderr из всех запущенных команд красным цветом, stdout - черным. Любой из этих способов очень полезен для программных сборок, где у вас много вывода с несколькими сообщениями об ошибках, которые можно легко пропустить, если не выделить.

2
ответ дан 27 November 2019 в 17:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: