Stai chiedendo due cose completamente diverse qui. Prima chiedi cosa fare per ottenere un segnale acustico dopo un minuto, quindi chiedi di ricevere un segnale acustico dopo che il comando è terminato. Queste sono due cose che vengono affrontate in modo completamente diverso.
# bof [command] [args...] - Beep on Finish
bof() {
"[email protected]"; local r=$?
printf '\a'
return $r
}
Questa funzione esegue un comando e poi emette un segnale acustico una volta una volta del comando fatto, pur facendo in modo che il codice di uscita del comando è il codice di uscita della funzione.
# bot [command] [args...] - Beep on Timeout
bot() {
{ sleep 60; printf '\a'; } &
"[email protected]"; local r=$?
kill $!
return $r
}
Questa funzione emette un segnale acustico, dopo un certo periodo di tempo a meno che il comando è stato completato prima di quel momento (qui, 60
secondi, un minuto).
# bem [command] [args...] - Beep every Minute
bem() {
{ while sleep 60; do printf '\a'; done; } &
"[email protected]"; local r=$?
kill $!
return $r
}
Questo è un semplice adattamento della funzione precedente che emette un segnale acustico ogni minuto per il tempo che il comando è ancora 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
}
E, infine, una funzione che emette un segnale acustico ogni minuto, ma solo dopo che il comando è terminato. Tiene i beep fino a quando non premi un tasto per fermarlo. Quindi, la funzione ritorna con il codice di uscita del comando.
Penso che copriremo tutte le basi che potevi avere con la tua domanda.
Usa (e combinare) loro in questo modo:
bof rsync foo bar: # Beep when rsync finishes.
bot ssh foo 'ls bar/' # Beep if the 'ssh' process takes too long to run.
spero che lo script fornito sia quello che ti serve – Drakosha