从 bash 更改音量

Ema*_*erg 3 audio bash alsa

我得到了这么远(来自.bashrc):

alias i="amixer -c 0 -- sset Master playback +1dB"
alias d="amixer -c 0 -- sset Master playback -1dB"
alias v4="amixer -c 0 -- sset Master playback 40%"
alias v8="amixer -c 0 -- sset Master playback 80%"
Run Code Online (Sandbox Code Playgroud)

前两行应该可以工作,如果我man amixer正确阅读了页面,并且它们不会产生错误消息,但它们的行为是不可靠的:有时会有巨大的变化,通常什么也没发生。

最后两行有效。我猜你可以做十个别名。不过,您希望增加/减少功能绑定到键盘快捷键。

我是使用amixer错误的方式还是有其他工具可以做到这一点?(alsamixerCLI 命令似乎没有此功能。)

编辑

最后,让它工作。这是很久以前的事了(多么悲伤!),所以我已经忘记了谁贡献了什么。不管怎样,谢谢。(下图:对于 bash 用户,输入.bashrc

# volume
alias vol="alsamixer"
MASTER="amixer -q -c 0 sset Master playback"
alias i="$MASTER 2dB+"
alias d="$MASTER 2dB-"
alias mute="echo \" Audio muted.\"; $MASTER mute"
alias play="echo \" Audio un-muted.\"; $MASTER unmute"
alias unmute="play"
alias stop="mute"
v () {
  amixer -q sset Master playback $1%
}
Run Code Online (Sandbox Code Playgroud)

che*_*ner 5

对于前两个别名,似乎 +/- 必须跟要被视为相对更改的值之后,而不是绝对值(混合器手册页)

alias i="amixer -c 0 -- sset Master playback +1db+"
alias d="amixer -c 0 -- sset Master playback +1db-"
Run Code Online (Sandbox Code Playgroud)

我会用一个 shell 函数替换最后两个(以及他们假设的 8 个兄弟):

v () {
  amixer -c 0 -- sset Master playback $i%
}
Run Code Online (Sandbox Code Playgroud)