РЕДАКТИРОВАТЬ:
Я хотел бы дать рекомендацию, что синтаксический анализ цветов - это вообще непродуманная идея.
Часть того, почему я хотел, было так, чтобы я мог и проанализировать и передать это в своем собственном выводе сценария. Это... хорошо, но, возможно, было бы разумнее использовать фарфор или что-то подобное и самостоятельно восстанавливать цветные детали!
Оригинальный вопрос следует.
Мне нравится видеть цвет, потому что мои сценарии достаточно надежны (пока) для обработки цветовых кодов. Похоже, что я иду против этого, но я, честно говоря, не понимаю, в чём заключается смысл разбора таких вещей, как escape-коды в скриптах. Если цвета помогают для интерактивного использования, почему они не помогают в использовании сценариев, где я могу собирать данные и обрабатывать даже больше данных, чем вручную? Разве цвета не будут еще важнее?
Во всяком случае, у меня есть аккуратный небольшой сценарий оболочки, который я написал, который выводит git status
, и я просто хочу, чтобы этот сценарий не изменял цвета. Моя глобальная конфигурация git настроена так, что списки измененных и неотслеживаемых файлов отображаются в цвете состояния git. К сожалению, в отличие от git diff
, я не могу найти опцию принудительного выбора цвета для git status
.
Чтобы быть совершенно ясно, это проблема:
$ git status
производит идеальный вывод, но (выдержка из моего сценария следует)
git status | sed "s/^#/\x1b[34m#[0m/"
не производит цветной вывод git status
, и вы даже можете видеть здесь, что я явно преобразую ведущие хеш-символы в синий, потому что это помогает выделить различные области вывода из моего скрипта.
Кто-нибудь знает, как заставить его потушить цвета? Может ли быть стандартная программа, которую я могу использовать, которая может быть использована в качестве "поддельного терминала" канала STDIN/STDOUT? На самом деле я также работаю над pty-псевдотерминальным инструментом, чтобы я мог использовать его для этой цели, но это довольно сложное решение (и пока не готово к использованию, так как я еще не закончил его сборку).