Possible Duplicate:
Can colorized output be captured via shell redirect?
In this case specifically I'm trying to preserve the colors in git status -s
when piping it to another command.
Some git commands, diff
for instance, and other commands like grep
have an option --color=always
but git status
does not.
Is there a way to pipe or capture the output of a command and make it think it is outputting to the xterm shell so it doesn't automatically disable colors?
Here's a script
snippet using the colorized output of ls
as an example (on 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"