当管道传输到“less -R”时,如何保留彩色输出?

当管道传输到“less -R”时,如何保留彩色输出?
$ ffmpeg -v debug ... 

彩色输出。

$ ffmpeg -v debug ... |& less -R

输出迟钝。

如何在将输出通过管道传输到某物时使输出着色?

答案1

对于没有类似于 的选项的命令--color=always,您可以执行以下操作,例如,使用您的示例:

script -c "ffmpeg -v debug ..." /dev/null < /dev/null |& less -R

它的作用script是在终端会话中运行命令。

编辑:如果您希望能够提供一个数组,而不是命令字符串,那么以下 zsh 包装器脚本似乎可以工作:

#!/usr/bin/env zsh
script -c "${${@:q}}" /dev/null < /dev/null |& less -R

答案2

作为 的替代方案script,它期望命令行作为字符串而不是普通数组,有一种特殊的模式雷普特尔:

reptyr -L ffmpeg -v debug ... < /dev/null |& less -R

请注意,并非所有版本都有reptyr工作-L选项并优雅地接受< /dev/null。请参阅我的拉取请求。

相关内容