Respondendo a segunda parte da pergunta, como escrever mensagens enquanto espera no prompt sudo
:
trap '2>/dev/null' CHLD
(sleep 5; echo; echo "New spam has just arrived!") &
MSGPID=$!
sudo -v
wait $MSGPID
trap - CHLD
sleep 5
no subshell simula a mensagem que chega de forma assíncrona. O primeiro echo
apenas garante que a mensagem não acabe ao lado do prompt Password:
. Ele também funciona ao gravar em stderr
em vez de stdout
.
O primeiro trap
está lá para eliminar as mensagens sobre o status do trabalho em segundo plano. waitpid
e o segundo trap
cancelam os efeitos do primeiro trap
.
Coisas ruins acontecem se o comando no subshell sair antes de ter a chance de retornar um PID significativo (pode acontecer em alguns SOs, esperamos que não seja muito grande atualmente).