Codeception bash颜色输出不显示

Posted

技术标签:

【中文标题】Codeception bash颜色输出不显示【英文标题】:Codeception bash color output does not display 【发布时间】:2015-05-07 20:55:00 【问题描述】:

我已经用 Codeception 和 PhantomJS 进行了一段时间的测试,但是我什么时候必须调试和运行

    vendor/bin/codecept run --debug

颜色设置为真我得到的是:

    Modules: ←[33mWebDriver, AcceptanceHelper←[39m

等等...所以由于某种原因,颜色只是以原始格式输出并且根本不起作用。颜色通常有效。就像我使用“ls --color”一样,它就可以工作。 我的系统是 Windows 7,我使用的是“git bash”,我也尝试过常规的“cmd”“powershell”和“cygqwin”。它们中的任何一个似乎都不适用于 codeceoptions 输出。 那么问题是什么?我一无所知:(

【问题讨论】:

可以添加echo $TERM的输出吗? 程序不应假定颜色代码将是 ansi 转义序列 - 尽管它们通常是 - 它应该采用的方式是 'tput setaf ' (或 setab,或 sgr0 重置)并非所有程序都这样做。请给我们一份您的“infocmp”副本,以便我们查看您的(未编译的)termcap! 【参考方案1】:

您的应用程序 (Codeception) 未适应不支持 ANSI 着色的 Windows 控制台。要启用 ANSI 颜色,您可以选择以下选项之一:

ConEmu 是 Windows 本地终端,具有 ANSI capabilities 和许多其他功能,如选项卡、拆分、预配置的 shell 任务……此外,它是唯一能够 "replace" default Windows console 的终端。是的,我是作者。 某些应用程序可能在 mintty(与 cygwin 或 msys 捆绑)中正常工作。许多本机 Windows 控制台工具无法在此终端中正常工作,但您的应用可能会很好。 有 AnsiCon 项目。它在标准 Windows 控制台中启用 ANSI 着色。

顺便说一句,bash 的 ls(cygwin 或 msys)适用于 Windows 控制台 API,因此它不会将 ANSI 发布到终端,除非终端已对 POSIX 子系统进行了特殊初始化。 ConEmu 可以通过cygwin/msys connector 进行此初始化。

【讨论】:

【参考方案2】:

在 bash 中,尝试运行

export TERM=ansi 

export TERM=xterm

在运行程序之前

或者,测试外壳本身的颜色输出:

echo -e "\e[41m\e[32mCOLOR\e[0m"

如果它确实有效,那么它是程序,而不是环境

最后,您可能只需要一个更好的控制台。 试试 conemu,它具有出色的 ansi 颜色支持,我将它用于 cmd powershell bash perl 和 ssh 会话:) http://sourceforge.net/projects/conemu/

【讨论】:

Bash 不处理来自子进程的 ANSI,只有 mintty 这样做。因此,更改 TERM 很可能不会产生任何影响。

以上是关于Codeception bash颜色输出不显示的主要内容,如果未能解决你的问题,请参考以下文章

在 BASH 下运行的程序的颜色输出 [关闭]

以红色显示真实 HTML 中的文本,而不是显示颜色代码为 color:#de350bduchessecolor 的文本

如何在我的 Windows git-bash 终端上获得彩色输出?

bash颜色显示方案bash配置文件及bash变量字符串处理

如何让 osx shell 脚本在 echo 中显示颜色

#8 bash的颜色显示规则