Przedstawiam w tej odpowiedzi dwie rzeczy:
- Opcja użycia
afplay
, który odtwarza pliki dźwiękowe , do powiadomienia.
- moje narzędzia do raportowania statusu wyjścia wraz z powiadomieniem.
Mam ten skrypt ~/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
Odtwarza to inny dźwięk w zależności od tego, czy argumentem jest 0. Następnie mam alias:
alias donebeep='(savestatus=$?; ~/bin/donebeep $savestatus "$@"; exit $savestatus)'
(To, że mają taką samą nazwę, jest nieistotne i prawdopodobnie zły pomysł).
Aby użyć go w np svn update . && ant clean build start; donebeep
. Zauważ, że używam ;
raczej niż &&
, aby mógł powiadomić mnie zarówno o niepowodzeniu, jak io sukcesie.
Zanim się dowiedziałemafplay
, say
zamiast tego wypowiadałem wiadomości. Rolę donebeep
grał ten skrypt:
#!/bin/bash
say -v Bruce "Done $(basename "$(pwd)"), $@." &
Ten skrypt odczytuje kod wyjścia bezpośrednio, zamiast mieć dwie różne wiadomości. Wspomina również nazwę bieżącego katalogu (aby pomóc wyjaśnić, które zadanie jest wykonane), i można podać dodatkowy tekst do powiedzenia, przekazując parametry do aliasu (dlatego alias ma "$@"
w nim). Zwróć uwagę na końcowe &
, aby nie trzeba było czekać na zakończenie mowy przed wyświetleniem monitu.
Strona podręcznika dlaafplay
jest niekompletna; afplay -h
wyświetla wszystkie opcje:
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
.