使用 php 的 popen 保留彩色输出


Preserve colored output using php's popen

在php中使用popen时,有没有办法保留程序可能生成的彩色输出?有没有办法告诉外壳打印所有颜色转义序列,而不是解析它们?

这取决于您调用的程序。通常,如果一个程序支持彩色输出,它会问操作系统,"我是否在终端上运行?如果是,则输出颜色代码。如果没有,它就不会。如果您通过 popen() 运行该程序,则操作系统会说"不,您没有在终端上运行",并且程序将选择不输出颜色代码(因为它们会在捕获的输出中混淆)。

某些程序可能有一个选项来强制输出颜色代码,即使输出没有写入终端。但是,如果程序还没有办法做到这一点,则无法在外部强制这样做。