it-swarm.cn

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

我不时执行一些python)脚本,这些脚本需要很长时间才能执行。

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

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

我使用Ubuntu 10.10(Gnome桌面)。

47
Martin Thoma

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

$ time mycommand; printf '\7'

或像

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

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

42
geekosaur

spd-say

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

如果您需要更多动力,可以使用-w进行无限循环:

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

通过软件包speech-dispatcher预安装在14.04上: http://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

只需在硬盘上选择声音,然后在等待的命令后放一个命令即可播放;它们将按顺序发生:

$ 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
9
Michael Mrozek
time python MyScript.py; play /path/so/sound.ogg

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

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

enter image description here

5
eeze

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

我将向您展示如何使用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键切换到其他命令,然后在完成时通知您。

3
Mikel

您不需要向所有内容添加命令,实际上可以使用脚本,该脚本会自动为您执行此操作。它称为 ndistract-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,您就设置好了。声音和警报可以通过修改脚本来更改。

1
Jakub Lucký