Раз у раз я виконую кілька сценаріїв python, на виконання яких потрібно багато часу.
Я виконую їх так:
$ time python MyScript.py
Як я можу відтворити звук, як тільки виконується виконання сценарію?
Я використовую Ubuntu 10.10 (робочий стіл Gnome).
Раз у раз я виконую кілька сценаріїв python, на виконання яких потрібно багато часу.
Я виконую їх так:
$ time python MyScript.py
Як я можу відтворити звук, як тільки виконується виконання сценарію?
Я використовую Ubuntu 10.10 (робочий стіл Gnome).
Відповіді:
Додайте будь-яку команду, яка відтворює звук; це може бути так само просто
$ 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 doesn; (git shell)), але це просто дуже маленький біп . Чи є більше кодів, які видають інші звуки? Я спробував \6, \8але вони є деякими персонажами.
\7(BEL), як правило, є єдиним символом, який, можливо, спрацьовує звуком (див. статтю Вікіпедії Контрольний символ ); зауважте, що це може не завжди видавати звук.
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який відтворює тон і показує попередження про те, що він працює; Я використовую його саме для цього випадку:
$ 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є дуже базовим (без користувальницького інтерфейсу) програвачем звуку з пакету http://x.ly/software-small Install sox Install sox . Ви можете замінити його будь-яким іншим програвачем звуку, керованим командним рядком.
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, я б також вказав на миготливий термінал GNOME . Я написав патч, який змушує термінал моргати, коли виконується команда, тож ви можете Alt-Tab до чогось іншого, і це дає вам знати, коли це зроблено.
Вам не потрібно додавати команду до всього, ви можете фактично використовувати сценарій, який робить це автоматично для вас. Він називається unistract-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абоzsh? Насправді є деякі способи зробити це автоматично, але вони досить задіяні і залежать від того, яку оболонку ви використовуєте.