Для конкретного git-решения вы можете заставить git предоставлять цвет с помощью опции конфигурации color.status
.Чтобы переопределить запись конфигурации для этой единственной команды, используйте git -c color.status=always status
.
Помните, что вывод команды, захваченный таким образом, не обязательно включает в себя завершающий перевод строки, поэтому вы захотите добавить его, если вы планируете напечатать егопозже.
out=$(git -c color.status=always status)
printf "$out\n"
Для более общего решения, которое работает с другими программами, которые не обеспечивают переопределение цвета, лучше сделать это с помощью скрипта, как показано на Может ли цветной вывод получаться черезперенаправление оболочки?
В этих случаях вы хотели бы использовать status=$(script -q /dev/null git status | cat)