![“git show”不会通过管道控制颜色的字符](https://linux22.com/image/113708/%E2%80%9Cgit%20show%E2%80%9D%E4%B8%8D%E4%BC%9A%E9%80%9A%E8%BF%87%E7%AE%A1%E9%81%93%E6%8E%A7%E5%88%B6%E9%A2%9C%E8%89%B2%E7%9A%84%E5%AD%97%E7%AC%A6.png)
我正在尝试输出 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