🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 如何对命令行进行彩色和样式输出 通过在命令行的 `output` 中使用颜色,你可以区分不同类型的输出(比如,重要的信息,标题,注释,等等)。 > 默认时,Windows 的 command console 不支持彩色输出。 Console 对 Windows 系统禁用了颜色输出,但如果你的命令调用了发射颜色序列的其他脚本,它们会被错误地显示为转义字符。安装 [Cmder](http://cmder.net/), [ConEmu](https://conemu.github.io/), [ANSICON](https://github.com/adoxa/ansicon/releases),[Mintty](https://mintty.github.io/) ,[GitBash](https://git-scm.com/) 或者 [Cygwin](http://www.cygwin.com/) 等免费程序以便为你的 windows 命令行添加颜色支持。 ## 使用颜色样式 只要你输出文本,就可以对文字加上标签以实现彩色输出。例如: ``` // 红色背景上的白字 $output->writeln('<error>white text on a red background</error>'); // 绿字 $output->writeln('<info>green text</info>'); // 黄字 $output->writeln('<comment>yellow text</comment>'); // 黄色色背景上的黑字 $output->writeln('<warning>black text on a yellow background</warning>'); // 青色背景上的黑字 $output->writeln('<question>black text on a cyan background</question>'); // 红背景上的白字 $output->writeln('<error>white text on a red background</error>'); // 支持混合输出 $output->writeln('<info>green text</info><question>black text on a cyan background</question>......'); ``` 同时 ThinkPHP5 还支持快捷彩色输出 目前支持: `info`、 `error`、 `comment`、 `question`、 `highlight`、 `warning`。 即: ``` $output->info(green text); ``` 等价于: ``` $output->writeln(<info>green text</info>) ``` 标签闭合时可以用 `</>` 来替代,它会撤消所有由“最后一个未关闭的标签”所建立的格式化选项。 使用 `\think\console\output\formatter\Style` 类,也可以建立你自己的样式: ``` use \think\console\output\formatter\Style; // ... $style = new Style('red', 'yellow', array('bold', 'blink')); $output->getFormatter()->setStyle('fire', $style); $output->writeln('<fire>fire</fire>'); ``` 默认可用的前景和背景颜色是: `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan` 以及 `white`. 另有可用的选项是: `bold`, `underscore`, `blink`, `reverse` (可开启 "`reverse video`" 模式,即将前景和背景颜色互换) 以及 `conceal` (设置前景的颜色为透明,可隐藏上屏的文字却仍可以选择和复制; 此选项在要求用户键入敏感信息时常会用到)。 ``` // 绿字 $output->writeln('<fg=green>green text</>'); // 青背景上的黑字 $output->writeln('<fg=black;bg=cyan>black text on a cyan background</>'); // 黄背景上的粗体字 $output->writeln('<bg=yellow;options=bold>bold text on a yellow background</>'); ```