Вывод цвета из команды оболочки в Ruby - PullRequest
3 голосов
/ 04 июня 2009

Вот простой скрипт на Ruby:

puts `ls -laG`

В ls OS X -G для цвета.

При запуске под Bash, я получаю вывод цвета. Когда вышеперечисленное запускается из сценария Ruby, я не вижу цвет или escape-последовательности ANSI в результирующем выводе.

Из того, что я прочитал, я думаю, это потому, что скрипт не работает как tty. Есть ли какой-нибудь способ выполнить команду, как если бы она выполнялась в истинном сеансе tty - или что-то подобное?

Ответы [ 2 ]

7 голосов
/ 04 июня 2009

Глядя на справочную страницу ls в OS X , я вижу пару упомянутых переменных среды. CLICOLOR включает цвет (например, -G) и CLICOLOR_FORCE (заставляет цвет даже выводиться без терминала).

Так что я думаю, вы получите то, что вы хотите с ...

puts `env CLICOLOR=1 CLICOLOR_FORCE=1 ls -la`

Вы можете установить переменные окружения в вашем .profile. В моем примере я просто использовал команду env, чтобы убедиться, что они установлены в командной строке. Я отключил опцию -G, поскольку CLICOLOR делает эквивалент.

3 голосов
/ 04 июня 2009

В соответствии с man-страницей вы можете принудительно установить ее, установив CLICOLOR_FORCE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...