命令完成时播放声音

命令完成时播放声音

当用户启动的命令完成时,让终端播放警报/声音的有效方法是什么?

它需要是自动的,这样我就不必在每个命令后显式运行“嘟嘟”命令。

答案1

你可以使用蜂鸣声,echo -en "\007"这是在MB上使用扬声器的非常基本的东西,你甚至不需要声卡。但现在它经常被禁用。你可以尝试这个来启用它https://superuser.com/a/22769

在许多发行版中,您都有 PulseAudio,因此您可以像这样从 CLI 播放声音paplay /usr/share/sounds/freedesktop/stereo/complete.oga

还可以建立一些其他的方法https://askubuntu.com/questions/277215/how-to-make-a-sound-once-a-process-is-complete

[编辑] 抱歉,我没有在每个命令版本上注意到你的。您可能可以将之前编写的内容结合起来以trap完成所需的行为 https://jichu4n.com/posts/debug-trap-and-prompt_command-in-bash/

# This will run before any command is executed.
function PreCommand() {
  if [ -z "$AT_PROMPT" ]; then
    return
  fi
  unset AT_PROMPT
}
trap "PreCommand" DEBUG

# This will run after the execution of the previous full command line.  We don't
# want it PostCommand to execute when first starting a bash session (i.e., at
# the first prompt).
FIRST_PROMPT=1
function PostCommand() {
  AT_PROMPT=1

  if [ -n "$FIRST_PROMPT" ]; then
    unset FIRST_PROMPT
    return
  fi

  paplay /usr/share/sounds/freedesktop/stereo/complete.oga
}
PROMPT_COMMAND="PostCommand"

答案2

play_sound(){
    local df="./somedirectory/music_file.wav";

    $(which cvlc)       \
        -q              \
        --play-and-exit \
        --gain=0.5      \   
            ${df}       \
        &>/dev/null     \   
        ;
    };

some_command;
play_sound;

您必须安装命令行 vlc 才能使其工作。
它被称为CVLC。

 sudo apt-get install cvlc;

相关内容