无法重定向`alsactl monitor`的标准输出

Zaz*_*Zaz 5 command-line pulseaudio alsa redirect

当我运行时alsactl monitor,当我调整音量时,我会看到这样的输出:

card 0, #24 (2,0,0,PCM Playback Volume,0) VALUE
card 0, #24 (2,0,0,PCM Playback Volume,0) VALUE
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试这个重定向到文件或进程>>>或者|,我看不到输出,并且输出不重定向。

是什么导致了这种行为,我该如何解决?


仅供参考,这是为了让坏掉的左扬声器保持在 0黑客攻击

alsactl monitor | \
while read; do
    amixer -D pulse sset Master 0,-
done
Run Code Online (Sandbox Code Playgroud)

如果有人知道这样做的更好方法(例如如何锁定控件使其无法更改),那就太好了!

kos*_*kos 8

问题是,因为alsactl直到你强行终止它才会终止,所以缓冲的输出不能写入文件,因为这是在命令终止执行后完成的事情。

您可以强制stdoutofalsactl被行缓冲,因此在每行输出后立即使用stdbuf以下命令重定向:

stdbuf -oL alsactl monitor > outputfile
Run Code Online (Sandbox Code Playgroud)