我正在使用 mplayer。我想将所有内容发送到日志文件 (/tmp/server.log),但我希望将卷输出写入终端。我已经看到有一种方法可以用 tee 分割输出,但我似乎无法让它工作。这是我到目前为止所拥有的:
$mplayer /path/to/song.wav 1>tee /tmp/server.log | grep Volume 2> /tmp/server.log
我希望所有 stdout 和 stderr 都转到日志文件,但只有带有 Volume from stdout 的行写入终端。或者有更好的方法吗?
答案1
假设您正在使用bash
并且“Volume”不是出现在 stderr 上的单词:
$ mplayer /path/to/song.wav 2>&1 | tee -a /tmp/server.log | grep -F Volume
这结合了来自 mplayer ( ) 的 stdout 和 stderr 2>&1
,附加(注意单词 的-a
to/tmp/server.log
和的所有行。grep
Volume
答案2
尝试这个。假设bash
$ mplayer /path/to/song.wav 2>> /tmp/server.log | tee -a /tmp/server.log | grep Volume
在这里,我首先附加stderr
到文件并仅传递stdout
到tee
那里并使用 grep 。
这消除了 Anthon 对 Volume 不在 stderr 中的假设。