Quand je lance alsactl monitor
, je vois la sortie comme telle quand je règle le volume:
card 0, #24 (2,0,0,PCM Playback Volume,0) VALUE
card 0, #24 (2,0,0,PCM Playback Volume,0) VALUE
Cependant, lorsque j'essaie de rediriger cela vers un fichier ou un processus avec >
, >>
ou |
, je ne vois aucune sortie et la sortie n'est pas redirigée.
Quelles sont les causes de ce comportement et comment puis-je y remédier?
Pour votre information, c’est pour un bidouiller pour forcer un haut-parleur gauche cassé à rester à :
alsactl monitor | \
while read; do
amixer -D Pulse sset Master 0,-
done
Si quelqu'un connaît un meilleur moyen de le faire (par exemple, comment verrouiller un contrôle afin qu'il ne puisse pas être modifié), ce serait génial!
Le problème est que, comme alsactl
ne se termine pas tant que vous ne l'avez pas arrêté de force, la sortie en mémoire tampon ne peut pas être écrite dans le fichier, car cette opération est exécutée une fois l'exécution de la commande terminée.
Vous pouvez forcer la stdout
de alsactl
à être mise en mémoire de lignes et donc à être redirigée immédiatement après chaque ligne de sortie à l'aide de stdbuf
:
stdbuf -oL alsactl monitor > outputfile