终端中的命令错误播放声音

时间:2013-05-08 00:51:33

标签: bash audio terminal

我是大学服务台的学生经理,我们广泛使用rsync来备份用户机器上的数据。但是,我注意到的一个问题是,很多时候,我们会有网络连接丢失(导致任何正在运行的转移到我们的备份服务器失败)。除非有人碰巧看到“破管”错误,否则转移会暂时停止,直到第二天有人碰巧看到。

我的问题是:如果上一个命令返回错误,有没有办法可以播放声音? Ubuntu或OS X上的解决方案都将受到赞赏。我知道在成功运行后使用&&执行命令,而;只是运行另一个命令,但我不确定在失败时发出声音/不知道是否{{1将在OS X / Ubuntu上一致地工作。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

Ubuntu和OS X都具有完整功能bash,所以这里与陷阱管理没有区别。

我不详细了解Ubuntu,但在OS X上你可以使用下一个命令:

  • afplay some.mp3 - 可播放任何可以播放QuickTime的音频,mp3,wav,aiff等......
  • say -v Alex "message" - 将发送到text2speech - 使用计算机生成的语音阅读消息

bot命令可以用于:

rsync ... || say -v Alex "Hey, Hudston we have an rsync problem at $(hostname)", or
rsync ... || afplay "/Users/me/Music/iTunes/iTunes Media/Music/Michael Jackson/Bad/01 Bad.m4a"

您需要使用||运行命令,但结果不成功。最佳形式是功能,如:

#!/bin/bash

err() {
    say -v Alex "$@"
    afplay "/path/to/music/file.mp3" &
    echo "$@" >&2
    return 1
}

rsync .. || err "rsync failed" || exit 1

答案 1 :(得分:1)

将其放入~/.bash_profile

PROMPT_COMMAND='(( $? )) && printf "\a"'