Não sei qual é o caso de uso, mas você pode simplesmente fazer isso:
cp abc.txt abc.txt.bak && sleep $((60 * 60 * 6)) && rm abc.txt.bak
-
&&
é o operador de avaliação de curto-circuito, o comando após ele só será executado se o precedente sair com o status de saída 0 -
cp abc.txt abc.txt.bak
faz um backup deabc.txt
com uma extensão.bak
, ou seja, o backup é nomeadoabc.txt.bak
(modifique isso para atender à sua necessidade) -
sleep $((60 * 60 * 6))
dorme por 6 horas, ou seja, 21600 segundos -
rm abc.txt.bak
remove o backup após o tempo de suspensão
Você pode aproveitar a expansão de chaves por brevidade, se quiser:
cp abc.txt{,.bak} && sleep $((60 * 60 * 6)) && rm abc.txt.bak
Ou como (GNU) sleep
suporta h
sufixo para indicar horas (obrigado @muru pelo lembrete):
cp abc.txt{,.bak} && sleep 6h && rm abc.txt.bak