J'exécute de temps en temps des scripts python dont l'exécution est assez longue.
Je les exécute comme ceci:
$ time python MyScript.py
Comment puis-je jouer un son dès que l'exécution du script est terminée?
J'utilise Ubuntu 10.10 (bureau Gnome).
J'exécute de temps en temps des scripts python dont l'exécution est assez longue.
Je les exécute comme ceci:
$ time python MyScript.py
Comment puis-je jouer un son dès que l'exécution du script est terminée?
J'utilise Ubuntu 10.10 (bureau Gnome).
Réponses:
Ajoute n'importe quelle commande qui joue un son. cela pourrait être aussi simple que
$ time mycommand; printf '\7'
ou aussi complexe que
$ time mycommand && paplay itworked.ogg || paplay bombed.ogg
(Les commandes supposent que pulseaudio est installé; remplacez votre lecteur audio, ce qui dépend de votre environnement de bureau.)
paplay
est probablement la meilleure commande à utiliser pour jouer un son sur un système Linux "moderne".
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'
fonctionne pour moi (paplay pas; (git shell)) mais c'est juste un très petit bip . Y a-t-il plus de codes qui font d'autres sons? J'ai essayé \6
, \8
mais ce sont des personnages.
\7
(BEL) est généralement le seul caractère qui déclenche éventuellement un son (voir l'article de Wikipédia, Caractère de contrôle ); notez que cela ne donne pas toujours un son non plus.
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'
Boucle infinie avec -w
si vous avez besoin de motivation supplémentaire:
sleep 2; while true; do spd-say -w 'get back to work'; done
Préinstallé sur 14.04 via le package speech-dispatcher
: http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-amd64.manifest pour les personnes aveugles, je suppose?
Ajoutez aussi une popup
Ce combo est un épargnant de vie ( b
représente beep
):
b() ( spd-say 'done'; zenity --info --text "$(date);$(pwd)" & )
et alors:
super-slow-command;b
Si je suis quelque part dans la pièce, je l'entendrai et je saurai que le travail est long.
Sinon, je vais voir le popup quand je reviens à mon ordinateur.
Connexes: https://stackoverflow.com/questions/7035/how-to-show-a-gui-message-box-from-a-bash-script-in-linux
spd-say
outil associé speech-dispatcher
, vous devrez peut-être installer un sous-package tel que speech-dispatcher-utils
(Fedora 24).
Il vous suffit de choisir un son sur votre disque dur et de définir une commande pour le lire juste après la commande que vous attendez. ils vont se passer séquentiellement:
$ time python MyScript.py; mplayer ~/ScriptDone.wav
(Vous pouvez utiliser n'importe quel joueur, naturellement). J'ai un script appelé alertdone
qui joue une tonalité et affiche une alerte libnotify lorsqu'il est exécuté; Je l'utilise pour cette occasion:
$ time python MyScript.py; alertdone "Done timing"
Il est très simple, donc si vous voulez faire votre propre , vous pouvez baser sur ce ( le mien exige notify-more
, mplayer
et ~/tones/alert_1.wav
bien):
#!/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
ou notify-send
pourrait en effet être des alternatives utiles à la lecture d'un son.
time python MyScript.py; play /path/so/sound.ogg
play
est un lecteur audio très basique (sans interface utilisateur) du paquetage sox Install sox http://bit.ly/software-small . Vous pouvez le remplacer par n’importe quel autre lecteur de son piloté par ligne de commande.
play
, aplay
ou paplay
. (Mon système Ubuntu a aplay
et paplay
par défaut.)
time python MyScript.py -n 40; paplay /usr/share/sounds/ubuntu/stereo/desktop-login.ogg
travaillé, merci.
Vous pouvez également y arriver automatiquement.
Je vais vous montrer comment zsh
, puis ajouter des informations sur bash
.
L'essence ressemble à ceci:
preexec()
{
starttime=$SECONDS
}
precmd()
{
if ((SECONDS - starttime >= 5)); then
aplay "sound.wav"
# or printf "\b", or notify-send, or whatever
fi
}
Vous pouvez également le faire que si le programme était Python, par exemple
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
}
En général bash
, le meilleur moyen est de télécharger preexec.bash.txt et de le source (par exemple, . ~/preexec.bash.txt
en haut de votre ~/.bashrc
, alors ce qui précède (ou quelque chose de proche) devrait fonctionner. (Pas sûr du $3
bit pour vérifier si la commande est Python .)
Si vous utilisez un terminal GNOME, je vous indiquerais également un terminal GNOME clignotant . C'est un correctif que j'ai écrit qui fait clignoter le terminal lorsqu'une commande est exécutée. Vous pouvez donc Alt-Tab passer à autre chose, puis vous permettre de savoir quand.
Vous n'avez pas besoin d'ajouter une commande à tout, vous pouvez réellement utiliser un script, cela le fait automatiquement pour vous. Cela s'appelle undistract-me et il est disponible sur Github.
Exemple
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
maintenant commencez nouvelle bash et vous êtes prêt. Son et alerte peuvent être modifiés en modifiant le script.
bash
ouzsh
? Il existe en fait quelques moyens de faire en sorte que cela se produise automatiquement, mais ils sont très impliqués et dépendent du shell que vous utilisez.