管道到`less -R`时如何保留彩色输出?

Vi.*_*Vi. 7 less colors pipe pty

$ ffmpeg -v debug ... 
Run Code Online (Sandbox Code Playgroud)

彩色输出。

$ ffmpeg -v debug ... |& less -R
Run Code Online (Sandbox Code Playgroud)

枯燥的输出。

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

vin*_*c17 12

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

script -c "ffmpeg -v debug ..." /dev/null < /dev/null |& less -R
Run Code Online (Sandbox Code Playgroud)

是什么script做的是,它运行在一个终端会话的命令。

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

#!/usr/bin/env zsh
script -c "${${@:q}}" /dev/null < /dev/null |& less -R
Run Code Online (Sandbox Code Playgroud)