我想编写一个 bash 脚本,备份文件abc.txt
并在创建 6 小时后删除该备份。
有没有什么有效的方法可以做到这一点?
答案1
我不确定用例是什么,但你可以简单地这样做:
cp abc.txt abc.txt.bak && sleep $((60 * 60 * 6)) && rm abc.txt.bak
&&
是短路求值运算符,只有当前面的命令以退出状态 0 退出时,后面的命令才会运行cp abc.txt abc.txt.bak
abc.txt
使用扩展名进行备份.bak
,即备份被命名abc.txt.bak
(修改以满足您的需要)sleep $((60 * 60 * 6))
休眠 6 小时,即 21600 秒rm abc.txt.bak
删除休眠时间后的备份
如果需要,可以利用括号扩展来简化:
cp abc.txt{,.bak} && sleep $((60 * 60 * 6)) && rm abc.txt.bak
或者因为 (GNU)sleep
支持h
表示小时的后缀(感谢@muru 的提醒):
cp abc.txt{,.bak} && sleep 6h && rm abc.txt.bak