当我运行 时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