# 如何对命令行进行彩色和样式输出
通过在命令行的 `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</>');
```