Ich präsentiere in dieser Antwort zwei Dinge:
- Die Option
afplay
, Audiodateien zur Benachrichtigung abzuspielen .
- Meine Tools zum Melden des Beendigungsstatus zusammen mit der Benachrichtigung.
Ich habe dieses Skript ~/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
Dies spielt einen anderen Sound ab, abhängig davon, ob das Argument 0 ist. Dann habe ich einen Alias:
alias donebeep='(savestatus=$?; ~/bin/donebeep $savestatus "$@"; exit $savestatus)'
(Dass sie den gleichen Namen haben, ist irrelevant und wahrscheinlich eine schlechte Idee.)
Um es zu verwenden in Ihrem Beispiel svn update . && ant clean build start; donebeep
. Beachten Sie, dass ich ;
eher als verwende &&
, damit es mich sowohl über Fehler als auch über Erfolg benachrichtigen kann.
Bevor ich davon erfuhrafplay
, say
sprach ich stattdessen Nachrichten. Die Rolle von donebeep
wurde von diesem Skript gespielt:
#!/bin/bash
say -v Bruce "Done $(basename "$(pwd)"), $@." &
Dieses Skript spricht den Exit-Code direkt, anstatt zwei verschiedene Nachrichten zu haben. Außerdem wird der Name des aktuellen Verzeichnisses angegeben (um zu verdeutlichen, welche Aufgabe erledigt ist) und es kann zusätzlicher Text angegeben werden, indem Parameter an den Alias übergeben werden (aus diesem Grund enthält der Alias "$@"
). Beachten Sie das Ende, &
damit Sie nicht warten müssen, bis die Rede beendet ist, bevor Sie eine Eingabeaufforderung erhalten.
Die Manpage fürafplay
ist unvollständig; afplay -h
listet alle Optionen auf:
Usage:
afplay [option...] audio_file
Options: (may appear before or after arguments)
{-v | --volume} VOLUME
set the volume for playback of the file
{-h | --help}
print help
{ --leaks}
run leaks analysis {-t | --time} TIME
play for TIME seconds
{-r | --rate} RATE
play at playback rate
{-q | --rQuality} QUALITY
set the quality used for rate-scaled playback (default is 0 - low quality, 1 - high quality)
{-d | --debug}
debug print output
grownlnotify
.