我不时执行一些需要花费很长时间的python脚本。
我这样执行它们:
$ time python MyScript.py
脚本执行完成后,如何播放声音?
我使用Ubuntu 10.10(Gnome桌面)。
我不时执行一些需要花费很长时间的python脚本。
我这样执行它们:
$ time python MyScript.py
脚本执行完成后,如何播放声音?
我使用Ubuntu 10.10(Gnome桌面)。
Answers:
附加任何播放声音的命令;这可能很简单
$ time mycommand; printf '\7'
或像
$ time mycommand && paplay itworked.ogg || paplay bombed.ogg
(命令假定已安装pulseaudio;替换您的声音播放器,这取决于您的桌面环境。)
paplay
可能是在“现代” Linux系统上播放声音的最佳命令。
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
但是它们是一些字符。
\7
(BEL)通常是唯一可能触发声音的字符(请参阅Wikipedia文章Control character);请注意,它也不一定总是发出声音。
for i in {1..30}; do for j in {1..3}; do printf '\7'; sleep 0.12; done; sleep 0.4; done
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-dispatcher
: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
spd-say
关联的工具speech-dispatcher
,您可能需要安装子包,例如speech-dispatcher-utils
(Fedora 24)。
只需在硬盘驱动器上拾取声音,然后在等待的命令后放一个命令即可播放。它们将按顺序发生:
$ time python MyScript.py; mplayer ~/ScriptDone.wav
(自然可以使用任何播放器)。我有一个名为的脚本alertdone
,它会发出声音并在运行时显示libnotify警报。我恰好在这种情况下使用它:
$ time python MyScript.py; alertdone "Done timing"
这是非常简单的,所以如果你想使自己的,你可以将它基于这个(我的需要notify-more
,mplayer
以及~/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
notify-more
或notify-send
确实可能是播放声音的有用替代方法。
time python MyScript.py; play /path/so/sound.ogg
play
是sox的 一个非常基本(没有UI)的声音播放器。安装sox http://bit.ly/software-small软件包。您可以将其替换为任何其他命令行驱动的声音播放器。
play
,aplay
,或paplay
。(我的Ubuntu系统aplay
,并paplay
通过默认设置。)
time python MyScript.py -n 40; paplay /usr/share/sounds/ubuntu/stereo/desktop-login.ogg
工作,谢谢。
您也可以自动执行此操作。
我将向您展示操作方法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键切换到其他命令,然后在完成时通知您。
您无需向所有内容添加命令,实际上可以使用脚本,该脚本会自动为您执行此操作。它被称为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,您就设置好了。声音和警报可以通过修改脚本来更改。
bash
还是zsh
?实际上,有一些方法可以使这种情况自动发生,但是它们涉及很多,并且取决于您使用的是哪个shell。