2

使用 laravel artisan 命令时,我没有得到预期的颜色输出。

如果您查看http://laravel.com/docs/4.2/commands,它会说“要将输出发送到控制台,您可以使用 info、comment、question 和 error 方法。这些方法中的每一个都将使用适当的 ANSI颜色为他们的目的。”

但是使用终端 mintty 或 cmd,我没有得到这些颜色。

例如,$this->error('Something went wrong!');应该输出带有红色背景的文本。

缺少什么让我获得这种颜色功能?

4

4 回答 4

3

我知道这是一个旧答案,但这里的其他答案并不是那么质量


问题:

正如您所发现的,本机 Windows 命令行不支持 ANSI 颜色。在这里,您可以找到另一个包含更多详细信息和有用链接的 SO 答案,但这里有一个重要的摘录:

ANSI.SYS 也适用于 NT 派生系统,用于在 NTVDM 下执行的 16 位遗留程序。

Win32 控制台根本不支持 ANSI 转义序列。然而,诸如Ansicon 之类的软件可以充当标准 Win32 控制台的包装器,并添加对 ANSI 转义序列的支持。

解决方案(简单):

安西康

如摘录中所述,Ansicon 软件用于向 Windows 终端添加对 ANSI 颜色的支持。我没有使用它,但它似乎为现有控制台添加了功能。

ANSICON 为 Windows 控制台程序提供 ANSI 转义序列。它提供的功能与 ANSI.SYS 为 MS-DOS 提供的功能大致相同。

也就是说,当您需要 ANSI 颜色编码时,您似乎需要运行该ansicon命令:

例如,要使用青色上的黑色作为默认颜色来显示 file.ans:

ansicon -m30 -t file.ans

另一种解决方案(更简单):

管理员

行动中的指挥官

如您所见,它支持 ANSI 颜色,但它还内置了许多其他简洁的功能。它也模拟了一些 Unix 功能。

Cmder 是我个人的最爱。

于 2016-09-13T14:45:38.750 回答
0

尝试使用腻子。这是一个适用于 Windows 的免费 ssh 客户端。

于 2015-04-03T08:47:02.820 回答
0

来自symfony/console的参考:2.*|3.*|4.*

/**
     * Returns true if the stream supports colorization.
     *
     * Colorization is disabled if not supported by the stream:
     *
     *  -  Windows before 10.0.10586 without Ansicon, ConEmu or Mintty
     *  -  non tty consoles
     *
     * @return bool true if the stream supports colorization, false otherwise
     */
    protected function hasColorSupport()
    {
        if (DIRECTORY_SEPARATOR === '\\') {
            return
                0 >= version_compare('10.0.10586', PHP_WINDOWS_VERSION_MAJOR.'.'.PHP_WINDOWS_VERSION_MINOR.'.'.PHP_WINDOWS_VERSION_BUILD)
                || false !== getenv('ANSICON')
                || 'ON' === getenv('ConEmuANSI')
                || 'xterm' === getenv('TERM');
        }

        return function_exists('posix_isatty') && @posix_isatty($this->stream);
    }

如果您在 linux/macos 客户端中使用 ternimal,则需要安装并启用php_posix扩展才能posix_isatty()在远程服务器中使用。

$ yum install php-process

如果您使用窗口,则DIRECTORY_SEPARATOR值为\\。马丁的回答应该会奏效,因为getenv('ANSICON')会返回 ture。

于 2020-09-08T02:54:56.463 回答
-1

这是 linux 上终端的魔力。这就是我喜欢 Linux 的原因。纯娱乐。因为你使用窗户。默认情况下,cmd 只有黑白。您可以使用ansicon 来显示命令颜色。就我而言,我使用 git bash 运行 laravel 命令。它还显示颜色。

于 2015-04-03T09:18:47.100 回答