在这种情况下,我特意试图在将git status -s
换成另一个命令时保留diff
中的颜色。
某些git命令,例如grep
和其他命令(如--color=always
)有git status
选项但{{1}}没有。
有没有办法管道或捕获命令的输出并让它认为它输出到xterm shell,因此它不会自动禁用颜色?
答案 0 :(得分:27)
以下是使用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"
答案 1 :(得分:5)
大多数打印出这些颜色代码的命令会明确检查stdout / stderr是否为tty(使用isatty
函数)。
如果要保留颜色代码,可以在screen
或直接记录器script
等终端仿真器中运行,将输出保存到文件中。