Я представляю в этом ответе две вещи:
- Возможность использования
afplay, которая воспроизводит звуковые файлы , для уведомления.
- мои инструменты для отчета о состоянии выхода вместе с уведомлением.
У меня есть этот скрипт ~/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
Это играет другой звук в зависимости от того, равен ли аргумент 0. Тогда у меня есть псевдоним:
alias donebeep='(savestatus=$?; ~/bin/donebeep $savestatus "$@"; exit $savestatus)'
(То, что у них одинаковое имя, не имеет значения и, вероятно, плохая идея.)
Чтобы использовать это в вашем примере svn update . && ant clean build start; donebeep. Обратите внимание, что я использую, ;а не &&, чтобы он мог уведомить меня о неудаче, а также об успехе.
Прежде чем я узнал оafplay , я sayвместо этого говорил сообщения. Роль donebeepсыграл этот сценарий:
#!/bin/bash
say -v Bruce "Done $(basename "$(pwd)"), $@." &
Этот сценарий говорит код выхода напрямую, вместо двух разных сообщений. В нем также упоминается имя текущего каталога (чтобы уточнить, какая задача выполнена), и может быть дан дополнительный текст для передачи, передавая параметры псевдониму (поэтому псевдоним "$@"в нем есть). Обратите внимание на трейлинг, &чтобы вам не нужно было ждать окончания речи, прежде чем получать подсказку.
Страница людей дляafplay неполно; afplay -hперечисляет все варианты:
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.