准备执行脚本后,如何播放声音?


44

我不时执行一些需要花费很长时间的python脚本。

我这样执行它们: $ time python MyScript.py

脚本执行完成后,如何播放声音?

我使用Ubuntu 10.10(Gnome桌面)。


您在使用bash还是zsh?实际上,有一些方法可以使这种情况自动发生,但是它们涉及很多,并且取决于您使用的是哪个shell。
Mikel

$ echo $ SHELL返回“ / bin / bash”
Martin Thoma

Answers:


39

附加任何播放声音的命令;这可能很简单

$ time mycommand; printf '\7'

或像

$ time mycommand && paplay itworked.ogg || paplay bombed.ogg

(命令假定已安装pulseaudio;替换您的声音播放器,这取决于您的桌面环境。)


6
+1 paplay可能是在“现代” Linux系统上播放声音的最佳命令。
Mikel

4
printf'\ 7'对我不起作用,但是该命令按我的time python MyScript.py -n 40 && paplay /usr/share/sounds/ubuntu/stereo/desktop-login.ogg || paplay /usr/share/sounds/ubuntu/stereo/phone-outgoing-busy.ogg
意愿

printf '\7'为我工作(paplay无效;(git shell)),但这只是一个很小的bip。还有更多发出其他声音的代码吗?我尝试过\6\8但是它们是一些字符。
laggingreflex 2014年

2
@laggingreflex否,\7(BEL)通常是唯一可能触发声音的字符(请参阅Wikipedia文章Control character);请注意,它也不一定总是发出声音。
musiphil 2014年

3
@laggingreflex您可能不再需要这个,只不过是在笑;)for i in {1..30}; do for j in {1..3}; do printf '\7'; sleep 0.12; done; sleep 0.4; done
cprn

16

spd-say

sleep 2; spd-say 'get back to work'

-w如果需要额外动力,可以无限循环:

sleep 2; while true; do spd-say -w 'get back to work'; done

通过软件包预安装在14.04上speech-dispatcherhttp : //releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-amd64.manifest 我适合盲人吗?

还添加一个弹出窗口

该组合可以节省生命(b代表beep):

b() ( spd-say 'done'; zenity --info --text "$(date);$(pwd)" & )

接着:

super-slow-command;b

如果我在房间里的某个地方,我会听到,并且知道工作很长。

否则,当我回到计算机时会看到弹出窗口。

相关:https//stackoverflow.com/questions/7035/how-to-show-a-gui-message-box-from-a-bash-script-in-linux


要获得与spd-say关联的工具speech-dispatcher,您可能需要安装子包,例如speech-dispatcher-utils(Fedora 24)。
dfarrell07

9

只需在硬盘驱动器上拾取声音,然后在等待的命令后放一个命令即可播放。它们将按顺序发生:

$ time python MyScript.py; mplayer ~/ScriptDone.wav

(自然可以使用任何播放器)。我有一个名为的脚本alertdone,它会发出声音并在运行时显示libnotify警报。我恰好在这种情况下使用它:

$ time python MyScript.py; alertdone "Done timing"

这是非常简单的,所以如果你想使自己的,你可以将它基于这个(我的需要notify-moremplayer以及~/tones/alert_1.wav虽然):

#!/bin/bash
message=${1:-"Finished working"}
notify-more -t 10000 -i /usr/share/icons/gnome/32x32/actions/insert-object.png "Process Finished" "$message"
mplayer ~/tones/alert_1.wav

2
notify-morenotify-send确实可能是播放声音的有用替代方法。
Mikel

@Mikel我完全沉迷于libnotify; 我系统上的所有内容都会弹出通知
Michael Mrozek

8
time python MyScript.py; play /path/so/sound.ogg

playsox的 一个非常基本(没有UI)的声音播放器。安装sox http://bit.ly/software-small软件包。您可以将其替换为任何其他命令行驱动的声音播放器。


是的,playaplay,或paplay。(我的Ubuntu系统aplay,并paplay通过默认设置。)
米克尔

1
time python MyScript.py -n 40; paplay /usr/share/sounds/ubuntu/stereo/desktop-login.ogg工作,谢谢。
Martin Thoma

5

我个人使用my-script && notify-send "done"。这将发送一个桌面通知,在Linux Mint(Cinnamon)上如下所示:

在此处输入图片说明


3

您也可以自动执行此操作。

我将向您展示操作方法zsh,然后添加有关的信息bash

本质看起来像这样:

preexec()
{
    starttime=$SECONDS
}

precmd()
{
    if ((SECONDS - starttime >= 5)); then
        aplay "sound.wav"
        # or printf "\b", or notify-send, or whatever
    fi
}

您也可以使其仅在程序为Python的情况下才这样做,例如

preexec()
{
    starttime=$SECONDS
    case $3 in python*)
        command_is_python=true;;
    *)
        command_is_python=false;;
    esac
}

precmd()
{
    if $command_is_python && ((SECONDS - starttime >= 5)); then
        aplay "sound.wav"
        # or printf "\b", or notify-send, or whatever
    fi
}

bash中,最好的办法就是下载preexec.bash.txt和源它(例如,. ~/preexec.bash.txt在你的顶部~/.bashrc,那么上面(或接近它)应该工作。(不知道的$3检查位如果命令是Python的)

如果您使用的是GNOME终端,那么我还将指向Flashing GNOME Terminal。这是我写的一个补丁,使命令执行完毕后终端会闪烁,因此您可以按Alt-Tab键切换到其他命令,然后在完成时通知您。


1

您无需向所有内容添加命令,实际上可以使用脚本,该脚本会自动为您执行此操作。它被称为undistraction-me,可在Github上使用。

sudo apt install undistract-me    #installs the script (on Debian)
echo 'source /etc/profile.d/undistract-me.sh' >> ~/.bashrc #adds auto-enable to your console
echo 'export LONG_RUNNING_COMMAND_TIMEOUT=XXX' >> ~/.bashrc #where XXX is number of seconds when the command is long enough to alert you
echo 'export UDM_PLAY_SOUND=1' >> ~/.bashrc #to enable sound alert

现在开始新的bash,您就设置好了。声音和警报可以通过修改脚本来更改。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.