Сохранить цветной вывод с помощью php popen

При использовании popen в php есть ли способ сохранить цветной вывод, который может генерировать программа? Может быть, я могу сказать оболочке печатать все цветовые escape-последовательности вместо их разрешения?


person DudeOnRock    schedule 16.09.2013    source источник
comment
Вы делаете это в скрипте PHP или в командной строке?   -  person Justin Wood    schedule 17.09.2013
comment
Я запускаю php-скрипт в командной строке, которая выполняет программу, использующую escape-последовательности цветов.   -  person DudeOnRock    schedule 17.09.2013


Ответы (1)


Это зависит от программы, которую вы вызываете. Обычно, если программа поддерживает цветной вывод, она спрашивает ОС: «Я работаю на терминале?» Если да, то он выводит цветовые коды. Если нет, то не будет. Если вы запустите эту программу через popen(), тогда ОС скажет «нет, вы не работаете на терминале», и программа решит не выводить цветовые коды (поскольку они будут запутанными в захваченном выводе).

Некоторые программы могут иметь возможность принудительно выводить цветовые коды, даже если вывод не записывается на терминал. Однако это не то, что вы можете форсировать извне, если у программы еще нет способа сделать это.

person Greg Hewgill    schedule 16.09.2013
comment
Это отвечает на все мои вопросы! Спасибо. - person DudeOnRock; 17.09.2013
comment
Если вы используете утилиты GNU, такие как ls, аргументом force будет --color=always. - person Martin von Wittich; 17.09.2013