因此,我正在为一些命令运行一个Symfony Process,并且我注意到当我将这些命令写入Symfony的OutputInterface时,它没有显示颜色或进度条。我认为命令(npm、artisan、ls等)使用的是终端控制码,其中一个类是使用非标准的ASCII字符。
编辑:我已经做了一些调查,我相信Symfony默认使用它的StreamOutput类。它似乎能够输出颜色,我试着告诉OUTPUT_RAW。那里没有豆子。也许问题是在别的地方..。
有没有一个内置的方式告诉这些类不要这样做?我怎么才能把漂亮的输出拿回来?
发布于 2016-11-27 19:23:58
在您正在调用的程序上使用颜色可用性取决于。您可以尝试设置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());
}参见相关的问题。
我认为命令输出不会删除转义代码。下一个示例(对我来说)很好:
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->write(shell_exec('ls -l --color="always"')); // ok, output is colored
}希望这能有所帮助。
https://stackoverflow.com/questions/40826102
复制相似问题