bash - 终端中命令错误时播放声音

标签 bash audio terminal

我是大学服务台的学生经理,我们广泛使用 rsync 来备份用户计算机上的数据。然而,我注意到的一个问题是,很多时候,我们会出现网络连接中断(这会导致任何正在运行的传输到我们的备份服务器失败)。除非有人碰巧看到“管道损坏”错误,否则传输就会陷入停滞,直到第二天有人碰巧查看。

我的问题是:如果上一个命令返回错误,有没有办法让我播放声音? Ubuntu 或 OS X 上的解决方案将不胜感激。我知道如何使用 &&用于在成功运行后执行命令和 ;只是运行另一个命令,但我不确定是否会在失败时发出声音/不知道是否 trap将在 OS X/Ubuntu 上一致工作。

感谢您的帮助!

最佳答案

Ubuntu 和 OS X 都有全功能的 bash,因此陷阱管理没有区别。

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

  • afplay some.mp3 - 可以播放任何可以播放 QuickTime 的音频,mp3、wav、aiff 等...
  • say -v Alex“message” - will to text2speech - 使用计算机生成的语音阅读消息

机器人命令可用于:

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

关于bash - 终端中命令错误时播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16430940/

相关文章:

linux - 使用 shell 将 .txt 文件转换为 .asc

linux - 如何使用 Sed 仅注释掉未注释的行并保持空白/空行 100% 完好无损?

ios - 代号一的音频播放在 iOS 上崩溃

java - 如何在 ubuntu 中运行一个有很多 jars 依赖的 java 文件

bash - 如何在没有进一步用户交互的情况下使用 sudo 在单独的终端中运行命令

bash - 获取其他变量扩展的 quoted-dollar-at ( "$@") 行为?

python - 为什么我的远程主机在我使用 fabric reboot() 时返回错误代码 -1?

audio - 在Rust中播放网址中的音频

ios - IOS的AudioToolBox出现EXC_BAD_ACCESS如何解决

LINUX:如何在不同的目录中搜索字符串?