如何在仍然控制程序的同时通过 grep 过滤程序的标准输出?

jax*_*uru 6 grep bash stdout stdin

我正在尝试过滤 mpv 媒体播放器的输出,删除特定行,但是当我这样做时,我无法用键盘控制 mpv。这是命令:

mpv FILE | grep -v 'Error while decoding frame'
Run Code Online (Sandbox Code Playgroud)

当我运行该命令时,一切都显示正确,但我无法使用 LEFT 和 RIGHT 键扫描文件,或使用键盘执行任何其他操作。如何在保留对程序的控制的同时过滤程序的输出?

rem*_*ram 7

您可以使用 script(1) 程序为 mpv 提供一个假终端,例如:

script -c 'mpv FILE' /dev/null | grep -v 'Error while decoding frame'
Run Code Online (Sandbox Code Playgroud)

对于 Mac OS X,语法似乎是

script /dev/null mpv 'FILE' | grep -v 'Error while decoding frame'
Run Code Online (Sandbox Code Playgroud)

[编辑:还可以查看欺骗应用程序使其认为其标准输入是交互式的以获取其他解决方案]