Je présente dans cette réponse deux choses:
- L'option d'utiliser
afplay
, qui lit des fichiers sonores, pour la notification.
- Mes outils pour rapporter l'état de sortie ainsi que la notification.
J'ai ce script, ~/bin/donebeep
:
#!/bin/bash
if [ "$@" = 0 ]; then
afplay -v 2 /System/Library/Sounds/Blow.aiff &
else
afplay -v 2 /System/Library/Sounds/Sosumi.aiff &
fi
Cela joue un son différent en fonction de l'argument donné. Ensuite, j'ai un alias:
alias donebeep='(savestatus=$?; ~/bin/donebeep $savestatus "$@"; exit $savestatus)'
(Le fait qu'ils aient le même nom est sans importance et probablement une mauvaise idée.)
Pour l'utiliser dans votre exemple, svn update . && ant clean build start; donebeep
. Notez que j'utilise ;
plutôt que &&
, pour qu'il puisse me notifier en cas d'échec ainsi que de succès.
Avant d'avoir appris à utiliser afplay
, j'utilisais say
pour parler des messages à la place. Le rôle de donebeep
était joué par ce script:
#!/bin/bash
say -v Bruce "Terminé $(basename "$(pwd)"), $@." &
Ce script prononce directement le code de sortie au lieu d'avoir deux messages différents. Il mentionne également le nom du répertoire actuel (pour clarifier quelle tâche est terminée), et peut recevoir du texte supplémentaire à dire en passant des paramètres à l'alias (c'est pourquoi l'alias a "$@"
dedans). Remarquez le &
à la fin pour ne pas avoir à attendre la fin du discours avant d'obtenir un invite de commande.
La page de manuel de afplay
est incomplète; afplay -h
liste toutes les options:
Usage:
afplay [option...] audio_file
Options: (peuvent apparaître avant ou après les arguments)
{-v | --volume} VOLUME
définir le volume pour la lecture du fichier
{-h | --help}
afficher l'aide
{ --leaks}
lancer l'analyse des fuites {-t | --time} TIME
jouer pendant TIME secondes
{-r | --rate} RATE
jouer à la vitesse de lecture
{-q | --rQuality} QUALITY
définir la qualité utilisée pour la lecture à vitesse ajustée (par défaut 0 - basse qualité, 1 - haute qualité)
{-d | --debug}
afficher la sortie de débogage