Uma maneira mais concisa de escrever o que Hennes sugeriu é
(sleep 5; echo foo) &
Como alternativa, se você precisar de mais de alguns segundos, poderá usar at. Existem três maneiras de dar um comando para at:
Pipe it:
$ echo "ls > a.txt" | at now + 1 min
warning: commands will be executed using /bin/sh
job 3 at Thu Apr 4 20:16:00 2013
Salve o comando que você deseja executar em um arquivo de texto e passe esse arquivo para at:
$ echo "ls > a.txt" > cmd.txt
$ at now + 1 min < cmd.txt
warning: commands will be executed using /bin/sh
job 3 at Thu Apr 4 20:16:00 2013
Você também pode passar atcomandos do STDIN:
$ at now + 1 min
warning: commands will be executed using /bin/sh
at> ls
Em seguida, pressione CtrlDpara sair do atshell. O lscomando será executado em um minuto.
Você pode dar tempos muito precisos no formato de [[CC]YY]MMDDhhmm[.ss], como em
$ at -t 201412182134.12 < script.sh
Isso executará o script script.shàs 21:34 e 12 segundos no dia 18 de dezembro de 2014. Portanto, em teoria, você pode usar atpara executar algo cinco segundos no futuro. No entanto, é como usar um tanque para golpear uma mosca, e a sugestão de Hennes é melhor.
;?