“git show”不会通过管道控制颜色的字符

“git show”不会通过管道控制颜色的字符

我正在尝试输出 git-show 结果列表并将它们通过管道传输到寻呼机中。
不幸的是我无法保留颜色。
这是我正在运行的命令:
git log -n10 | awk '{print $1}' | xargs -d '\n' -I{} bash -c 'git show {}' -- | less -MR

如果没有| less -MR管道,输出将以彩色打印。
我也尝试过less -r,但显然问题似乎在于,git show或者xargs当他们检测到其输出正在通过管道传输到另一个命令而不是 时不保留颜色stdout

xargs手册没有提到保留颜色,也没有git

如何保留less寻呼机输出中的颜色?

答案1

man git-show描述了如何强制保留颜色,似乎取自man git-diff

   --color[=<when>]
       Show colored diff.  --color (i.e. without =<when>) is the same as --color=always.  <when> can be one of always, never, or auto.

更新了 bash 命令:
git log -n10 | awk '{print $1}' | xargs -d '\n' -I{} bash -c 'git show --color=always {}' -- | less -MR

相关内容