Существующие ответы относятся только к случаю, когда команда ПЕРВАЯ grep
(по запросу OP, но эта проблема возникает и в других ситуациях).
Более общий ответ
Основная проблема в том, что команда BEFORE | grep
пытается быть «умной», отключая цвет, когда понимает, что вывод идет в канал. Обычно это именно то, что вам нужно, чтобы escape-коды ANSI не мешали вашей последующей программе.
Но если вы хотите, чтобы цветной вывод происходил из более ранних команд, вам нужно принудительно создавать цветовые коды независимо от приемника вывода. Механизм принуждения зависит от программы.
Git: используйте -c color.status = always
git -c color.status=always status | grep -v .DS_Store
Примечание: -c
опция должна идти ДО подкоманды status
.
Другие
(это сообщение вики сообщества, так что не стесняйтесь добавлять свои)