it-swarm-ru.tech

Как я могу воспроизвести звук, когда выполнение скрипта готово?

Время от времени я выполняю некоторые 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

Предварительно установлен 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

Просто выберите звук на жестком диске и введите команду для его воспроизведения сразу после команды, которую вы ожидаете; они будут происходить последовательно:

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

play - очень простой (без пользовательского интерфейса) звуковой проигрыватель из пакета soxустановите sox http://bit.ly/software-small . Вы можете заменить его любым другим звуковым проигрывателем, управляемым из командной строки.

8

Лично я использую 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, я бы также указал вам мигать терминал GNOME . Это патч, который я написал, который заставляет терминал мигать, когда команда выполнена, поэтому вы можете нажать 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ý