![如果命令持续时间超过 X 分钟,则发出声音](https://linux22.com/image/998061/%E5%A6%82%E6%9E%9C%E5%91%BD%E4%BB%A4%E6%8C%81%E7%BB%AD%E6%97%B6%E9%97%B4%E8%B6%85%E8%BF%87%20X%20%E5%88%86%E9%92%9F%EF%BC%8C%E5%88%99%E5%8F%91%E5%87%BA%E5%A3%B0%E9%9F%B3.png)
我知道已经有人问过如何命令后发出声音。
尽管人们似乎打算在长时间运行的命令之后使用它,但最初实际的技巧和命令的持续时间之间没有联系。
我的问题是,我是否可以(使用 bash 或 zsh)让我的终端执行一个脚本,该脚本将包装每个命令,查看start time
并比较它何时完成end time
并当且仅当命令持续时间超过 X 分钟时,声音播放了吗?
因为在实践中,那些长时间运行的命令通常是新的,我不可能每次都预料到这一点!
奖金:对于交互式命令(例如),不应该播放声音ssh xxx
,如果太难,标准可能是焦点是否给予窗口。
多谢!
答案1
谢谢你的想法,将来可能对我也有用,而且这也是学习 bash 的一个很好的借口,对于任何常见错误深表歉意,我只是在不到 15 分钟的时间内从一堆 Google 搜索中生成了这个脚本。
用法:script.sh "command" 29
(29 是秒数)我没有实现发出声音的实际命令。你必须谷歌搜索最适合你需求的选项并将其替换
#!/bin/bash
eval $1 &
PID=$!
let "timer=0"
let "increase=1"
let "mtime=$2"
while true; do
if [ "$(ps -p $PID -o pid=)" = "" ]; then exit; fi
let "timer=timer+increase"
if [[ timer -gt mtime ]]; then
let "timer=0"
let "increase=0"
replaceme-with-sound-command
fi
sleep 1
done
不,我不知道有什么方法可以将每个命令扭曲成其他命令,最好的情况是,您可以删除扩展名并将上述脚本放在 $PATH 中的某个位置,并使用像 'tm' 这样的短名称来方便访问