如果bash脚本中不存在原子创建文件
发布时间:2020-12-15 19:02:08 所属栏目:安全 来源:网络整理
导读:在系统调用open()中,如果我用O_CREAT打开| O_EXCL,系统调用确保仅在文件不存在时才创建该文件.系统调用保证了原子性.是否有类似的方法从bash脚本以原子方式创建文件? 更新: 我发现了两种不同的原子方式 使用set -o noclobber.然后你可以使用运算符原子地.
在系统调用open()中,如果我用O_CREAT打开| O_EXCL,系统调用确保仅在文件不存在时才创建该文件.系统调用保证了原子性.是否有类似的方法从bash脚本以原子方式创建文件?
更新: >使用set -o noclobber.然后你可以使用>运算符原子地.
100%纯粹的bash解决方案:
set -o noclobber { > file ; } &> /dev/null 如果没有名为file的现有文件,则此命令将创建名为file的文件.如果有一个名为file的文件,则不执行任何操作(但返回非零返回码). 优点与触摸命令: >如果文件已存在,则不更新时间戳 缺点: >需要设置noclobber选项(但是如果您对重定向很小心,或者之后取消设置,那么它在脚本中是可以的). 我想这个解决方案实际上是使用O_CREAT |打开系统调用的bash对应物O_EXCL. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 为什么是原始类型,例如在Scala中的Int被清除为Object?
- openLDAP客户端部署(centos6.5)
- twitter-bootstrap – bootstrap 3.2.0 glyphicons不显示在
- bootstrap 多层modal关闭后的滚动问题
- 动态创建angular组件实现popup弹窗
- par更新--増加通用块和bootstrap的tab页及alert支持
- shell-redirect命令输出到ksh的变量和标准输出
- unix – 如何以相反的时间顺序列出目录中的所有文件和子目录
- angularjs – Angular ui路由器解析查询参数到布尔值
- string – $d在printf中做什么?