当用户启动的命令完成时,让终端播放警报/声音的有效方法是什么?
它需要是自动的,这样我就不必在每个命令后显式运行“嘟嘟”命令。
答案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;