所以我为某些命令运行了一个Symfony Process
,我注意到当我把它们写到Symfony的OutputInterface
时,它没有显示颜色或进度条。我认为命令(npm,artisan,ls等)正在使用terminal control codes,其中一个类正在使用非标准的ASCII字符。
编辑:
我已经做了一些挖掘,我相信Symfony默认使用它的StreamOutput
类。它似乎能够以彩色输出,我已经尝试将其告诉OUTPUT_RAW
。那里没有豆子。也许问题出在其他地方......
是否有内置的方法告诉这些类不要这样做?如何才能恢复出色的输出?
答案 0 :(得分:1)
您正在呼叫的程序的颜色可用性depends。 您可以尝试设置tty / pty:
protected function execute(InputInterface $input, OutputInterface $output)
{
$process = new Process('ls -l --color="always"');
$process->setTty(true); // or $process->setPty(true);
$process->run();
$output->write($process->getOutput());
}
参见相关的issue。
我不认为命令输出会删除转义码。下一个例子很适合(对我来说):
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->write(shell_exec('ls -l --color="always"')); // ok, output is colored
}
希望这有帮助。