bash 命令在管道时保留颜色

发布于 2024-12-08 01:52:38 字数 484 浏览 1 评论 0 原文

可能的重复:
可以通过 shell 重定向捕获彩色输出吗?

设置

在此具体来说,我试图在将其管道传输到另一个命令时保留 git status -s 中的颜色。

一些 git 命令(例如 diff)和其他命令(如 grep)有一个选项 --color=alwaysgit status 没有。

问题

有没有办法通过管道或捕获命令的输出,并使其认为它正在输出到 xterm shell,这样它就不会自动禁用颜色?

Possible Duplicate:
Can colorized output be captured via shell redirect?

setup

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.

question

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

转角预定愛 2024-12-15 01:52:38

以下是使用 ls 的彩色输出作为示例的 script 代码段(在 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"

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"
生死何惧 2024-12-15 01:52:38

大多数打印出这些颜色代码的命令都会显式检查 stdout/stderr 是否为 tty(使用 isatty 函数)。

如果您想保留颜色代码,可以在终端模拟器(如 screen)或直接记录器 script 中运行它,将输出保存到文件中。

Most commands that do print out those color codes explicitly check if stdout/stderr is a tty (using the isatty function).

If you want to preserve the color codes, you can run it within a terminal emulator like screen or the direct logger script, saving the output to a file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文