Od czasu do czasu wykonuję niektóre skrypty Pythona, których wykonanie zajmuje dużo czasu.
Wykonuję je w następujący sposób:
$ time python MyScript.py
Jak mogę odtworzyć dźwięk po zakończeniu wykonywania skryptu?
Używam Ubuntu 10.10 (pulpit Gnome).
Od czasu do czasu wykonuję niektóre skrypty Pythona, których wykonanie zajmuje dużo czasu.
Wykonuję je w następujący sposób:
$ time python MyScript.py
Jak mogę odtworzyć dźwięk po zakończeniu wykonywania skryptu?
Używam Ubuntu 10.10 (pulpit Gnome).
Odpowiedzi:
Dołącz dowolne polecenie odtwarzające dźwięk; może to być tak proste jak
$ time mycommand; printf '\7'
lub tak złożone jak
$ time mycommand && paplay itworked.ogg || paplay bombed.ogg
(Polecenia zakładają, że pulseaudio jest zainstalowane; zamień odtwarzacz dźwięku, który będzie zależał od środowiska pulpitu).
paplayjest prawdopodobnie najlepszym poleceniem do odtwarzania dźwięku w „nowoczesnym” systemie 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'działa dla mnie (paplay nie; (git shell)), ale to tylko bardzo mały bip . Czy jest więcej kodów, które wydają inne dźwięki? Próbowałem \6, \8ale to niektóre postacie.
\7(BEL) jest zwykle jedyną postacią, która może wywołać dźwięk (patrz artykuł w Wikipedii Znak kontrolny ); należy pamiętać, że nie zawsze może to również wydawać dźwięki.
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'
Nieskończona pętla, -wjeśli potrzebujesz dodatkowej motywacji:
sleep 2; while true; do spd-say -w 'get back to work'; done
Zainstalowany fabrycznie 14.04 za pośrednictwem pakietu speech-dispatcher: http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-amd64.manifest dla niewidomych?
Dodaj także wyskakujące okienko
Ta kombinacja ratuje życie ( boznacza beep):
b() ( spd-say 'done'; zenity --info --text "$(date);$(pwd)" & )
i wtedy:
super-slow-command;b
Jeśli jestem gdzieś w pokoju, usłyszę to i będę wiedział, że długa robota jest skończona.
W przeciwnym razie wyświetlę wyskakujące okienko po powrocie do komputera.
Powiązane: https://stackoverflow.com/questions/7035/how-to-show-a-gui-message-box-from-a-bash-script-in-linux
spd-saypowiązanie z narzędziem speech-dispatcher, może być konieczne zainstalowanie podobnego pakietu speech-dispatcher-utils(Fedora 24).
Po prostu wybierz dźwięk na dysku twardym i wprowadź polecenie, aby odtworzyć go zaraz po poleceniu, na które czekasz; będą się pojawiać sekwencyjnie:
$ time python MyScript.py; mplayer ~/ScriptDone.wav
(Możesz oczywiście użyć dowolnego odtwarzacza). Mam skrypt o nazwie, alertdonektóry gra dźwięk i wyświetla alert libnotify po uruchomieniu; Używam go właśnie na tę okazję:
$ time python MyScript.py; alertdone "Done timing"
To naprawdę proste, więc jeśli chcesz zrobić własną można oprzeć go na to (kopalnia wymaga notify-more, mplayeri ~/tones/alert_1.wavchociaż):
#!/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-morelub notify-sendmoże rzeczywiście być użyteczną alternatywą dla odtwarzania dźwięku.
time python MyScript.py; play /path/so/sound.ogg
playjest bardzo prostym (bez interfejsu użytkownika) odtwarzaczem dźwięku z pakietu sox Install sox http://bit.ly/software-small . Możesz go zastąpić dowolnym innym odtwarzaczem dźwięku uruchamianym z wiersza poleceń.
play, aplay, lub paplay. (Mój system Ubuntu ma aplayi paplaydomyślnie.)
time python MyScript.py -n 40; paplay /usr/share/sounds/ubuntu/stereo/desktop-login.oggpracował, dzięki.
Możesz to również zrobić automatycznie.
Pokażę ci, jak wejść zsh, a następnie dodaj informacje o bash.
Esencja wygląda następująco:
preexec()
{
starttime=$SECONDS
}
precmd()
{
if ((SECONDS - starttime >= 5)); then
aplay "sound.wav"
# or printf "\b", or notify-send, or whatever
fi
}
Możesz także zrobić to tylko wtedy, gdy programem był Python, np
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
}
W bashnajlepszym sposobem jest pobranie preexec.bash.txt i źródło to (np . ~/preexec.bash.txtna górze ~/.bashrc, a następnie powyżej (lub coś podobnego do niego) powinno działać. (Nie wiem, o $3nieco, aby sprawdzić, czy polecenie jest Python .)
Jeśli używasz GNOME Terminal, chciałbym również wskazać Flashing Terminal GNOME . Jest to łatka, którą napisałem, która powoduje, że terminal miga po wykonaniu polecenia, więc możesz Alt-Tab do czegoś innego, a następnie informuje, kiedy jest zrobione.
Nie musisz dodawać polecenia do wszystkiego, możesz faktycznie użyć skryptu, który zrobi to automatycznie. Nazywa się to mnie rozpraszać i jest dostępne na Github.
przykład
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
teraz rozpocznij nowy bash i jesteś gotowy. Dźwięk i alarm można zmienić, modyfikując skrypt.
bashlubzsh? Istnieje kilka sposobów, aby to zrobić automatycznie, ale są one dość zaangażowane i zależą od używanej powłoki.