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

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

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

card 0, #24 (2,0,0,PCM Playback Volume,0) VALUE
card 0, #24 (2,0,0,PCM Playback Volume,0) VALUE

>但是,当我尝试使用、>>或将其重定向到文件或进程时|,我看不到任何输出,并且输出未被重定向。

什么原因导致了这种现象?我该如何解决?


仅供参考,这是破解强制损坏的左扬声器保持在 0

alsactl monitor | \
while read; do
    amixer -D pulse sset Master 0,-
done

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

答案1

问题在于,由于在alsactl您强制终止它之前它不会终止,因此缓冲的输出无法写入文件,因为这是在命令终止执行后完成的。

您可以强制stdout进行alsactl行缓冲,从而在每行输出之后立即重定向stdbuf

stdbuf -oL alsactl monitor > outputfile

相关内容