Подтвердить что ты не робот

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

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

Настройка

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

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

Вопрос

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

4b9b3361

Ответ 1

Вот фрагмент 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"

Ответ 2

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

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