为什么在 *nix 系统上管道 stdout/stderr 时不显示颜色(控制字符)?

为什么在 *nix 系统上管道 stdout/stderr 时不显示颜色(控制字符)?

为什么在 *nix 系统上管道 stdout/stderr 时不显示颜色(控制字符)?

当我做:

foo | bar

如果foo将颜色编码字符串(带有控制字符)写入标准输出,它们不会显示在栏中 - 有没有办法让它们显示?

答案1

为什么在 *nix 系统上管道 stdout/stderr 时不显示颜色(控制字符)?

正如评论者吉米吉,他们确实出现了。

然而,一些程序(可能是大多数程序输出ANSI 转义码s) 通过使用检测到它们的输出不是 tty伊萨蒂(3)例如作为isatty(STDOUT_FILENO);这是一个很好的功能,因为当您不想要管道中的逃逸时,处理它们是一件痛苦的事情。

有几个程序记录了一种强制执行此操作的方法,例如LS(1)--color=always

所以请阅读相关命令的文档。

相关内容