Bash команда сохраняет цвет при прокладке трубопровода

Возможный дубликат:
Можно ли распечатать выделенный файл с помощью перенаправления оболочки?

Настройка

В этом случае я специально пытаюсь сохранить цвета в git status -s, когда переадресую его в другую команду.

Некоторые команды git, diff, например, и другие команды, такие как grep, имеют опцию --color=always, но git status нет.

Вопрос

Есть ли способ передать или захватить вывод команды и заставить ее думать, что она выводит на оболочку xterm, поэтому она не отключает автоматически цвета?

28
04 окт. '11 в 1:28
источник поделиться
2 ответов

Вот фрагмент script, использующий раскрашенный вывод ls в качестве примера (в Mac OS X 10.6).

# no colored ls output if stdout is a pipe (and not a tty)
ls -G /
ls -G / | cat
script -q /dev/null ls -G / | tr -d '\r' | cat

# write output of script command to a variable
var="$(script -q /dev/null ls -G / | tr -d '\r' | cat)"
echo "$var"
27
04 окт. '11 в 14:02
источник

Большинство команд, которые распечатывают эти цветовые коды, явно проверяют, является ли stdout/stderr tty (с помощью функции isatty).

Если вы хотите сохранить цветовые коды, вы можете запустить его в эмуляторе терминала, например, screen или в прямом журнале script, сохраняя вывод в файл.

5
04 окт. '11 в 1:31
источник

Посмотрите другие вопросы по меткам или Задайте вопрос