Usted está pidiendo dos cosas totalmente diferentes aquí. Primero, pregunte qué hacer para recibir pitidos después de un minuto, luego pida que se emitan pitidos después de que finalice el comando. Estas son dos cosas que se abordan completamente diferente.
# bof [command] [args...] - Beep on Finish
bof() {
"[email protected]"; local r=$?
printf '\a'
return $r
}
Esta función se ejecuta un comando y luego emite un pitido una vez que el comando de hacerlo, mientras se asegura de que el código de salida del comando es el código de salida de la función.
# bot [command] [args...] - Beep on Timeout
bot() {
{ sleep 60; printf '\a'; } &
"[email protected]"; local r=$?
kill $!
return $r
}
Esta función emitirá un pitido después de un cierto tiempo a menos que el comando se ha completado antes de ese momento (en este caso, 60
segundos, un minuto).
# bem [command] [args...] - Beep every Minute
bem() {
{ while sleep 60; do printf '\a'; done; } &
"[email protected]"; local r=$?
kill $!
return $r
}
Ésta es una adaptación sencilla de la función anterior que emite un pitido cada minutos durante el tiempo que su comando está todavía vivo.
# bofem [command] [args...] - Beep on Finish every Minute
bofem() {
"[email protected]"; local r=$?
until read -t 60 -n 1; do printf '\a'; done
return $r
}
Y, por último, una función que emite un pitido cada minutos, pero sólo después de que el comando ha terminado. Sigue emitiendo pitidos hasta que presionas una tecla para detenerlo. Luego, la función regresa con el código de salida de su comando.
Creo que cubrirá todas las bases que podría haber pensado con su pregunta.
uso (y combinar) que de este modo:
bof rsync foo bar: # Beep when rsync finishes.
bot ssh foo 'ls bar/' # Beep if the 'ssh' process takes too long to run.
Espero que el script proporcionado es lo que necesita – Drakosha