【发布时间】:2012-04-26 05:59:38
【问题描述】:
我有一个命令,例如“git diff”,当我从终端运行它时会输出彩色结果。
现在,我想从 CLI php 脚本调用该命令并在控制台中显示彩色结果。我尝试使用 exec()、system()、passthru(),但在所有情况下,输出都已转换为纯黑白文本。
有没有办法保留标准结果的颜色?如果没有,有人知道为什么这些信息会丢失吗?
【问题讨论】:
-
只是一个想法:它可能与环境变量有关。快速测试可能会提供线索:
env > env_a.out && php -r 'system("env");' > env_b.out && diff env_a.out env_b.out -
我试试你的测试,一旦两个 env 文件重新排序,差异只是这样:'SHLVL=1 对 SHLVL=2'
-
类似的?老实说,我很惊讶。也许提供有关您的环境的更多详细信息会对您的问题有所帮助,并通过尝试先自己输出颜色 (
php -r 'printf("%c[32mGreen%c[0m\n", 27, 27);') 而不是调用 git 之类的命令来简化问题。
标签: php colors command command-line-interface